diff --git a/common/include/dialog_ui/js/BUILD.gn b/common/include/dialog_ui/js/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..0792bde2900fd3ac9b5176e43f724b8de178ce9f --- /dev/null +++ b/common/include/dialog_ui/js/BUILD.gn @@ -0,0 +1,22 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//foundation/ace/ace_engine/build/ace_gen_sa_dialog_js.gni") +import("//foundation/distributedhardware/devicemanager/devicemanager.gni") + +gen_sa_dialog_js("dialog_js_files_etc") { + project_path = "//foundation/distributedhardware/devicemanager/common/include/dialog_ui/js" + dialog_name = "config_dialog_service" + part_name = "device_manager_base" + subsystem_name = "distributedhardware" +} diff --git a/common/include/dialog_ui/js/common/pincode.png b/common/include/dialog_ui/js/common/pincode.png new file mode 100644 index 0000000000000000000000000000000000000000..6616f7659fcf1d5da5ab6796863e32efbe086cdc Binary files /dev/null and b/common/include/dialog_ui/js/common/pincode.png differ diff --git a/common/include/dialog_ui/js/i18n/en-US.json b/common/include/dialog_ui/js/i18n/en-US.json new file mode 100644 index 0000000000000000000000000000000000000000..0714fc75f8420ac089a6ee1c24c8f2d8472ff511 --- /dev/null +++ b/common/include/dialog_ui/js/i18n/en-US.json @@ -0,0 +1,5 @@ +{ + "message":{ + "hello": "hello world" + } +} \ No newline at end of file diff --git a/common/include/dialog_ui/js/i18n/zh-CN.json b/common/include/dialog_ui/js/i18n/zh-CN.json new file mode 100644 index 0000000000000000000000000000000000000000..53afe2047da6ff0423e5eae8d9f9af9f73d85d0b --- /dev/null +++ b/common/include/dialog_ui/js/i18n/zh-CN.json @@ -0,0 +1,5 @@ +{ + "message": { + "hello": "你好世界" + } +} \ No newline at end of file diff --git a/common/include/dialog_ui/js/pages/index/index.css b/common/include/dialog_ui/js/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..b87a3962adeda987fcc5ff2a8d8a48dacdccfdbd --- /dev/null +++ b/common/include/dialog_ui/js/pages/index/index.css @@ -0,0 +1,41 @@ +.container { + flex-direction: column; + justify-content: center; + align-items: center; + opacity: 0.8; + background-color: azure; +} + +.title { + font-size: 48px; + line-height: 70px; + font-weight: 800; +} + +.but { + width: 85%; + margin-top: 10%; + text-align: center; + height: 45px; +} + +.but1 { + width: 40%; + height: 36px; + font-size: 26px; + margin-left: 10%; +} + +.but2 { + width: 20%; + height: 36px; + font-size: 26px; + margin-left: 55%; +} + + +.title-list { + font-size: 38px; + line-height: 40px; + font-weight: 800; +} diff --git a/common/include/dialog_ui/js/pages/index/index.hml b/common/include/dialog_ui/js/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..81ab90ff6fae66e5bfecc149c1c581ccc8f9446a --- /dev/null +++ b/common/include/dialog_ui/js/pages/index/index.hml @@ -0,0 +1,16 @@ +
+ + 是否允许对端连接本机 + + + 用于分享图片 + +
+ + +
+
diff --git a/common/include/dialog_ui/js/pages/index/index.js b/common/include/dialog_ui/js/pages/index/index.js new file mode 100644 index 0000000000000000000000000000000000000000..85c42a6e66d7319f15ca304b73bacae1b9fa928b --- /dev/null +++ b/common/include/dialog_ui/js/pages/index/index.js @@ -0,0 +1,29 @@ +import router from '@ohos.router' + +var times = 60; +export default { + data: { + message: router.getParams().targetPkgName, + }, + onInit() { + console.info('getParams: ' + router.getParams()); + this.timeRemaining = times; + const next = () => { + --this.timeRemaining; + if (this.timeRemaining > 0) { + setTimeout(next, 1000) + } else { + onCancel(); + } + } + next() + }, + onConfirm() { + console.info('click confirm'); + callNativeHandler("EVENT_CONFIRM", "0"); + }, + onCancel() { + console.info('click cancel'); + callNativeHandler("EVENT_CANCEL", "1"); + } +} \ No newline at end of file diff --git a/common/include/dm_constants.h b/common/include/dm_constants.h index 492de42c1eab4429d8646330cfea50dc3829c173..7878b42661bc2549346f6e0e6ca7596d3cc8b51b 100644 --- a/common/include/dm_constants.h +++ b/common/include/dm_constants.h @@ -172,6 +172,12 @@ const std::string BR_MAC = "BR_MAC"; const std::string BLE_MAC = "BLE_MAC"; const std::string ETH_IP = "ETH_IP"; const std::string ETH_PORT = "ETH_PORT"; + +// ACE +const int32_t ACE_X = 50; +const int32_t ACE_Y = 200; +const int32_t ACE_WIDTH = 400; +const int32_t ACE_HEIGHT = 200; } // namespace DistributedHardware } // namespace OHOS #endif diff --git a/ext/input_pin_dialog/dialog_ui/js/BUILD.gn b/ext/input_pin_dialog/dialog_ui/js/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..8abf88695e272f47842c8c6549920376cff6b74b --- /dev/null +++ b/ext/input_pin_dialog/dialog_ui/js/BUILD.gn @@ -0,0 +1,22 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//foundation/ace/ace_engine/build/ace_gen_sa_dialog_js.gni") +import("//foundation/distributedhardware/devicemanager/devicemanager.gni") + +gen_sa_dialog_js("dialog_js_files_etc") { + project_path = "//foundation/distributedhardware/devicemanager/ext/input_pin_dialog/dialog_ui/js" + dialog_name = "input_pin_service" + part_name = "device_manager_base" + subsystem_name = "distributedhardware" +} diff --git a/ext/input_pin_dialog/dialog_ui/js/common/KeyBoard.js b/ext/input_pin_dialog/dialog_ui/js/common/KeyBoard.js new file mode 100644 index 0000000000000000000000000000000000000000..c3234a50dc7569ed8bf587f6ea22899f0671b0f2 --- /dev/null +++ b/ext/input_pin_dialog/dialog_ui/js/common/KeyBoard.js @@ -0,0 +1,86 @@ + +;(function(exports){ + var KeyBoard = function(input, options){ + var body = document.getElementsByTagName('body')[0]; + var DIV_ID = options && options.divId || '__w_l_h_v_c_z_e_r_o_divid'; + + if(document.getElementById(DIV_ID)){ + body.removeChild(document.getElementById(DIV_ID)); + } + + this.input = input; + this.el = document.createElement('div'); + + var self = this; + var zIndex = options && options.zIndex || 1000; + var width = options && options.width || '100%'; + var height = options && options.height || '193px'; + var fontSize = options && options.fontSize || '15px'; + var backgroundColor = options && options.backgroundColor || '#fff'; + var TABLE_ID = options && options.table_id || 'table_0909099'; + var mobile = typeof orientation !== 'undefined'; + + this.el.id = DIV_ID; + this.el.style.position = 'absolute'; + this.el.style.left = 0; + this.el.style.right = 0; + this.el.style.bottom = 0; + this.el.style.zIndex = zIndex; + this.el.style.width = width; + this.el.style.height = height; + this.el.style.backgroundColor = backgroundColor; + + //样式 + var cssStr = ''; + + //Button + var btnStr = '
完成
'; + + //table + var tableStr = ''; + tableStr += ''; + tableStr += ''; + tableStr += ''; + tableStr += ''; + tableStr += ''; + tableStr += '
123
456
789
.0删除
'; + this.el.innerHTML = cssStr + btnStr + tableStr; + + function addEvent(e){ + var ev = e || window.event; + var clickEl = ev.element || ev.target; + var value = clickEl.textContent || clickEl.innerText; + if(clickEl.tagName.toLocaleLowerCase() === 'td' && value !== "删除"){ + if(self.input){ + self.input.value += value; + } + }else if(clickEl.tagName.toLocaleLowerCase() === 'div' && value === "完成"){ + body.removeChild(self.el); + }else if(clickEl.tagName.toLocaleLowerCase() === 'td' && value === "删除"){ + var num = self.input.value; + if(num){ + var newNum = num.substr(0, num.length - 1); + self.input.value = newNum; + } + } + } + + if(mobile){ + this.el.ontouchstart = addEvent; + }else{ + this.el.onclick = addEvent; + } + body.appendChild(this.el); + } + + exports.KeyBoard = KeyBoard; + +})(window); \ No newline at end of file diff --git a/ext/input_pin_dialog/dialog_ui/js/common/index.hml b/ext/input_pin_dialog/dialog_ui/js/common/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..3566d9ba28b0696c15f59dcf87adaa6155fb5430 --- /dev/null +++ b/ext/input_pin_dialog/dialog_ui/js/common/index.hml @@ -0,0 +1,32 @@ +
+ + PIN码连接 + + + 请输入另一个设备显示的PIN码进行验证 + + + + + PIN码输入错误,请重新输入 + +
+ + +
+ + + +
diff --git a/ext/input_pin_dialog/dialog_ui/js/common/pincode.png b/ext/input_pin_dialog/dialog_ui/js/common/pincode.png new file mode 100644 index 0000000000000000000000000000000000000000..6616f7659fcf1d5da5ab6796863e32efbe086cdc Binary files /dev/null and b/ext/input_pin_dialog/dialog_ui/js/common/pincode.png differ diff --git a/ext/input_pin_dialog/dialog_ui/js/i18n/en-US.json b/ext/input_pin_dialog/dialog_ui/js/i18n/en-US.json new file mode 100644 index 0000000000000000000000000000000000000000..0714fc75f8420ac089a6ee1c24c8f2d8472ff511 --- /dev/null +++ b/ext/input_pin_dialog/dialog_ui/js/i18n/en-US.json @@ -0,0 +1,5 @@ +{ + "message":{ + "hello": "hello world" + } +} \ No newline at end of file diff --git a/ext/input_pin_dialog/dialog_ui/js/i18n/zh-CN.json b/ext/input_pin_dialog/dialog_ui/js/i18n/zh-CN.json new file mode 100644 index 0000000000000000000000000000000000000000..53afe2047da6ff0423e5eae8d9f9af9f73d85d0b --- /dev/null +++ b/ext/input_pin_dialog/dialog_ui/js/i18n/zh-CN.json @@ -0,0 +1,5 @@ +{ + "message": { + "hello": "你好世界" + } +} \ No newline at end of file diff --git a/ext/input_pin_dialog/dialog_ui/js/pages/index/index.css b/ext/input_pin_dialog/dialog_ui/js/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..cf763b2ac3189d4cca6fde7322153616eb97f076 --- /dev/null +++ b/ext/input_pin_dialog/dialog_ui/js/pages/index/index.css @@ -0,0 +1,50 @@ +.container { + flex-direction: column; + justify-content: center; + align-items: center; + opacity: 0.8; + background-color: azure; +} + +.title { + font-size: 48px; + line-height: 40px; + font-weight: 800; +} + +.title-list { + font-size: 30px; + line-height: 35px; + font-weight: 800; +} + +.title-error { + font-size: 15px; + line-height: 20px; + font-weight: 800; + color: #ff0000; +} + +.title-pin { + font-size: 30px; + line-height: 35px; + font-weight: 800; +} + +.but { + margin: 10px 20px 10px 20px; + width: 85%; + height: 40px; +} + +.but1 { + width: 80px; + height: 36px; + font-size: 26px; +} + +.but2 { + width: 80px; + height: 36px; + font-size: 26px; +} \ No newline at end of file diff --git a/ext/input_pin_dialog/dialog_ui/js/pages/index/index.hml b/ext/input_pin_dialog/dialog_ui/js/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..7f629df7a555519cf5e30f2191be38a589090b70 --- /dev/null +++ b/ext/input_pin_dialog/dialog_ui/js/pages/index/index.hml @@ -0,0 +1,23 @@ +
+ + PIN码连接 + + + 请输入另一个设备显示的PIN码进行验证 + + + + + +
+ + +
+ +
diff --git a/ext/input_pin_dialog/dialog_ui/js/pages/index/index.js b/ext/input_pin_dialog/dialog_ui/js/pages/index/index.js new file mode 100644 index 0000000000000000000000000000000000000000..8a38e6188acbaa66a39bc57603c2a50ec94b7bee --- /dev/null +++ b/ext/input_pin_dialog/dialog_ui/js/pages/index/index.js @@ -0,0 +1,34 @@ +import router from '@ohos.router' + +var numbs = 0; +export default { + data: { + pincode: router.getParams().pinCode, + }, + onInit() { + console.info('getParams: ' + router.getParams()); + }, + onConfirm() { + console.info('click confirm'); + numbs = numbs + 1; + if (numbs < 3){ + var input= document.getElementById("input").value; + console.info('input: ' + input); + console.info('pincode: ' + pincode); + if (input == pincode){ + console.info('pincode: = input'); + callNativeHandler(input, "0"); + } else { + console.info('pincode: != input'); + //刷新页面,提示输入错误 + } + } else { + console.info('click cancel'); + callNativeHandler("EVENT_CONFIRM", "1"); + } + }, + onCancel() { + console.info('click cancel'); + callNativeHandler("EVENT_CONFIRM", "1"); + } +} \ No newline at end of file diff --git a/ext/pin_auth/BUILD.gn b/ext/pin_auth/BUILD.gn index 603d4ff14d53df50cfdca566af1ab3cae631d406..8372234686b1d855b3940683177a7c80e5050305 100644 --- a/ext/pin_auth/BUILD.gn +++ b/ext/pin_auth/BUILD.gn @@ -25,10 +25,38 @@ if (defined(ohos_lite)) { include_dirs = [ "include", "${common_path}/include", - "${services_path}/include/adapter", "${ext_path}/pin_auth/include/ability", + "${services_path}/include/dependency/timer", + "${services_path}/include/config", + "${services_path}/include/adapter", "${services_path}/include/authentication", + "${services_path}/include/ability", + "${services_path}/include/deviceinfo", + "${services_path}/include/devicestate", + "${services_path}/include/discovery", + "${services_path}/include/dependency/commonevent", + "${services_path}/include/dependency/hichain", + "${services_path}/include/dependency/softbus", + "${services_path}/include/dependency/timer", + "${services_path}/include/ipc", + "${services_path}/include/ipc/standard", "${utils_path}/include", + "${utils_path}/include/ipc/standard", + "${services_path}/include", + "${innerkits_path}/native_cpp/include", + "${common_path}/include/ipc", + "${common_path}/include/ipc/model", + "${innerkits_path}/native_cpp/include", + "${innerkits_path}/native_cpp/include/ipc", + "${innerkits_path}/native_cpp/include/ipc/standard", + "//third_party/json/include", + "//utils/native/base/include", + "//utils/system/safwk/native/include", + "//base/notification/ces_standard/frameworks/core/include", + "//base/notification/ces_standard/interfaces/innerkits/native/include", + "//base/security/deviceauth/interfaces/innerkits", + "//base/startup/syspara_lite/interfaces/kits", + "//base/startup/syspara_lite/adapter/native/syspara/include", ] sources = [ @@ -38,20 +66,33 @@ if (defined(ohos_lite)) { ] deps = [ + "${ext_path}/input_pin_dialog/dialog_ui/js:dialog_js_files_etc", + "${ext_path}/show_pin_dialog/dialog_ui/js:dialog_js_files_etc", + "${innerkits_path}/native_cpp:devicemanagersdk", "${utils_path}:devicemanagerutils", + "//base/security/deviceauth/services:deviceauth_sdk", "//foundation/aafwk/standard/interfaces/innerkits/ability_manager:ability_manager", "//foundation/aafwk/standard/interfaces/innerkits/want:want", "//foundation/aafwk/standard/services/abilitymgr:abilityms", + "//foundation/ace/ace_engine/interfaces/innerkits/ui_service_manager:ui_service_mgr", + "//foundation/distributedhardware/devicemanager/services/devicemanagerservice:devicemanagerservice", + "//foundation/windowmanager/wm:libwm", "//utils/native/base:utils", ] external_deps = [ - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", + "appexecfwk_standard:appexecfwk_base", + "appexecfwk_standard:appexecfwk_core", + "appexecfwk_standard:libeventhandler", + "ces_standard:cesfwk_core", + "ces_standard:cesfwk_innerkits", + "dsoftbus_standard:softbus_client", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "safwk:system_ability_fwk", + "samgr_standard:samgr_proxy", "startup_l2:syspara", + "startup_l2:syspara_watchagent", ] defines = [ diff --git a/ext/pin_auth/include/pin_auth.h b/ext/pin_auth/include/pin_auth.h index 2129c94a1a5cd949d018fdb30bcca668f5efc474..b2636e0afdd1ce1906183fe10649debb1a3825ea 100644 --- a/ext/pin_auth/include/pin_auth.h +++ b/ext/pin_auth/include/pin_auth.h @@ -20,6 +20,7 @@ #include #include "authentication.h" +#include "dm_auth_manager.h" #include "dm_ability_manager.h" #include "pin_auth_ui.h" @@ -29,8 +30,8 @@ class PinAuth : public IAuthentication { public: PinAuth(); ~PinAuth(); - int32_t ShowAuthInfo() override; - int32_t StartAuth(std::shared_ptr dmAbilityManager) override; + int32_t ShowAuthInfo(int32_t code) override; + int32_t StartAuth(int32_t code, std::shared_ptr authManager) override; int32_t VerifyAuthentication(std::string pinToken, int32_t code, const std::string &authParam) override; private: diff --git a/ext/pin_auth/include/pin_auth_ui.h b/ext/pin_auth/include/pin_auth_ui.h index f8910cba26fe134c29fd199449c8ba622da6018d..61575797f893e15ade0b58883a0820823fbe6fb8 100644 --- a/ext/pin_auth/include/pin_auth_ui.h +++ b/ext/pin_auth/include/pin_auth_ui.h @@ -18,6 +18,7 @@ #include +#include "dm_auth_manager.h" #include "dm_ability_manager.h" namespace OHOS { @@ -25,8 +26,8 @@ namespace DistributedHardware { class PinAuthUi { public: PinAuthUi(); - int32_t ShowPinDialog(); - int32_t InputPinDialog(std::shared_ptr dmAbilityManager); + int32_t ShowPinDialog(int32_t code); + int32_t InputPinDialog(int32_t code, std::shared_ptr authManager); private: int32_t StartFaUiService(std::shared_ptr dmAbilityManager); diff --git a/ext/pin_auth/src/pin_auth.cpp b/ext/pin_auth/src/pin_auth.cpp index 5e123b0c550dc0f5b51059b318390dee00151e73..138abc56fa23141fe5a180e07d6bdeca3b271edd 100644 --- a/ext/pin_auth/src/pin_auth.cpp +++ b/ext/pin_auth/src/pin_auth.cpp @@ -33,15 +33,14 @@ PinAuth::~PinAuth() { } -int32_t PinAuth::ShowAuthInfo() +int32_t PinAuth::ShowAuthInfo(int32_t code) { - return pinAuthUi_->ShowPinDialog(); + return pinAuthUi_->ShowPinDialog(code); } -int32_t PinAuth::StartAuth(std::shared_ptr dmAbilityManager) +int32_t PinAuth::StartAuth(int32_t code, std::shared_ptr authManager) { - times_ = 0; - return pinAuthUi_->InputPinDialog(dmAbilityManager); + return pinAuthUi_->InputPinDialog(code, authManager); } int32_t PinAuth::VerifyAuthentication(std::string pinToken, int32_t code, const std::string &authParam) diff --git a/ext/pin_auth/src/pin_auth_ui.cpp b/ext/pin_auth/src/pin_auth_ui.cpp index 691e5005239562cdeed0aad76f73cabbbaf91826..a3cfeefe271caa8d20a610b19cd8124fa35476ff 100644 --- a/ext/pin_auth/src/pin_auth_ui.cpp +++ b/ext/pin_auth/src/pin_auth_ui.cpp @@ -18,6 +18,8 @@ #include "dm_ability_manager.h" #include "dm_constants.h" #include "dm_log.h" +#include "nlohmann/json.hpp" +#include "ui_service_mgr_client.h" namespace OHOS { namespace DistributedHardware { @@ -26,18 +28,47 @@ PinAuthUi::PinAuthUi() LOGI("AuthUi constructor"); } -int32_t PinAuthUi::ShowPinDialog() +int32_t PinAuthUi::ShowPinDialog(int32_t code) { + LOGI("ShowPinDialog start"); + nlohmann::json jsonObj; + jsonObj[PIN_CODE_KEY] = code; + jsonObj.dump(); + const std::string params = jsonObj.dump(); + + Ace::UIServiceMgrClient::GetInstance()->ShowDialog( + "show_pin_service", + params, + OHOS::Rosen::WindowType::WINDOW_TYPE_SYSTEM_ALARM_WINDOW, + ACE_X, ACE_Y, ACE_WIDTH, ACE_HEIGHT, + [](int32_t id, const std::string& event, const std::string& params) { + LOGI("CancelDialog start id:%d,event:%s,parms:%s", id, event.c_str(), params.c_str()); + Ace::UIServiceMgrClient::GetInstance()->CancelDialog(id); + }); + LOGI("ShowConfigDialog end"); return DM_OK; } -int32_t PinAuthUi::InputPinDialog(std::shared_ptr dmAbilityManager) +int32_t PinAuthUi::InputPinDialog(int32_t code, std::shared_ptr authManager) { - if (dmAbilityManager == nullptr) { - LOGE("PinAuthUi::dmAbilityManager is null"); - return DM_FAILED; - } - return StartFaUiService(dmAbilityManager); + LOGI("InputPinDialog start"); + nlohmann::json jsonObj; + jsonObj[PIN_CODE_KEY] = code; + jsonObj.dump(); + const std::string params = jsonObj.dump(); + + Ace::UIServiceMgrClient::GetInstance()->ShowDialog( + "input_pin_service", + params, + OHOS::Rosen::WindowType::WINDOW_TYPE_SYSTEM_ALARM_WINDOW, + ACE_X, ACE_Y, ACE_WIDTH, ACE_HEIGHT, + [authManager](int32_t id, const std::string& event, const std::string& params) { + Ace::UIServiceMgrClient::GetInstance()->CancelDialog(id); + LOGI("CancelDialog start id:%d,event:%s,parms:%s", id, event.c_str(), params.c_str()); + authManager->VerifyPinAuthAuthentication(params.c_str()); + }); + LOGI("ShowConfigDialog end"); + return DM_OK; } int32_t PinAuthUi::StartFaUiService(std::shared_ptr dmAbilityManager) diff --git a/ext/show_pin_dialog/dialog_ui/js/BUILD.gn b/ext/show_pin_dialog/dialog_ui/js/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..8c623e7f87ffeec940e5f3a0730114001f79f6e0 --- /dev/null +++ b/ext/show_pin_dialog/dialog_ui/js/BUILD.gn @@ -0,0 +1,22 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//foundation/ace/ace_engine/build/ace_gen_sa_dialog_js.gni") +import("//foundation/distributedhardware/devicemanager/devicemanager.gni") + +gen_sa_dialog_js("dialog_js_files_etc") { + project_path = "//foundation/distributedhardware/devicemanager/ext/show_pin_dialog/dialog_ui/js" + dialog_name = "show_pin_service" + part_name = "device_manager_base" + subsystem_name = "distributedhardware" +} diff --git a/ext/show_pin_dialog/dialog_ui/js/common/pincode.png b/ext/show_pin_dialog/dialog_ui/js/common/pincode.png new file mode 100644 index 0000000000000000000000000000000000000000..6616f7659fcf1d5da5ab6796863e32efbe086cdc Binary files /dev/null and b/ext/show_pin_dialog/dialog_ui/js/common/pincode.png differ diff --git a/ext/show_pin_dialog/dialog_ui/js/i18n/en-US.json b/ext/show_pin_dialog/dialog_ui/js/i18n/en-US.json new file mode 100644 index 0000000000000000000000000000000000000000..0714fc75f8420ac089a6ee1c24c8f2d8472ff511 --- /dev/null +++ b/ext/show_pin_dialog/dialog_ui/js/i18n/en-US.json @@ -0,0 +1,5 @@ +{ + "message":{ + "hello": "hello world" + } +} \ No newline at end of file diff --git a/ext/show_pin_dialog/dialog_ui/js/i18n/zh-CN.json b/ext/show_pin_dialog/dialog_ui/js/i18n/zh-CN.json new file mode 100644 index 0000000000000000000000000000000000000000..53afe2047da6ff0423e5eae8d9f9af9f73d85d0b --- /dev/null +++ b/ext/show_pin_dialog/dialog_ui/js/i18n/zh-CN.json @@ -0,0 +1,5 @@ +{ + "message": { + "hello": "你好世界" + } +} \ No newline at end of file diff --git a/ext/show_pin_dialog/dialog_ui/js/pages/index/index.css b/ext/show_pin_dialog/dialog_ui/js/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..feb20b4fd6d734135fa8b35d2a8fce28b34b69f2 --- /dev/null +++ b/ext/show_pin_dialog/dialog_ui/js/pages/index/index.css @@ -0,0 +1,31 @@ +.container { + flex-direction: column; + justify-content: center; + align-items: center; + opacity: 0.8; + background-color: azure; +} + +.title { + font-size: 48px; + line-height: 50px; + font-weight: 800; +} + +.title-list { + font-size: 38px; + line-height: 40px; + font-weight: 800; +} + +.title-pin { + font-size: 48px; + line-height: 50px; + font-weight: 800; +} + +.but { + width: 100%; + font-size: 26px; + height: 36px; +} \ No newline at end of file diff --git a/ext/show_pin_dialog/dialog_ui/js/pages/index/index.hml b/ext/show_pin_dialog/dialog_ui/js/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..9cb650aefdc7650e308f4202a3b9ca0ee11cba57 --- /dev/null +++ b/ext/show_pin_dialog/dialog_ui/js/pages/index/index.hml @@ -0,0 +1,14 @@ +
+ + PIN码连接 + + + 请在设备端输入链接码进行验证 + + + {{ pincode }} + + +
\ No newline at end of file diff --git a/ext/show_pin_dialog/dialog_ui/js/pages/index/index.js b/ext/show_pin_dialog/dialog_ui/js/pages/index/index.js new file mode 100644 index 0000000000000000000000000000000000000000..114655c3a4d334a82a2e5a2186be08df84bea372 --- /dev/null +++ b/ext/show_pin_dialog/dialog_ui/js/pages/index/index.js @@ -0,0 +1,14 @@ +import router from '@ohos.router' + +export default { + data: { + pincode: router.getParams().pinCode, + }, + onInit() { + console.info('getParams: ' + router.getParams()); + }, + onConfirm() { + console.info('click confirm'); + callNativeHandler("EVENT_CONFIRM", "1"); + } +} \ No newline at end of file diff --git a/services/devicemanagerservice/BUILD.gn b/services/devicemanagerservice/BUILD.gn index 8d979936963a84b0e6eb2c892bd65119e257bcfc..f4359edcc645959257b185de9c1af264a2656d47 100644 --- a/services/devicemanagerservice/BUILD.gn +++ b/services/devicemanagerservice/BUILD.gn @@ -57,6 +57,7 @@ if (defined(ohos_lite)) { "//base/startup/syspara_lite/interfaces/kits", "//base/startup/syspara_lite/adapter/native/syspara/include", "//third_party/json/include", + "//third_party/flutter/skia", ] sources = [ @@ -85,12 +86,15 @@ if (defined(ohos_lite)) { ] deps = [ + "${common_path}/include/dialog_ui/js:dialog_js_files_etc", "${innerkits_path}/native_cpp:devicemanagersdk", "${utils_path}:devicemanagerutils", "//base/security/deviceauth/services:deviceauth_sdk", "//foundation/aafwk/standard/interfaces/innerkits/ability_manager:ability_manager", "//foundation/aafwk/standard/interfaces/innerkits/want:want", "//foundation/aafwk/standard/services/abilitymgr:abilityms", + "//foundation/ace/ace_engine/interfaces/innerkits/ui_service_manager:ui_service_mgr", + "//foundation/windowmanager/wm:libwm", "//utils/native/base:utils", ] diff --git a/services/devicemanagerservice/include/authentication/authentication.h b/services/devicemanagerservice/include/authentication/authentication.h index 5783f11125a23e813979ae3249a9cfd3d3d97603..43c486511f474a6ff795b3554e82bb8a6f4f4665 100644 --- a/services/devicemanagerservice/include/authentication/authentication.h +++ b/services/devicemanagerservice/include/authentication/authentication.h @@ -20,11 +20,12 @@ namespace OHOS { namespace DistributedHardware { +class DmAuthManager; class IAuthentication { public: virtual ~IAuthentication() = default; - virtual int32_t ShowAuthInfo() = 0; - virtual int32_t StartAuth(std::shared_ptr dmAbilityManager) = 0; + virtual int32_t ShowAuthInfo(int32_t code) = 0; + virtual int32_t StartAuth(int32_t code, std::shared_ptr authManager) = 0; virtual int32_t VerifyAuthentication(std::string pinToken, int32_t code, const std::string &authParam) = 0; }; diff --git a/services/devicemanagerservice/include/authentication/dm_auth_manager.h b/services/devicemanagerservice/include/authentication/dm_auth_manager.h index 2ea42c9b7c8a6bbe7bff6a445610ba6f8ea97bf0..6b0298ec907ad3c7c70e83bf738b05e8cb741d5f 100644 --- a/services/devicemanagerservice/include/authentication/dm_auth_manager.h +++ b/services/devicemanagerservice/include/authentication/dm_auth_manager.h @@ -129,6 +129,7 @@ public: const std::string &extra); int32_t UnAuthenticateDevice(const std::string &pkgName, const std::string &deviceId); int32_t VerifyAuthentication(const std::string &authParam); + void VerifyPinAuthAuthentication(const std::string &action); void OnSessionOpened(int32_t sessionId, int32_t sessionSide, int32_t result); void OnSessionClosed(int32_t sessionId); void OnDataReceived(int32_t sessionId, std::string message); diff --git a/services/devicemanagerservice/src/authentication/dm_auth_manager.cpp b/services/devicemanagerservice/src/authentication/dm_auth_manager.cpp index cde8a2e3c052955edaba675d906d20d830e4c998..1e9976f44f3f49ccf3613bbc1dfaa33a1fabfc96 100644 --- a/services/devicemanagerservice/src/authentication/dm_auth_manager.cpp +++ b/services/devicemanagerservice/src/authentication/dm_auth_manager.cpp @@ -24,6 +24,9 @@ #include "dm_random.h" #include "nlohmann/json.hpp" #include "parameter.h" +#include "ui_service_mgr_client.h" +#include "dialog_callback_stub.h" +#include "dialog_callback.h" namespace OHOS { namespace DistributedHardware { @@ -652,31 +655,61 @@ int32_t DmAuthManager::GetPinCode() void DmAuthManager::ShowConfigDialog() { - std::shared_ptr authUi_ = std::make_shared(); - dmAbilityMgr_ = std::make_shared(); - authUi_->ShowConfirmDialog(dmAbilityMgr_); + LOGI("ShowConfigDialog start"); + nlohmann::json jsonObj; + jsonObj[TAG_AUTH_TYPE] = AUTH_TYPE_PIN; + jsonObj[TAG_TOKEN] = authResponseContext_->token; + jsonObj[TARGET_PKG_NAME_KEY] = authResponseContext_->targetPkgName; + jsonObj.dump(); + const std::string params = jsonObj.dump(); + std::shared_ptr authMgr_ = shared_from_this(); + + Ace::UIServiceMgrClient::GetInstance()->ShowDialog( + "config_dialog_service", + params, + OHOS::Rosen::WindowType::WINDOW_TYPE_SYSTEM_ALARM_WINDOW, + ACE_X, ACE_Y, ACE_WIDTH, ACE_HEIGHT, + [authMgr_](int32_t id, const std::string& event, const std::string& params) { + Ace::UIServiceMgrClient::GetInstance()->CancelDialog(id); + LOGI("CancelDialog start id:%d,event:%s,parms:%s", id, event.c_str(), params.c_str()); + authMgr_->StartAuthProcess(atoi(params.c_str())); + }); + LOGI("ShowConfigDialog end"); } void DmAuthManager::ShowAuthInfoDialog() { - return; + LOGI("DmAuthManager::ShowAuthInfoDialog start"); + authResponseContext_->code = GeneratePincode(); + std::shared_ptr ptr; + if (authenticationMap_.find(1) == authenticationMap_.end()) { + LOGE("DmAuthManager::authenticationMap_ is null"); + return; + } + ptr = authenticationMap_[1]; + LOGI("ShowAuthInfoDialog code:%d", authResponseContext_->code); + ptr->ShowAuthInfo(authResponseContext_->code); } void DmAuthManager::ShowStartAuthDialog() { LOGI("DmAuthManager::ShowStartAuthDialog start"); - dmAbilityMgr_ = std::make_shared(); std::shared_ptr ptr; if (authenticationMap_.find(1) == authenticationMap_.end()) { LOGE("DmAuthManager::authenticationMap_ is null"); return; } ptr = authenticationMap_[1]; - ptr->StartAuth(dmAbilityMgr_); + ptr->StartAuth(authResponseContext_->code, shared_from_this()); } int32_t DmAuthManager::GetAuthenticationParam(DmAuthParam &authParam) { + if (dmAbilityMgr_ == nullptr) { + LOGI("dmAbilityMgr_ is nullptr"); + return DM_POINT_NULL; + } + dmAbilityMgr_->StartAbilityDone(); AbilityRole role = dmAbilityMgr_->GetAbilityRole(); authParam.direction = (int32_t)role; @@ -737,5 +770,20 @@ void DmAuthManager::UserSwitchEventCallback (void) } } } + +void DmAuthManager::VerifyPinAuthAuthentication(const std::string &action) +{ + LOGI("DmAuthManager::VerifyPinAuthAuthentication"); + timerMap_[INPUT_TIMEOUT_TASK]->Stop(SESSION_CANCEL_TIMEOUT); + if (action == "0") { + authRequestState_->TransitionTo(std::make_shared()); + } + if (action == "1") { + authRequestContext_->reason = DM_AUTH_INPUT_FAILED; + authResponseContext_->state = authRequestState_->GetStateType(); + authRequestState_->TransitionTo(std::make_shared()); + } + LOGI("DmAuthManager::VerifyAuthentication complete"); +} } // namespace DistributedHardware } // namespace OHOS