diff --git a/interfaces/kits/accesstoken/napi/include/napi_atmanager.h b/interfaces/kits/accesstoken/napi/include/napi_atmanager.h index c885972f45a9e974b1e1fcff76c96016d0c7dc5f..1b68d9ee79212c357a03e06354ccbe5d3431ce6a 100644 --- a/interfaces/kits/accesstoken/napi/include/napi_atmanager.h +++ b/interfaces/kits/accesstoken/napi/include/napi_atmanager.h @@ -57,6 +57,7 @@ private: static napi_value JsConstructor(napi_env env, napi_callback_info cbinfo); static napi_value CreateAtManager(napi_env env, napi_callback_info cbInfo); static napi_value VerifyAccessToken(napi_env env, napi_callback_info info); + static napi_value VerifyAccessTokenSync(napi_env env, napi_callback_info info); static napi_value GrantUserGrantedPermission(napi_env env, napi_callback_info info); static napi_value RevokeUserGrantedPermission(napi_env env, napi_callback_info info); static napi_value GetPermissionFlags(napi_env env, napi_callback_info info); diff --git a/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp b/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp index 3ce6ba036db631ff37bdfe2505081dd68e5cd593..a74f44ccc758463b49c647b33e686631b6922ae8 100644 --- a/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp +++ b/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp @@ -51,6 +51,7 @@ napi_value NapiAtManager::Init(napi_env env, napi_value exports) napi_property_descriptor properties[] = { DECLARE_NAPI_FUNCTION("verifyAccessToken", VerifyAccessToken), + DECLARE_NAPI_FUNCTION("verifyAccessTokenSync", VerifyAccessTokenSync), DECLARE_NAPI_FUNCTION("grantUserGrantedPermission", GrantUserGrantedPermission), DECLARE_NAPI_FUNCTION("revokeUserGrantedPermission", RevokeUserGrantedPermission), DECLARE_NAPI_FUNCTION("getPermissionFlags", GetPermissionFlags) @@ -207,6 +208,34 @@ napi_value NapiAtManager::VerifyAccessToken(napi_env env, napi_callback_info inf return result; } +napi_value NapiAtManager::VerifyAccessTokenSync(napi_env env, napi_callback_info info) +{ + ACCESSTOKEN_LOG_DEBUG(LABEL, "VerifyAccessToken begin."); + + auto *asyncContext = new AtManagerAsyncContext(); // for async work deliver data + if (asyncContext == nullptr) { + ACCESSTOKEN_LOG_ERROR(LABEL, "new struct fail."); + return nullptr; + } + + ParseInputVerifyPermissionOrGetFlag(env, info, *asyncContext); + if (asyncContext->result == AT_PERM_OPERA_FAIL) { + delete asyncContext; + return nullptr; + } + + // use innerkit class method to verify permission + asyncContext->result = AccessTokenKit::VerifyAccessToken(asyncContext->tokenId, + asyncContext->permissionName); + + napi_value result = nullptr; + napi_create_int32(env, asyncContext->result, &result); // verify result + + ACCESSTOKEN_LOG_DEBUG(LABEL, "VerifyAccessToken end."); + + return result; +} + void NapiAtManager::ParseInputGrantOrRevokePermission(const napi_env env, const napi_callback_info info, AtManagerAsyncContext& asyncContext) {