From 6f5daae57e7bc1b3924fed510ff0fd0e47d14d0d Mon Sep 17 00:00:00 2001 From: adelelimi Date: Thu, 11 Sep 2025 10:41:00 +0800 Subject: [PATCH] =?UTF-8?q?on=E3=80=81off=E9=9D=99=E6=80=81=E5=8C=96?= =?UTF-8?q?=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: adelelimi --- .../idl/ohos.userIAM.userAuth.userAuth.taihe | 10 ++- .../ani/user_auth/inc/user_auth_ani_helper.h | 1 + .../user_auth/inc/user_auth_callback_v10.h | 6 ++ .../user_auth/inc/user_auth_instance_v10.h | 6 +- .../user_auth/inc/user_auth_widget_mgr_v10.h | 4 +- .../ohos.userIAM.userAuth.userAuth.impl.cpp | 48 +++++++++--- .../user_auth/src/user_auth_ani_helper.cpp | 31 ++++++++ .../user_auth/src/user_auth_callback_v10.cpp | 63 +++++++++++++++- .../user_auth/src/user_auth_instance_v10.cpp | 74 +++++++++++-------- .../src/user_auth_widget_mgr_v10.cpp | 39 ++++------ 10 files changed, 208 insertions(+), 74 deletions(-) diff --git a/frameworks/ets/ani/user_auth/idl/ohos.userIAM.userAuth.userAuth.taihe b/frameworks/ets/ani/user_auth/idl/ohos.userIAM.userAuth.userAuth.taihe index ef8ff989b..1215437d3 100644 --- a/frameworks/ets/ani/user_auth/idl/ohos.userIAM.userAuth.userAuth.taihe +++ b/frameworks/ets/ani/user_auth/idl/ohos.userIAM.userAuth.userAuth.taihe @@ -126,15 +126,17 @@ struct IAuthWidgetCallback { } interface UserAuthInstance { - on(type: String, callback: IAuthCallback): void; - off(type: String, callback: Optional): void; + onResult(callback: IAuthCallback): void; + offResult(callback: Optional): void; start(): void; cancel(): void; + onAuthTip(callback: (authTipInfo: AuthTipInfo) => void): void; + offAuthTip(callback: Optional<(authTipInfo: AuthTipInfo) => void>): void; } interface UserAuthWidgetMgr { - on(type: String, callback: IAuthWidgetCallback): void; - off(type: String, callback: Optional): void; + onCommand(callback: IAuthWidgetCallback): void; + offCommand(callback: Optional): void; } function GetAvailableStatus(authType: UserAuthType, authTrustLevel: AuthTrustLevel): void; diff --git a/frameworks/ets/ani/user_auth/inc/user_auth_ani_helper.h b/frameworks/ets/ani/user_auth/inc/user_auth_ani_helper.h index e8902012d..debebef95 100644 --- a/frameworks/ets/ani/user_auth/inc/user_auth_ani_helper.h +++ b/frameworks/ets/ani/user_auth/inc/user_auth_ani_helper.h @@ -34,6 +34,7 @@ public: static UserAuthResultCode ThrowBusinessError(UserAuthResultCode error); static bool VerifyNoticeParam(const std::string &eventData); static bool ConvertUserAuthType(int32_t userAuthType, userAuth::UserAuthType &userAuthTypeOut); + static bool ConvertUserAuthTipCode(int32_t userAuthTipCode, userAuth::UserAuthTipCode &userAuthTipCodeOut); private: UserAuthAniHelper() = default; diff --git a/frameworks/ets/ani/user_auth/inc/user_auth_callback_v10.h b/frameworks/ets/ani/user_auth/inc/user_auth_callback_v10.h index 40a61e234..77faba4ee 100644 --- a/frameworks/ets/ani/user_auth/inc/user_auth_callback_v10.h +++ b/frameworks/ets/ani/user_auth/inc/user_auth_callback_v10.h @@ -44,12 +44,18 @@ public: void SetResultCallback(const userAuth::IAuthCallback& resultCallback); void ClearResultCallback(); bool HasResultCallback(); + void SetTipCallback(taihe::optional<::taihe::callback> tipCallback); + void ClearTipCallback(); + bool HasTipCallback(); private: bool DoResultCallback( int32_t result, const std::vector& token, int32_t authType, EnrolledState enrolledState); + bool DoTipInfoCallBack(int32_t tipType, uint32_t tipCode); + std::shared_ptr>> GetTipCallback(); std::mutex mutex_; std::shared_ptr resultCallback_ = nullptr; + std::shared_ptr>> tipCallback_ = nullptr; }; } // namespace UserAuth } // namespace UserIam diff --git a/frameworks/ets/ani/user_auth/inc/user_auth_instance_v10.h b/frameworks/ets/ani/user_auth/inc/user_auth_instance_v10.h index 4301b530a..4450ed5bf 100644 --- a/frameworks/ets/ani/user_auth/inc/user_auth_instance_v10.h +++ b/frameworks/ets/ani/user_auth/inc/user_auth_instance_v10.h @@ -41,10 +41,12 @@ public: ~UserAuthInstanceV10() = default; UserAuthResultCode Init(userAuth::AuthParam const &authParam, userAuth::WidgetParam const &widgetParam); - UserAuthResultCode On(std::string type, userAuth::IAuthCallback const &callback); - UserAuthResultCode Off(std::string type, taihe::optional_view callback); + UserAuthResultCode OnResult(userAuth::IAuthCallback const &callback); + UserAuthResultCode OffResult(taihe::optional_view callback); UserAuthResultCode Start(); UserAuthResultCode Cancel(); + UserAuthResultCode onAuthTip(taihe::callback_view callback); + UserAuthResultCode offAuthTip(taihe::optional_view> callback); private: UserAuthResultCode InitAuthParam(userAuth::AuthParam const &authParam); diff --git a/frameworks/ets/ani/user_auth/inc/user_auth_widget_mgr_v10.h b/frameworks/ets/ani/user_auth/inc/user_auth_widget_mgr_v10.h index 6668b02e7..940c12f27 100644 --- a/frameworks/ets/ani/user_auth/inc/user_auth_widget_mgr_v10.h +++ b/frameworks/ets/ani/user_auth/inc/user_auth_widget_mgr_v10.h @@ -38,8 +38,8 @@ public: ~UserAuthWidgetMgr() = default; UserAuthResultCode Init(int32_t version); - UserAuthResultCode On(std::string type, userAuth::IAuthWidgetCallback const &callback); - UserAuthResultCode Off(std::string type, taihe::optional_view callback); + UserAuthResultCode OnCommand(userAuth::IAuthWidgetCallback const &callback); + UserAuthResultCode OffCommand(taihe::optional_view callback); private: int32_t version_ = 1; diff --git a/frameworks/ets/ani/user_auth/src/ohos.userIAM.userAuth.userAuth.impl.cpp b/frameworks/ets/ani/user_auth/src/ohos.userIAM.userAuth.userAuth.impl.cpp index bddf389c1..fb869ef82 100644 --- a/frameworks/ets/ani/user_auth/src/ohos.userIAM.userAuth.userAuth.impl.cpp +++ b/frameworks/ets/ani/user_auth/src/ohos.userIAM.userAuth.userAuth.impl.cpp @@ -61,31 +61,31 @@ public: } } - void on(string_view type, IAuthCallback const &callback) + void onResult(IAuthCallback const &callback) { if (userAuthInstanceV10_ == nullptr) { IAM_LOGE("userAuthInstanceV10_ is null"); UserAuth::UserAuthAniHelper::ThrowBusinessError(UserAuth::UserAuthResultCode::GENERAL_ERROR); return; } - UserAuth::UserAuthResultCode onResult = userAuthInstanceV10_->On(type.c_str(), callback); + UserAuth::UserAuthResultCode onResult = userAuthInstanceV10_->OnResult(callback); if (onResult != UserAuth::UserAuthResultCode::SUCCESS) { - IAM_LOGE("userAuthInstanceV10_ on fail"); + IAM_LOGE("userAuthInstanceV10_ onResult fail"); UserAuth::UserAuthAniHelper::ThrowBusinessError(onResult); return; } } - void off(string_view type, optional_view callback) + void offResult(optional_view callback) { if (userAuthInstanceV10_ == nullptr) { IAM_LOGE("userAuthInstanceV10_ is null"); UserAuth::UserAuthAniHelper::ThrowBusinessError(UserAuth::UserAuthResultCode::GENERAL_ERROR); return; } - UserAuth::UserAuthResultCode offResult = userAuthInstanceV10_->Off(type.c_str(), callback); + UserAuth::UserAuthResultCode offResult = userAuthInstanceV10_->OffResult(callback); if (offResult != UserAuth::UserAuthResultCode::SUCCESS) { - IAM_LOGE("userAuthInstanceV10_ off fail"); + IAM_LOGE("userAuthInstanceV10_ offResult fail"); UserAuth::UserAuthAniHelper::ThrowBusinessError(offResult); return; } @@ -121,6 +121,34 @@ public: } } + void onAuthTip(callback_view callback) { + if (userAuthInstanceV10_ == nullptr) { + IAM_LOGE("userAuthInstanceV10_ is null"); + UserAuth::UserAuthAniHelper::ThrowBusinessError(UserAuth::UserAuthResultCode::GENERAL_ERROR); + return; + } + UserAuth::UserAuthResultCode onResult = userAuthInstanceV10_->onAuthTip(callback); + if (onResult != UserAuth::UserAuthResultCode::SUCCESS) { + IAM_LOGE("userAuthInstanceV10_ onAuthTip fail"); + UserAuth::UserAuthAniHelper::ThrowBusinessError(onResult); + return; + } + } + + void offAuthTip(optional_view> callback) { + if (userAuthInstanceV10_ == nullptr) { + IAM_LOGE("userAuthInstanceV10_ is null"); + UserAuth::UserAuthAniHelper::ThrowBusinessError(UserAuth::UserAuthResultCode::GENERAL_ERROR); + return; + } + UserAuth::UserAuthResultCode offResult = userAuthInstanceV10_->offAuthTip(callback); + if (offResult != UserAuth::UserAuthResultCode::SUCCESS) { + IAM_LOGE("userAuthInstanceV10_ offAuthTip fail"); + UserAuth::UserAuthAniHelper::ThrowBusinessError(offResult); + return; + } + } + private: std::shared_ptr userAuthInstanceV10_ = nullptr; }; @@ -148,14 +176,14 @@ public: } } - void on(string_view type, IAuthWidgetCallback const &callback) + void onCommand(IAuthWidgetCallback const &callback) { if (userAuthWidgetMgr_ == nullptr) { IAM_LOGE("userAuthWidgetMgr_ is null after MakeShared"); UserAuth::UserAuthAniHelper::ThrowBusinessError(UserAuth::UserAuthResultCode::GENERAL_ERROR); return; } - UserAuth::UserAuthResultCode onResult = userAuthWidgetMgr_->On(type.c_str(), callback); + UserAuth::UserAuthResultCode onResult = userAuthWidgetMgr_->OnCommand(callback); if (onResult != UserAuth::UserAuthResultCode::SUCCESS) { IAM_LOGE("userAuthWidgetMgr_ on fail"); UserAuth::UserAuthAniHelper::ThrowBusinessError(onResult); @@ -163,14 +191,14 @@ public: } } - void off(string_view type, optional_view callback) + void offCommand(optional_view callback) { if (userAuthWidgetMgr_ == nullptr) { IAM_LOGE("userAuthWidgetMgr_ is null after MakeShared"); UserAuth::UserAuthAniHelper::ThrowBusinessError(UserAuth::UserAuthResultCode::GENERAL_ERROR); return; } - UserAuth::UserAuthResultCode offResult = userAuthWidgetMgr_->Off(type.c_str(), callback); + UserAuth::UserAuthResultCode offResult = userAuthWidgetMgr_->OffCommand(callback); if (offResult != UserAuth::UserAuthResultCode::SUCCESS) { IAM_LOGE("userAuthWidgetMgr_ off fail"); UserAuth::UserAuthAniHelper::ThrowBusinessError(offResult); diff --git a/frameworks/ets/ani/user_auth/src/user_auth_ani_helper.cpp b/frameworks/ets/ani/user_auth/src/user_auth_ani_helper.cpp index d71d585f8..804afab59 100644 --- a/frameworks/ets/ani/user_auth/src/user_auth_ani_helper.cpp +++ b/frameworks/ets/ani/user_auth/src/user_auth_ani_helper.cpp @@ -22,6 +22,7 @@ #include "taihe/runtime.hpp" #include "iam_logger.h" +#include "auth_common.h" #define LOG_TAG "USER_AUTH_ANI" @@ -56,6 +57,36 @@ bool UserAuthAniHelper::ConvertUserAuthType(int32_t userAuthType, userAuth::User } } +bool UserAuthAniHelper::ConvertUserAuthTipCode(int32_t userAuthTipCode, userAuth::UserAuthTipCode &userAuthTipCodeOut) +{ + switch (userAuthTipCode) { + case UserAuthTipCode::TIP_CODE_FAIL: + userAuthTipCodeOut = userAuth::UserAuthTipCode::key_t::COMPARE_FAILURE; + return true; + case UserAuthTipCode::TIP_CODE_TIMEOUT: + userAuthTipCodeOut = userAuth::UserAuthTipCode::key_t::TIMEOUT; + return true; + case UserAuthTipCode::TIP_CODE_TEMPORARILY_LOCKED: + userAuthTipCodeOut = userAuth::UserAuthTipCode::key_t::TEMPORARILY_LOCKED; + return true; + case UserAuthTipCode::TIP_CODE_PERMANENTLY_LOCKED: + userAuthTipCodeOut = userAuth::UserAuthTipCode::key_t::PERMANENTLY_LOCKED; + return true; + case UserAuthTipCode::TIP_CODE_WIDGET_LOADED: + userAuthTipCodeOut = userAuth::UserAuthTipCode::key_t::WIDGET_LOADED; + return true; + case UserAuthTipCode::TIP_CODE_WIDGET_RELEASED: + userAuthTipCodeOut = userAuth::UserAuthTipCode::key_t::WIDGET_RELEASED; + return true; + case UserAuthTipCode::TIP_CODE_COMPARE_FAIL_WITH_FROZEN: + userAuthTipCodeOut = userAuth::UserAuthTipCode::key_t::COMPARE_FAILURE_WITH_FROZEN; + return true; + default: + IAM_LOGE("invalid userAuthTipCode:%{public}d", userAuthTipCode); + return false; + } +} + UserAuthResultCode UserAuthAniHelper::ThrowBusinessError(UserAuthResultCode error) { std::string msgStr; diff --git a/frameworks/ets/ani/user_auth/src/user_auth_callback_v10.cpp b/frameworks/ets/ani/user_auth/src/user_auth_callback_v10.cpp index d71d77a2e..f2f0ca8d3 100644 --- a/frameworks/ets/ani/user_auth/src/user_auth_callback_v10.cpp +++ b/frameworks/ets/ani/user_auth/src/user_auth_callback_v10.cpp @@ -50,6 +50,33 @@ bool UserAuthCallbackV10::HasResultCallback() return resultCallback_ != nullptr; } +void UserAuthCallbackV10::SetTipCallback( + taihe::optional<::taihe::callback> tipCallback) +{ + std::lock_guard guard(mutex_); + tipCallback_ = + Common::MakeShared>>(tipCallback); +} + +void UserAuthCallbackV10::ClearTipCallback() +{ + std::lock_guard guard(mutex_); + tipCallback_ = nullptr; +} + +std::shared_ptr>> + UserAuthCallbackV10::GetTipCallback() +{ + std::lock_guard guard(mutex_); + return tipCallback_; +} + +bool UserAuthCallbackV10::HasTipCallback() +{ + std::lock_guard guard(mutex_); + return tipCallback_ != nullptr; +} + bool UserAuthCallbackV10::DoResultCallback( int32_t result, const std::vector &token, int32_t authType, EnrolledState enrolledState) { @@ -82,9 +109,43 @@ bool UserAuthCallbackV10::DoResultCallback( return true; } +bool UserAuthCallbackV10::DoTipInfoCallBack(int32_t tipType, uint32_t tipCode) +{ + IAM_LOGI("DoTipInfoCallBack start, authType:%{public}d, tipCode:%{public}u", tipType, tipCode); + auto tipCallback = GetTipCallback(); + if (tipCallback == nullptr) { + IAM_LOGE("tipCallback is null"); + return false; + } + userAuth::AuthTipInfo authTipInfo = { + userAuth::UserAuthType::key_t::PIN, userAuth::UserAuthTipCode::key_t::COMPARE_FAILURE}; + if (UserAuthHelper::CheckUserAuthType(tipType)) { + userAuth::UserAuthType tipTypeAni(userAuth::UserAuthType::key_t::PIN); + if (!UserAuthAniHelper::ConvertUserAuthType(tipType, tipTypeAni)) { + IAM_LOGE("Set authType error. authType: %{public}d", tipType); + return false; + } + authTipInfo.tipType = tipTypeAni; + + userAuth::UserAuthTipCode tipCodeAni(userAuth::UserAuthTipCode::key_t::COMPARE_FAILURE); + if (!UserAuthAniHelper::ConvertUserAuthTipCode(tipCode, tipCodeAni)) { + IAM_LOGE("Set tipCode error. tipCode: %{public}d", tipCode); + return false; + } + authTipInfo.tipCode = tipCodeAni; + (**tipCallback)(authTipInfo); + return true; + } + return false; +} + void UserAuthCallbackV10::OnAcquireInfo( int32_t module, uint32_t acquireInfo, const UserIam::UserAuth::Attributes &extraInfo) -{} +{ + IAM_LOGI("start, authType:%{public}d, tipCode:%{public}u", module, acquireInfo); + bool ret = DoTipInfoCallBack(module, acquireInfo); + IAM_LOGD("DoResultCallback ret = %{public}d", ret); +} void UserAuthCallbackV10::OnResult(int32_t result, const Attributes &extraInfo) { diff --git a/frameworks/ets/ani/user_auth/src/user_auth_instance_v10.cpp b/frameworks/ets/ani/user_auth/src/user_auth_instance_v10.cpp index b4492dc5f..9e7642501 100644 --- a/frameworks/ets/ani/user_auth/src/user_auth_instance_v10.cpp +++ b/frameworks/ets/ani/user_auth/src/user_auth_instance_v10.cpp @@ -341,48 +341,32 @@ bool UserAuthInstanceV10::CheckUIContext(const std::shared_ptr maxLen) { - IAM_LOGE("getAuthInstance on GetStrValue fail."); - return UserAuthResultCode::OHOS_INVALID_PARAM; - } - if (type == AUTH_EVENT_RESULT) { - IAM_LOGI("getAuthInstance on SetResultCallback"); - callback_->SetResultCallback(callback); - return UserAuthResultCode::SUCCESS; - } else { - IAM_LOGE("getAuthInstance on invalid event:%{public}s", type.c_str()); - return UserAuthResultCode::OHOS_INVALID_PARAM; - } + IAM_LOGI("getAuthInstance OnResult SetResultCallback"); + callback_->SetResultCallback(callback); + return UserAuthResultCode::SUCCESS; } -UserAuthResultCode UserAuthInstanceV10::Off(std::string type, taihe::optional_view callback) +UserAuthResultCode UserAuthInstanceV10::OffResult(taihe::optional_view callback) { - IAM_LOGI("UserAuthInstanceV10 off."); + IAM_LOGI("UserAuthInstanceV10 OffResult."); if (callback_ == nullptr) { - IAM_LOGE("userAuthInstance off callback is null"); + IAM_LOGE("userAuthInstance OffResult callback is null"); return UserAuthResultCode::GENERAL_ERROR; } - if (type == AUTH_EVENT_RESULT) { - if (!callback_->HasResultCallback()) { - IAM_LOGE("no callback registerred yet"); - return UserAuthResultCode::GENERAL_ERROR; - } - callback_->ClearResultCallback(); - IAM_LOGI("UserAuthResultCode off clear result callback"); - return UserAuthResultCode::SUCCESS; - } else { - IAM_LOGE("invalid event:%{public}s", type.c_str()); - return UserAuthResultCode::OHOS_INVALID_PARAM; + if (!callback_->HasResultCallback()) { + IAM_LOGE("no callback registerred yet"); + return UserAuthResultCode::GENERAL_ERROR; } + callback_->ClearResultCallback(); + IAM_LOGI("UserAuthResultCode OffResult clear result callback"); return UserAuthResultCode::SUCCESS; } @@ -432,6 +416,36 @@ UserAuthResultCode UserAuthInstanceV10::Cancel() reporter.ReportSuccess(); return UserAuthResultCode::SUCCESS; } + +UserAuthResultCode UserAuthInstanceV10::onAuthTip(taihe::callback_view callback) +{ + IAM_LOGI("UserAuthInstanceV10 onAuthTip."); + if (callback_ == nullptr) { + IAM_LOGE("userAuthInstance onAuthTip callback is null"); + return UserAuthResultCode::GENERAL_ERROR; + } + IAM_LOGI("getAuthInstance onAuthTip SetTipCallback"); + callback_->SetTipCallback( + taihe::optional<::taihe::callback>{std::in_place_t{}, callback}); + return UserAuthResultCode::SUCCESS; +} +UserAuthResultCode UserAuthInstanceV10::offAuthTip( + taihe::optional_view> callback) +{ + IAM_LOGI("UserAuthInstanceV10 offAuthTip."); + if (callback_ == nullptr) { + IAM_LOGE("userAuthInstance offAuthTip callback is null"); + return UserAuthResultCode::GENERAL_ERROR; + } + + if (!callback_->HasTipCallback()) { + IAM_LOGE("no callback registerred yet"); + return UserAuthResultCode::GENERAL_ERROR; + } + callback_->ClearTipCallback(); + IAM_LOGI("UserAuthResultCode offAuthTip clear tip callback"); + return UserAuthResultCode::SUCCESS; +} } // namespace UserAuth } // namespace UserIam } // namespace OHOS diff --git a/frameworks/ets/ani/user_auth/src/user_auth_widget_mgr_v10.cpp b/frameworks/ets/ani/user_auth/src/user_auth_widget_mgr_v10.cpp index 77df3ea34..5cabb1896 100644 --- a/frameworks/ets/ani/user_auth/src/user_auth_widget_mgr_v10.cpp +++ b/frameworks/ets/ani/user_auth/src/user_auth_widget_mgr_v10.cpp @@ -54,47 +54,36 @@ UserAuthResultCode UserAuthWidgetMgr::Init(int32_t version) return static_cast(UserAuthHelper::GetResultCodeV10(result)); } -UserAuthResultCode UserAuthWidgetMgr::On(std::string type, userAuth::IAuthWidgetCallback const &callback) +UserAuthResultCode UserAuthWidgetMgr::OnCommand(userAuth::IAuthWidgetCallback const &callback) { IAM_LOGI("UserAuthWidgetMgr on"); if (callback_ == nullptr) { IAM_LOGE("callback is null"); return UserAuthResultCode::GENERAL_ERROR; } - if (type == TYPE_COMMAND) { - IAM_LOGI("SetCommandCallback"); - if (callback_->HasCommandCallback()) { - IAM_LOGE("command callback has been registerred"); - return UserAuthResultCode::GENERAL_ERROR; - } - callback_->SetCommandCallback(callback); - return UserAuthResultCode::SUCCESS; - } else { - IAM_LOGE("invalid event:%{public}s", type.c_str()); - return UserAuthResultCode::OHOS_INVALID_PARAM; + IAM_LOGI("SetCommandCallback"); + if (callback_->HasCommandCallback()) { + IAM_LOGE("command callback has been registerred"); + return UserAuthResultCode::GENERAL_ERROR; } + callback_->SetCommandCallback(callback); + return UserAuthResultCode::SUCCESS; } -UserAuthResultCode UserAuthWidgetMgr::Off( - std::string type, taihe::optional_view callback) +UserAuthResultCode UserAuthWidgetMgr::OffCommand(taihe::optional_view callback) { IAM_LOGI("UserAuthWidgetMgr off"); if (callback_ == nullptr) { IAM_LOGE("callback is null"); return UserAuthResultCode::GENERAL_ERROR; } - if (type == TYPE_COMMAND) { - IAM_LOGI("ClearCommandCallback"); - if (callback_->HasCommandCallback()) { - IAM_LOGE("no command callback register yet"); - return UserAuthResultCode::GENERAL_ERROR; - } - callback_->ClearCommandCallback(); - return UserAuthResultCode::SUCCESS; - } else { - IAM_LOGE("invalid event:%{public}s", type.c_str()); - return UserAuthResultCode::OHOS_INVALID_PARAM; + if (callback_->HasCommandCallback()) { + IAM_LOGE("no command callback register yet"); + return UserAuthResultCode::GENERAL_ERROR; } + IAM_LOGI("ClearCommandCallback"); + callback_->ClearCommandCallback(); + return UserAuthResultCode::SUCCESS; } } // namespace UserAuth } // namespace UserIam -- Gitee