1 /*
2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "iam_logger.h"
17
18 #include "user_auth_impl.h"
19 #include "auth_instance_v9.h"
20 #include "nlohmann/json.hpp"
21 #include "user_auth_impl.h"
22 #include "user_auth_instance_v10.h"
23 #include "user_auth_widget_mgr_v10.h"
24 #include "user_auth_client_impl.h"
25
26 #define LOG_LABEL UserIam::Common::LABEL_USER_AUTH_NAPI
27
28 namespace OHOS {
29 namespace UserIam {
30 namespace UserAuth {
31 namespace {
32 const std::string NOTICE_WIDGET_CTXID = "widgetContextId";
33 const std::string NOTICE_EVENT_TYPE = "event";
34 const std::string NOTICE_VERSION = "version";
35 const std::string NOTICE_PAYLOAD = "payload";
36 const std::string NOTICE_PAYLOAD_TYPE = "type";
37 const std::string SUPPORT_NOTICE_VERSION = "1";
38
UserAuthServiceConstructor(napi_env env,napi_callback_info info)39 napi_value UserAuthServiceConstructor(napi_env env, napi_callback_info info)
40 {
41 IAM_LOGI("start");
42 napi_value thisVar = nullptr;
43 size_t argc = ARGS_ONE;
44 napi_value argv[ARGS_ONE] = {nullptr};
45 NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
46 return thisVar;
47 }
48
GetVersion(napi_env env,napi_callback_info info)49 napi_value GetVersion(napi_env env, napi_callback_info info)
50 {
51 IAM_LOGI("start");
52 return UserAuthImpl::GetVersion(env, info);
53 }
54
GetAvailableStatus(napi_env env,napi_callback_info info)55 napi_value GetAvailableStatus(napi_env env, napi_callback_info info)
56 {
57 IAM_LOGI("start");
58 return UserAuthImpl::GetAvailableStatus(env, info);
59 }
60
GetAvailableStatusV9(napi_env env,napi_callback_info info)61 napi_value GetAvailableStatusV9(napi_env env, napi_callback_info info)
62 {
63 IAM_LOGI("start");
64 UserAuthResultCode result = AuthInstanceV9::GetAvailableStatus(env, info);
65 if (result != UserAuthResultCode::SUCCESS) {
66 IAM_LOGE("fail");
67 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, result));
68 }
69 return nullptr;
70 }
71
UnwrapAuthInstanceV9(napi_env env,napi_callback_info info,AuthInstanceV9 ** authInstanceV9)72 napi_status UnwrapAuthInstanceV9(napi_env env, napi_callback_info info, AuthInstanceV9 **authInstanceV9)
73 {
74 napi_value thisVar = nullptr;
75 size_t argc = ARGS_ONE;
76 napi_value argv[ARGS_ONE] = {nullptr};
77 napi_status ret = napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
78 if (ret != napi_ok) {
79 IAM_LOGE("napi_get_cb_info fail");
80 return ret;
81 }
82 ret = napi_unwrap(env, thisVar, reinterpret_cast<void **>(authInstanceV9));
83 if (ret != napi_ok) {
84 IAM_LOGE("napi_unwrap fail");
85 return ret;
86 }
87 if (*authInstanceV9 == nullptr) {
88 IAM_LOGE("authInstanceV9 is null");
89 return napi_generic_failure;
90 }
91 return ret;
92 }
93
AuthInstanceV9Constructor(napi_env env,napi_callback_info info)94 napi_value AuthInstanceV9Constructor(napi_env env, napi_callback_info info)
95 {
96 IAM_LOGI("start");
97 std::unique_ptr<AuthInstanceV9> authInstanceV9 {new (std::nothrow) AuthInstanceV9(env)};
98 if (authInstanceV9 == nullptr) {
99 IAM_LOGE("authInstanceV9 is nullptr");
100 return nullptr;
101 }
102
103 napi_value thisVar = nullptr;
104 size_t argc = ARGS_ONE;
105 napi_value argv[ARGS_ONE] = {nullptr};
106 NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
107 NAPI_CALL(env, napi_wrap(env, thisVar, authInstanceV9.get(),
108 [](napi_env env, void *data, void *hint) {
109 AuthInstanceV9 *authInstanceV9 = static_cast<AuthInstanceV9 *>(data);
110 if (authInstanceV9 != nullptr) {
111 delete authInstanceV9;
112 }
113 },
114 nullptr, nullptr));
115 authInstanceV9.release();
116 return thisVar;
117 }
118
On(napi_env env,napi_callback_info info)119 napi_value On(napi_env env, napi_callback_info info)
120 {
121 IAM_LOGI("start");
122 AuthInstanceV9 *authInstance;
123 napi_status ret = UnwrapAuthInstanceV9(env, info, &authInstance);
124 if (ret != napi_ok) {
125 IAM_LOGE("UnwrapAuthInstanceV9 fail:%{public}d", ret);
126 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
127 return nullptr;
128 }
129 UserAuthResultCode code = authInstance->On(env, info);
130 if (code != UserAuthResultCode::SUCCESS) {
131 IAM_LOGE("On fail:%{public}d", static_cast<int32_t>(code));
132 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
133 }
134 return nullptr;
135 }
136
Off(napi_env env,napi_callback_info info)137 napi_value Off(napi_env env, napi_callback_info info)
138 {
139 IAM_LOGI("start");
140 AuthInstanceV9 *authInstance;
141 napi_status ret = UnwrapAuthInstanceV9(env, info, &authInstance);
142 if (ret != napi_ok) {
143 IAM_LOGE("UnwrapAuthInstanceV9 fail:%{public}d", ret);
144 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
145 return nullptr;
146 }
147 UserAuthResultCode code = authInstance->Off(env, info);
148 if (code != UserAuthResultCode::SUCCESS) {
149 IAM_LOGE("Off fail:%{public}d", static_cast<int32_t>(code));
150 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
151 }
152 return nullptr;
153 }
154
Start(napi_env env,napi_callback_info info)155 napi_value Start(napi_env env, napi_callback_info info)
156 {
157 IAM_LOGI("start");
158 AuthInstanceV9 *authInstance;
159 napi_status ret = UnwrapAuthInstanceV9(env, info, &authInstance);
160 if (ret != napi_ok) {
161 IAM_LOGE("UnwrapAuthInstanceV9 fail:%{public}d", ret);
162 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
163 return nullptr;
164 }
165 UserAuthResultCode code = authInstance->Start(env, info);
166 if (code != UserAuthResultCode::SUCCESS) {
167 IAM_LOGE("Start fail:%{public}d", static_cast<int32_t>(code));
168 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
169 }
170 return nullptr;
171 }
172
Cancel(napi_env env,napi_callback_info info)173 napi_value Cancel(napi_env env, napi_callback_info info)
174 {
175 IAM_LOGI("start");
176 AuthInstanceV9 *authInstance;
177 napi_status ret = UnwrapAuthInstanceV9(env, info, &authInstance);
178 if (ret != napi_ok) {
179 IAM_LOGE("UnwrapAuthInstanceV9 fail:%{public}d", ret);
180 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
181 return nullptr;
182 }
183 UserAuthResultCode code = authInstance->Cancel(env, info);
184 if (code != UserAuthResultCode::SUCCESS) {
185 IAM_LOGE("Cancel fail:%{public}d", static_cast<int32_t>(code));
186 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
187 }
188 return nullptr;
189 }
190
AuthInstanceV9Class(napi_env env)191 napi_value AuthInstanceV9Class(napi_env env)
192 {
193 napi_value result = nullptr;
194 napi_property_descriptor clzDes[] = {
195 DECLARE_NAPI_FUNCTION("on", UserAuth::On),
196 DECLARE_NAPI_FUNCTION("off", UserAuth::Off),
197 DECLARE_NAPI_FUNCTION("start", UserAuth::Start),
198 DECLARE_NAPI_FUNCTION("cancel", UserAuth::Cancel),
199 };
200 NAPI_CALL(env, napi_define_class(env, "AuthInstace", NAPI_AUTO_LENGTH, AuthInstanceV9Constructor, nullptr,
201 sizeof(clzDes) / sizeof(napi_property_descriptor), clzDes, &result));
202 return result;
203 }
204
GetAuthInstanceV9(napi_env env,napi_callback_info info)205 napi_value GetAuthInstanceV9(napi_env env, napi_callback_info info)
206 {
207 IAM_LOGI("start");
208 napi_value authInstanceV9;
209 napi_status ret = napi_new_instance(env, AuthInstanceV9Class(env), 0, nullptr, &authInstanceV9);
210 if (ret != napi_ok) {
211 IAM_LOGE("napi_new_instance fail:%{public}d", ret);
212 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
213 return nullptr;
214 }
215 AuthInstanceV9 *authInstance;
216 ret = napi_unwrap(env, authInstanceV9, reinterpret_cast<void **>(&authInstance));
217 if (ret != napi_ok) {
218 IAM_LOGE("napi_unwrap fail");
219 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
220 return nullptr;
221 }
222 if (authInstance == nullptr) {
223 IAM_LOGE("authInstanceV9 is null");
224 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
225 return nullptr;
226 }
227 UserAuthResultCode code = authInstance->Init(env, info);
228 if (code != UserAuthResultCode::SUCCESS) {
229 IAM_LOGE("Init fail:%{public}d", static_cast<int32_t>(code));
230 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
231 return nullptr;
232 }
233 return authInstanceV9;
234 }
235
UnwrapAuthInstanceV10(napi_env env,napi_callback_info info,UserAuthInstanceV10 ** authInstanceV10)236 napi_status UnwrapAuthInstanceV10(napi_env env, napi_callback_info info, UserAuthInstanceV10 **authInstanceV10)
237 {
238 napi_value thisVar = nullptr;
239 size_t argc = ARGS_ONE;
240 napi_value argv[ARGS_ONE] = {nullptr};
241 napi_status ret = napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
242 if (ret != napi_ok) {
243 IAM_LOGE("napi_get_cb_info fail");
244 return ret;
245 }
246 ret = napi_unwrap(env, thisVar, reinterpret_cast<void **>(authInstanceV10));
247 if (ret != napi_ok) {
248 IAM_LOGE("napi_unwrap fail");
249 return ret;
250 }
251 if (*authInstanceV10 == nullptr) {
252 IAM_LOGE("authInstanceV9 is null");
253 return napi_generic_failure;
254 }
255 return ret;
256 }
257
OnV10(napi_env env,napi_callback_info info)258 napi_value OnV10(napi_env env, napi_callback_info info)
259 {
260 IAM_LOGI("start");
261 UserAuthInstanceV10 *authInstance = nullptr;
262 napi_status ret = UnwrapAuthInstanceV10(env, info, &authInstance);
263 if (ret != napi_ok) {
264 IAM_LOGE("UnwrapAuthInstanceV10 fail:%{public}d", ret);
265 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
266 return nullptr;
267 }
268 UserAuthResultCode code = authInstance->On(env, info);
269 if (code != UserAuthResultCode::SUCCESS) {
270 IAM_LOGE("On fail:%{public}d", static_cast<int32_t>(code));
271 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
272 }
273 return nullptr;
274 }
275
OffV10(napi_env env,napi_callback_info info)276 napi_value OffV10(napi_env env, napi_callback_info info)
277 {
278 IAM_LOGI("start");
279 UserAuthInstanceV10 *authInstance = nullptr;
280 napi_status ret = UnwrapAuthInstanceV10(env, info, &authInstance);
281 if (ret != napi_ok) {
282 IAM_LOGE("UnwrapAuthInstanceV10 fail:%{public}d", ret);
283 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
284 return nullptr;
285 }
286 UserAuthResultCode code = authInstance->Off(env, info);
287 if (code != UserAuthResultCode::SUCCESS) {
288 IAM_LOGE("Off fail:%{public}d", static_cast<int32_t>(code));
289 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
290 }
291 return nullptr;
292 }
293
StartV10(napi_env env,napi_callback_info info)294 napi_value StartV10(napi_env env, napi_callback_info info)
295 {
296 IAM_LOGI("start");
297 UserAuthInstanceV10 *authInstance = nullptr;
298 napi_status ret = UnwrapAuthInstanceV10(env, info, &authInstance);
299 if (ret != napi_ok) {
300 IAM_LOGE("UnwrapAuthInstanceV10 fail:%{public}d", ret);
301 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
302 return nullptr;
303 }
304 UserAuthResultCode code = authInstance->Start(env, info);
305 if (code != UserAuthResultCode::SUCCESS) {
306 IAM_LOGE("Start fail:%{public}d", static_cast<int32_t>(code));
307 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
308 }
309 return nullptr;
310 }
311
CancelV10(napi_env env,napi_callback_info info)312 napi_value CancelV10(napi_env env, napi_callback_info info)
313 {
314 IAM_LOGI("start");
315 UserAuthInstanceV10 *authInstance = nullptr;
316 napi_status ret = UnwrapAuthInstanceV10(env, info, &authInstance);
317 if (ret != napi_ok) {
318 IAM_LOGE("UnwrapAuthInstanceV10 fail:%{public}d", ret);
319 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
320 return nullptr;
321 }
322 UserAuthResultCode code = authInstance->Cancel(env, info);
323 if (code != UserAuthResultCode::SUCCESS) {
324 IAM_LOGE("Cancel fail:%{public}d", static_cast<int32_t>(code));
325 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
326 }
327 return nullptr;
328 }
329
UserAuthInstanceV10Constructor(napi_env env,napi_callback_info info)330 napi_value UserAuthInstanceV10Constructor(napi_env env, napi_callback_info info)
331 {
332 IAM_LOGI("start");
333 std::unique_ptr<UserAuthInstanceV10> userAuthInstanceV10 {new (std::nothrow) UserAuthInstanceV10(env)};
334 if (userAuthInstanceV10 == nullptr) {
335 IAM_LOGE("userAuthInstanceV10 is nullptr");
336 return nullptr;
337 }
338
339 napi_value thisVar = nullptr;
340 size_t argc = ARGS_TWO;
341 napi_value argv[ARGS_TWO] = {nullptr};
342 NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
343 NAPI_CALL(env, napi_wrap(env, thisVar, userAuthInstanceV10.get(),
344 [](napi_env env, void *data, void *hint) {
345 UserAuthInstanceV10 *userAuthInstanceV10 = static_cast<UserAuthInstanceV10 *>(data);
346 if (userAuthInstanceV10 != nullptr) {
347 delete userAuthInstanceV10;
348 }
349 },
350 nullptr, nullptr));
351 userAuthInstanceV10.release();
352 return thisVar;
353 }
354
UserAuthInstanceV10Class(napi_env env)355 napi_value UserAuthInstanceV10Class(napi_env env)
356 {
357 napi_value result = nullptr;
358 napi_property_descriptor clzDes[] = {
359 DECLARE_NAPI_FUNCTION("on", UserAuth::OnV10),
360 DECLARE_NAPI_FUNCTION("off", UserAuth::OffV10),
361 DECLARE_NAPI_FUNCTION("start", UserAuth::StartV10),
362 DECLARE_NAPI_FUNCTION("cancel", UserAuth::CancelV10),
363 };
364 NAPI_CALL(env, napi_define_class(env, "UserAuthInstance", NAPI_AUTO_LENGTH, UserAuthInstanceV10Constructor, nullptr,
365 sizeof(clzDes) / sizeof(napi_property_descriptor), clzDes, &result));
366 return result;
367 }
368
UnwrapAuthWidgetMgrV10(napi_env env,napi_callback_info info,UserAuthWidgetMgr ** authWidgetMgrV10)369 napi_status UnwrapAuthWidgetMgrV10(napi_env env, napi_callback_info info, UserAuthWidgetMgr **authWidgetMgrV10)
370 {
371 napi_value thisVar = nullptr;
372 size_t argc = ARGS_ONE;
373 napi_value argv[ARGS_ONE] = {nullptr};
374 napi_status ret = napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
375 if (ret != napi_ok) {
376 IAM_LOGE("napi_get_cb_info fail");
377 return ret;
378 }
379 ret = napi_unwrap(env, thisVar, reinterpret_cast<void **>(authWidgetMgrV10));
380 if (ret != napi_ok) {
381 IAM_LOGE("napi_unwrap fail");
382 return ret;
383 }
384 if (*authWidgetMgrV10 == nullptr) {
385 IAM_LOGE("authWidgetMgr is null");
386 return napi_generic_failure;
387 }
388 return ret;
389 }
390
WidgetOn(napi_env env,napi_callback_info info)391 napi_value WidgetOn(napi_env env, napi_callback_info info)
392 {
393 IAM_LOGI("widgetOn");
394 UserAuthWidgetMgr *authWidgetMgr = nullptr;
395 napi_status ret = UnwrapAuthWidgetMgrV10(env, info, &authWidgetMgr);
396 if (ret != napi_ok) {
397 IAM_LOGE("UnwrapAuthWidgetMgrV10 fail:%{public}d", ret);
398 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
399 return nullptr;
400 }
401 UserAuthResultCode code = authWidgetMgr->On(env, info);
402 if (code != UserAuthResultCode::SUCCESS) {
403 IAM_LOGE("widgetOn fail:%{public}d", static_cast<int32_t>(code));
404 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
405 }
406 return nullptr;
407 }
408
WidgetOff(napi_env env,napi_callback_info info)409 napi_value WidgetOff(napi_env env, napi_callback_info info)
410 {
411 IAM_LOGI("widgetOff");
412 UserAuthWidgetMgr *authWidgetMgr = nullptr;
413 napi_status ret = UnwrapAuthWidgetMgrV10(env, info, &authWidgetMgr);
414 if (ret != napi_ok) {
415 IAM_LOGE("UnwrapAuthWidgetMgrV10 fail:%{public}d", ret);
416 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
417 return nullptr;
418 }
419 UserAuthResultCode code = authWidgetMgr->Off(env, info);
420 if (code != UserAuthResultCode::SUCCESS) {
421 IAM_LOGE("widgetOff fail:%{public}d", static_cast<int32_t>(code));
422 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
423 }
424 return nullptr;
425 }
426
VerifyNoticeParam(const std::string & eventData)427 static bool VerifyNoticeParam(const std::string &eventData)
428 {
429 auto json = nlohmann::json::parse(eventData.c_str(), nullptr, false);
430 if (json.is_null() || json.is_discarded()) {
431 IAM_LOGE("Notice data is invalid json object");
432 return false;
433 }
434
435 if (json.find(NOTICE_EVENT_TYPE) == json.end() || !json[NOTICE_EVENT_TYPE].is_string()) {
436 IAM_LOGE("Invalid event type exist in notice data");
437 return false;
438 }
439
440 if (json.find(NOTICE_PAYLOAD) == json.end() ||
441 json[NOTICE_PAYLOAD].find(NOTICE_PAYLOAD_TYPE) == json[NOTICE_PAYLOAD].end() ||
442 !json[NOTICE_PAYLOAD][NOTICE_PAYLOAD_TYPE].is_array()) {
443 IAM_LOGE("Invalid payload exist in notice data");
444 return false;
445 }
446 IAM_LOGI("valid notice parameter");
447 return true;
448 }
449
ResultOfSendNotice(napi_env env,UserAuthResultCode errCode)450 napi_value ResultOfSendNotice(napi_env env, UserAuthResultCode errCode)
451 {
452 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, errCode));
453 return nullptr;
454 }
455
SendNotice(napi_env env,napi_callback_info info)456 napi_value SendNotice(napi_env env, napi_callback_info info)
457 {
458 IAM_LOGI("start SendNotice");
459 UserAuthResultCode errCode = UserAuthResultCode::SUCCESS;
460
461 napi_value argv[ARGS_TWO];
462 size_t argc = ARGS_TWO;
463 napi_status ret = napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
464 if (ret != napi_ok) {
465 IAM_LOGE("napi_get_cb_info fail:%{public}d", ret);
466 return ResultOfSendNotice(env, UserAuthResultCode::GENERAL_ERROR);
467 }
468 if (argc != ARGS_TWO) {
469 IAM_LOGE("invalid param, argc:%{public}zu", argc);
470 return ResultOfSendNotice(env, UserAuthResultCode::OHOS_INVALID_PARAM);
471 }
472
473 NoticeType noticeType = NoticeType::WIDGET_NOTICE;
474 int32_t noticeType_value = 0;
475 ret = UserAuthNapiHelper::GetInt32Value(env, argv[PARAM0], noticeType_value);
476 if (ret != napi_ok) {
477 IAM_LOGE("GetStrValue fail:%{public}d", ret);
478 return ResultOfSendNotice(env, UserAuthResultCode::OHOS_INVALID_PARAM);
479 }
480 IAM_LOGI("recv SendNotice noticeType:%{public}d", noticeType_value);
481
482 if (noticeType_value != WIDGET_NOTICE) {
483 return ResultOfSendNotice(env, UserAuthResultCode::OHOS_INVALID_PARAM);
484 }
485
486 std::string eventData = UserAuthNapiHelper::GetStringFromValueUtf8(env, argv[PARAM1]);
487 IAM_LOGI("recv SendNotice eventData:%{public}s", eventData.c_str());
488 if (!VerifyNoticeParam(eventData)) {
489 IAM_LOGE("Invalid notice parameter");
490 return ResultOfSendNotice(env, UserAuthResultCode::OHOS_INVALID_PARAM);
491 }
492
493 int32_t result = UserAuthClientImpl::Instance().Notice(noticeType, eventData);
494 if (result != ResultCode::SUCCESS) {
495 errCode = UserAuthResultCode(UserAuthNapiHelper::GetResultCodeV10(result));
496 IAM_LOGE("SendNotice fail. result: %{public}d, errCode: %{public}d", result, errCode);
497 return ResultOfSendNotice(env, errCode);
498 }
499 IAM_LOGI("end SendNotice");
500 return nullptr;
501 }
502
UserAuthWidgetMgrV10Constructor(napi_env env,napi_callback_info info)503 napi_value UserAuthWidgetMgrV10Constructor(napi_env env, napi_callback_info info)
504 {
505 IAM_LOGI("start");
506 std::unique_ptr<UserAuthWidgetMgr> userAuthWidgetMgrV10 {new (std::nothrow) UserAuthWidgetMgr(env)};
507 if (userAuthWidgetMgrV10 == nullptr) {
508 IAM_LOGE("userAuthWidgetMgrV10 is nullptr");
509 return nullptr;
510 }
511
512 napi_value thisVar = nullptr;
513 size_t argc = ARGS_ONE;
514 napi_value argv[ARGS_ONE] = {nullptr};
515 NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
516 NAPI_CALL(env, napi_wrap(env, thisVar, userAuthWidgetMgrV10.get(),
517 [](napi_env env, void *data, void *hint) {
518 UserAuthWidgetMgr *userAuthWidgetMgrV10 = static_cast<UserAuthWidgetMgr *>(data);
519 if (userAuthWidgetMgrV10 != nullptr) {
520 delete userAuthWidgetMgrV10;
521 }
522 },
523 nullptr, nullptr));
524 userAuthWidgetMgrV10.release();
525 return thisVar;
526 }
527
UserAuthWidgetMgrV10Class(napi_env env)528 napi_value UserAuthWidgetMgrV10Class(napi_env env)
529 {
530 napi_value result = nullptr;
531 napi_property_descriptor clzDes[] = {
532 DECLARE_NAPI_FUNCTION("on", UserAuth::WidgetOn),
533 DECLARE_NAPI_FUNCTION("off", UserAuth::WidgetOff),
534 };
535 NAPI_CALL(env, napi_define_class(env, "UserAuthWidgetMgr", NAPI_AUTO_LENGTH, UserAuthWidgetMgrV10Constructor,
536 nullptr, sizeof(clzDes) / sizeof(napi_property_descriptor), clzDes, &result));
537 return result;
538 }
539
GetUserAuthInstanceV10(napi_env env,napi_callback_info info)540 napi_value GetUserAuthInstanceV10(napi_env env, napi_callback_info info)
541 {
542 IAM_LOGI("start");
543 napi_value userAuthInstanceV10;
544 napi_status ret = napi_new_instance(env, UserAuthInstanceV10Class(env), 0, nullptr, &userAuthInstanceV10);
545 if (ret != napi_ok) {
546 IAM_LOGE("napi_new_instance fail:%{public}d", ret);
547 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
548 return nullptr;
549 }
550 UserAuthInstanceV10 *userAuthInstance = nullptr;
551 ret = napi_unwrap(env, userAuthInstanceV10, reinterpret_cast<void **>(&userAuthInstance));
552 if (ret != napi_ok) {
553 IAM_LOGE("napi_unwrap fail");
554 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
555 return nullptr;
556 }
557 if (userAuthInstance == nullptr) {
558 IAM_LOGE("userAuthInstanceV10 is null");
559 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
560 return nullptr;
561 }
562 UserAuthResultCode code = userAuthInstance->Init(env, info);
563 if (code != UserAuthResultCode::SUCCESS) {
564 IAM_LOGE("Init fail:%{public}d", static_cast<int32_t>(code));
565 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
566 return nullptr;
567 }
568
569 IAM_LOGE("GetUserAuthInstanceV10 SUCCESS");
570 return userAuthInstanceV10;
571 }
572
GetUserAuthWidgetMgrV10(napi_env env,napi_callback_info info)573 napi_value GetUserAuthWidgetMgrV10(napi_env env, napi_callback_info info)
574 {
575 IAM_LOGI("start");
576 napi_value userAuthWidgetMgrV10;
577 napi_status ret = napi_new_instance(env, UserAuthWidgetMgrV10Class(env), 0, nullptr, &userAuthWidgetMgrV10);
578 if (ret != napi_ok) {
579 IAM_LOGE("napi_new_instance fail:%{public}d", ret);
580 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
581 return nullptr;
582 }
583 UserAuthWidgetMgr *userAuthWidgetMgr = nullptr;
584 ret = napi_unwrap(env, userAuthWidgetMgrV10, reinterpret_cast<void **>(&userAuthWidgetMgr));
585 if (ret != napi_ok) {
586 IAM_LOGE("napi_unwrap fail");
587 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
588 return nullptr;
589 }
590 if (userAuthWidgetMgr == nullptr) {
591 IAM_LOGE("userAuthWidgetMgr is null");
592 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, UserAuthResultCode::GENERAL_ERROR));
593 return nullptr;
594 }
595 UserAuthResultCode code = userAuthWidgetMgr->Init(env, info);
596 if (code != UserAuthResultCode::SUCCESS) {
597 IAM_LOGE("Init fail:%{public}d", static_cast<int32_t>(code));
598 napi_throw(env, UserAuthNapiHelper::GenerateBusinessErrorV9(env, code));
599 return nullptr;
600 }
601 IAM_LOGI("end");
602 return userAuthWidgetMgrV10;
603 }
604
Auth(napi_env env,napi_callback_info info)605 napi_value Auth(napi_env env, napi_callback_info info)
606 {
607 IAM_LOGI("start");
608 return UserAuthImpl::Auth(env, info);
609 }
610
Execute(napi_env env,napi_callback_info info)611 napi_value Execute(napi_env env, napi_callback_info info)
612 {
613 IAM_LOGI("start");
614 return UserAuthImpl::Execute(env, info);
615 }
616
CancelAuth(napi_env env,napi_callback_info info)617 napi_value CancelAuth(napi_env env, napi_callback_info info)
618 {
619 IAM_LOGI("start");
620 return UserAuthImpl::CancelAuth(env, info);
621 }
622
AuthTrustLevelConstructor(napi_env env)623 napi_value AuthTrustLevelConstructor(napi_env env)
624 {
625 napi_value authTrustLevel = nullptr;
626 napi_value atl1 = nullptr;
627 napi_value atl2 = nullptr;
628 napi_value atl3 = nullptr;
629 napi_value atl4 = nullptr;
630 NAPI_CALL(env, napi_create_object(env, &authTrustLevel));
631 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthTrustLevel::ATL1), &atl1));
632 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthTrustLevel::ATL2), &atl2));
633 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthTrustLevel::ATL3), &atl3));
634 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthTrustLevel::ATL4), &atl4));
635 NAPI_CALL(env, napi_set_named_property(env, authTrustLevel, "ATL1", atl1));
636 NAPI_CALL(env, napi_set_named_property(env, authTrustLevel, "ATL2", atl2));
637 NAPI_CALL(env, napi_set_named_property(env, authTrustLevel, "ATL3", atl3));
638 NAPI_CALL(env, napi_set_named_property(env, authTrustLevel, "ATL4", atl4));
639 return authTrustLevel;
640 }
641
ResultCodeConstructor(napi_env env)642 napi_value ResultCodeConstructor(napi_env env)
643 {
644 napi_value resultCode = nullptr;
645 napi_value success = nullptr;
646 napi_value fail = nullptr;
647 napi_value generalError = nullptr;
648 napi_value canceled = nullptr;
649 napi_value timeout = nullptr;
650 napi_value typeNotSupport = nullptr;
651 napi_value trustLevelNotSupport = nullptr;
652 napi_value busy = nullptr;
653 napi_value invalidParameters = nullptr;
654 napi_value locked = nullptr;
655 napi_value notEnrolled = nullptr;
656 napi_value canceledFromWidget = nullptr;
657 NAPI_CALL(env, napi_create_object(env, &resultCode));
658 NAPI_CALL(env, napi_create_int32(env, ResultCode::SUCCESS, &success));
659 NAPI_CALL(env, napi_create_int32(env, ResultCode::FAIL, &fail));
660 NAPI_CALL(env, napi_create_int32(env, ResultCode::GENERAL_ERROR, &generalError));
661 NAPI_CALL(env, napi_create_int32(env, ResultCode::CANCELED, &canceled));
662 NAPI_CALL(env, napi_create_int32(env, ResultCode::TIMEOUT, &timeout));
663 NAPI_CALL(env, napi_create_int32(env, ResultCode::TYPE_NOT_SUPPORT, &typeNotSupport));
664 NAPI_CALL(env, napi_create_int32(env, ResultCode::TRUST_LEVEL_NOT_SUPPORT, &trustLevelNotSupport));
665 NAPI_CALL(env, napi_create_int32(env, ResultCode::BUSY, &busy));
666 NAPI_CALL(env, napi_create_int32(env, ResultCode::INVALID_PARAMETERS, &invalidParameters));
667 NAPI_CALL(env, napi_create_int32(env, ResultCode::LOCKED, &locked));
668 NAPI_CALL(env, napi_create_int32(env, ResultCode::NOT_ENROLLED, ¬Enrolled));
669 NAPI_CALL(env, napi_create_int32(env, ResultCode::CANCELED_FROM_WIDGET, &canceledFromWidget));
670 NAPI_CALL(env, napi_set_named_property(env, resultCode, "SUCCESS", success));
671 NAPI_CALL(env, napi_set_named_property(env, resultCode, "FAIL", fail));
672 NAPI_CALL(env, napi_set_named_property(env, resultCode, "GENERAL_ERROR", generalError));
673 NAPI_CALL(env, napi_set_named_property(env, resultCode, "CANCELED", canceled));
674 NAPI_CALL(env, napi_set_named_property(env, resultCode, "TIMEOUT", timeout));
675 NAPI_CALL(env, napi_set_named_property(env, resultCode, "TYPE_NOT_SUPPORT", typeNotSupport));
676 NAPI_CALL(env, napi_set_named_property(env, resultCode, "TRUST_LEVEL_NOT_SUPPORT", trustLevelNotSupport));
677 NAPI_CALL(env, napi_set_named_property(env, resultCode, "BUSY", busy));
678 NAPI_CALL(env, napi_set_named_property(env, resultCode, "INVALID_PARAMETERS", invalidParameters));
679 NAPI_CALL(env, napi_set_named_property(env, resultCode, "LOCKED", locked));
680 NAPI_CALL(env, napi_set_named_property(env, resultCode, "NOT_ENROLLED", notEnrolled));
681 NAPI_CALL(env, napi_set_named_property(env, resultCode, "CANCELED_FROM_WIDGET", canceledFromWidget));
682 return resultCode;
683 }
684
UserAuthResultCodeConstructor(napi_env env)685 napi_value UserAuthResultCodeConstructor(napi_env env)
686 {
687 napi_value resultCode = nullptr;
688 napi_value success = nullptr;
689 napi_value fail = nullptr;
690 napi_value generalError = nullptr;
691 napi_value canceled = nullptr;
692 napi_value timeout = nullptr;
693 napi_value typeNotSupport = nullptr;
694 napi_value trustLevelNotSupport = nullptr;
695 napi_value busy = nullptr;
696 napi_value locked = nullptr;
697 napi_value notEnrolled = nullptr;
698 napi_value canceledFromWidget = nullptr;
699 NAPI_CALL(env, napi_create_object(env, &resultCode));
700 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(UserAuthResultCode::SUCCESS), &success));
701 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(UserAuthResultCode::FAIL), &fail));
702 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(UserAuthResultCode::GENERAL_ERROR), &generalError));
703 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(UserAuthResultCode::CANCELED), &canceled));
704 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(UserAuthResultCode::TIMEOUT), &timeout));
705 NAPI_CALL(env, napi_create_int32(env,
706 static_cast<int32_t>(UserAuthResultCode::TYPE_NOT_SUPPORT), &typeNotSupport));
707 NAPI_CALL(env, napi_create_int32(env,
708 static_cast<int32_t>(UserAuthResultCode::TRUST_LEVEL_NOT_SUPPORT), &trustLevelNotSupport));
709 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(UserAuthResultCode::BUSY), &busy));
710 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(UserAuthResultCode::LOCKED), &locked));
711 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(UserAuthResultCode::NOT_ENROLLED), ¬Enrolled));
712 NAPI_CALL(env, napi_create_int32(env,
713 static_cast<int32_t>(UserAuthResultCode::CANCELED_FROM_WIDGET), &canceledFromWidget));
714 NAPI_CALL(env, napi_set_named_property(env, resultCode, "SUCCESS", success));
715 NAPI_CALL(env, napi_set_named_property(env, resultCode, "FAIL", fail));
716 NAPI_CALL(env, napi_set_named_property(env, resultCode, "GENERAL_ERROR", generalError));
717 NAPI_CALL(env, napi_set_named_property(env, resultCode, "CANCELED", canceled));
718 NAPI_CALL(env, napi_set_named_property(env, resultCode, "TIMEOUT", timeout));
719 NAPI_CALL(env, napi_set_named_property(env, resultCode, "TYPE_NOT_SUPPORT", typeNotSupport));
720 NAPI_CALL(env, napi_set_named_property(env, resultCode, "TRUST_LEVEL_NOT_SUPPORT", trustLevelNotSupport));
721 NAPI_CALL(env, napi_set_named_property(env, resultCode, "BUSY", busy));
722 NAPI_CALL(env, napi_set_named_property(env, resultCode, "LOCKED", locked));
723 NAPI_CALL(env, napi_set_named_property(env, resultCode, "NOT_ENROLLED", notEnrolled));
724 NAPI_CALL(env, napi_set_named_property(env, resultCode, "CANCELED_FROM_WIDGET", canceledFromWidget));
725 return resultCode;
726 }
727
AuthenticationResultConstructor(napi_env env)728 napi_value AuthenticationResultConstructor(napi_env env)
729 {
730 napi_value resultCode = nullptr;
731 napi_value noSupport = nullptr;
732 napi_value success = nullptr;
733 napi_value compareFailure = nullptr;
734 napi_value canceled = nullptr;
735 napi_value timeout = nullptr;
736 napi_value cameraFail = nullptr;
737 napi_value busy = nullptr;
738 napi_value invalidParameters = nullptr;
739 napi_value locked = nullptr;
740 napi_value notEnrolled = nullptr;
741 napi_value generalError = nullptr;
742 NAPI_CALL(env, napi_create_object(env, &resultCode));
743 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthenticationResult::NO_SUPPORT), &noSupport));
744 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthenticationResult::SUCCESS), &success));
745 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthenticationResult::COMPARE_FAILURE),
746 &compareFailure));
747 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthenticationResult::CANCELED), &canceled));
748 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthenticationResult::TIMEOUT), &timeout));
749 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthenticationResult::CAMERA_FAIL), &cameraFail));
750 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthenticationResult::BUSY), &busy));
751 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthenticationResult::INVALID_PARAMETERS),
752 &invalidParameters));
753 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthenticationResult::LOCKED), &locked));
754 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthenticationResult::NOT_ENROLLED), ¬Enrolled));
755 NAPI_CALL(env, napi_create_int32(env, static_cast<int32_t>(AuthenticationResult::GENERAL_ERROR), &generalError));
756 NAPI_CALL(env, napi_set_named_property(env, resultCode, "NO_SUPPORT", noSupport));
757 NAPI_CALL(env, napi_set_named_property(env, resultCode, "SUCCESS", success));
758 NAPI_CALL(env, napi_set_named_property(env, resultCode, "COMPARE_FAILURE", compareFailure));
759 NAPI_CALL(env, napi_set_named_property(env, resultCode, "CANCELED", canceled));
760 NAPI_CALL(env, napi_set_named_property(env, resultCode, "TIMEOUT", timeout));
761 NAPI_CALL(env, napi_set_named_property(env, resultCode, "CAMERA_FAIL", cameraFail));
762 NAPI_CALL(env, napi_set_named_property(env, resultCode, "BUSY", busy));
763 NAPI_CALL(env, napi_set_named_property(env, resultCode, "INVALID_PARAMETERS", invalidParameters));
764 NAPI_CALL(env, napi_set_named_property(env, resultCode, "LOCKED", locked));
765 NAPI_CALL(env, napi_set_named_property(env, resultCode, "NOT_ENROLLED", notEnrolled));
766 NAPI_CALL(env, napi_set_named_property(env, resultCode, "GENERAL_ERROR", generalError));
767 return resultCode;
768 }
769
FaceTipsCodeConstructor(napi_env env)770 napi_value FaceTipsCodeConstructor(napi_env env)
771 {
772 napi_value faceTipsCode = nullptr;
773 napi_value faceAuthTipTooBright = nullptr;
774 napi_value faceAuthTipTooDark = nullptr;
775 napi_value faceAuthTipTooClose = nullptr;
776 napi_value faceAuthTipTooFar = nullptr;
777 napi_value faceAuthTipTooHigh = nullptr;
778 napi_value faceAuthTipTooLow = nullptr;
779 napi_value faceAuthTipTooRight = nullptr;
780 napi_value faceAuthTipTooLeft = nullptr;
781 napi_value faceAuthTipTooMuchMotion = nullptr;
782 napi_value faceAuthTipPoorGaze = nullptr;
783 napi_value faceAuthTipNotDetected = nullptr;
784 NAPI_CALL(env, napi_create_object(env, &faceTipsCode));
785 NAPI_CALL(env, napi_create_int32(env, FaceTipsCode::FACE_AUTH_TIP_TOO_BRIGHT, &faceAuthTipTooBright));
786 NAPI_CALL(env, napi_create_int32(env, FaceTipsCode::FACE_AUTH_TIP_TOO_DARK, &faceAuthTipTooDark));
787 NAPI_CALL(env, napi_create_int32(env, FaceTipsCode::FACE_AUTH_TIP_TOO_CLOSE, &faceAuthTipTooClose));
788 NAPI_CALL(env, napi_create_int32(env, FaceTipsCode::FACE_AUTH_TIP_TOO_FAR, &faceAuthTipTooFar));
789 NAPI_CALL(env, napi_create_int32(env, FaceTipsCode::FACE_AUTH_TIP_TOO_HIGH, &faceAuthTipTooHigh));
790 NAPI_CALL(env, napi_create_int32(env, FaceTipsCode::FACE_AUTH_TIP_TOO_LOW, &faceAuthTipTooLow));
791 NAPI_CALL(env, napi_create_int32(env, FaceTipsCode::FACE_AUTH_TIP_TOO_RIGHT, &faceAuthTipTooRight));
792 NAPI_CALL(env, napi_create_int32(env, FaceTipsCode::FACE_AUTH_TIP_TOO_LEFT, &faceAuthTipTooLeft));
793 NAPI_CALL(env, napi_create_int32(env, FaceTipsCode::FACE_AUTH_TIP_TOO_MUCH_MOTION, &faceAuthTipTooMuchMotion));
794 NAPI_CALL(env, napi_create_int32(env, FaceTipsCode::FACE_AUTH_TIP_POOR_GAZE, &faceAuthTipPoorGaze));
795 NAPI_CALL(env, napi_create_int32(env, FaceTipsCode::FACE_AUTH_TIP_NOT_DETECTED, &faceAuthTipNotDetected));
796 NAPI_CALL(env, napi_set_named_property(env, faceTipsCode, "FACE_AUTH_TIP_TOO_BRIGHT", faceAuthTipTooBright));
797 NAPI_CALL(env, napi_set_named_property(env, faceTipsCode, "FACE_AUTH_TIP_TOO_DARK", faceAuthTipTooDark));
798 NAPI_CALL(env, napi_set_named_property(env, faceTipsCode, "FACE_AUTH_TIP_TOO_CLOSE", faceAuthTipTooClose));
799 NAPI_CALL(env, napi_set_named_property(env, faceTipsCode, "FACE_AUTH_TIP_TOO_FAR", faceAuthTipTooFar));
800 NAPI_CALL(env, napi_set_named_property(env, faceTipsCode, "FACE_AUTH_TIP_TOO_HIGH", faceAuthTipTooHigh));
801 NAPI_CALL(env, napi_set_named_property(env, faceTipsCode, "FACE_AUTH_TIP_TOO_LOW", faceAuthTipTooLow));
802 NAPI_CALL(env, napi_set_named_property(env, faceTipsCode, "FACE_AUTH_TIP_TOO_RIGHT", faceAuthTipTooRight));
803 NAPI_CALL(env, napi_set_named_property(env, faceTipsCode, "FACE_AUTH_TIP_TOO_LEFT", faceAuthTipTooLeft));
804 NAPI_CALL(env, napi_set_named_property(env, faceTipsCode,
805 "FACE_AUTH_TIP_TOO_MUCH_MOTION", faceAuthTipTooMuchMotion));
806 NAPI_CALL(env, napi_set_named_property(env, faceTipsCode, "FACE_AUTH_TIP_POOR_GAZE", faceAuthTipPoorGaze));
807 NAPI_CALL(env, napi_set_named_property(env, faceTipsCode, "FACE_AUTH_TIP_NOT_DETECTED", faceAuthTipNotDetected));
808 return faceTipsCode;
809 }
810
FingerprintTipsConstructorForKits(napi_env env)811 napi_value FingerprintTipsConstructorForKits(napi_env env)
812 {
813 napi_value fingerprintTips = nullptr;
814 napi_value fingerprintTipGood = nullptr;
815 napi_value fingerprintTipImagerDirty = nullptr;
816 napi_value fingerprintTipInsufficient = nullptr;
817 napi_value fingerprintTipPartial = nullptr;
818 napi_value fingerprintTipTooFast = nullptr;
819 napi_value fingerprintTipTooSlow = nullptr;
820 NAPI_CALL(env, napi_create_object(env, &fingerprintTips));
821 NAPI_CALL(env, napi_create_int32(env, FingerprintTips::FINGERPRINT_AUTH_TIP_GOOD, &fingerprintTipGood));
822 NAPI_CALL(env, napi_create_int32(env, FingerprintTips::FINGERPRINT_AUTH_TIP_IMAGER_DIRTY,
823 &fingerprintTipImagerDirty));
824 NAPI_CALL(env, napi_create_int32(env, FingerprintTips::FINGERPRINT_AUTH_TIP_INSUFFICIENT,
825 &fingerprintTipInsufficient));
826 NAPI_CALL(env, napi_create_int32(env, FingerprintTips::FINGERPRINT_AUTH_TIP_PARTIAL, &fingerprintTipPartial));
827 NAPI_CALL(env, napi_create_int32(env, FingerprintTips::FINGERPRINT_AUTH_TIP_TOO_FAST, &fingerprintTipTooFast));
828 NAPI_CALL(env, napi_create_int32(env, FingerprintTips::FINGERPRINT_AUTH_TIP_TOO_SLOW, &fingerprintTipTooSlow));
829 NAPI_CALL(env, napi_set_named_property(env, fingerprintTips, "FINGERPRINT_AUTH_TIP_GOOD", fingerprintTipGood));
830 NAPI_CALL(env, napi_set_named_property(env, fingerprintTips,
831 "FINGERPRINT_AUTH_TIP_DIRTY", fingerprintTipImagerDirty));
832 NAPI_CALL(env, napi_set_named_property(env, fingerprintTips,
833 "FINGERPRINT_AUTH_TIP_INSUFFICIENT", fingerprintTipInsufficient));
834 NAPI_CALL(env, napi_set_named_property(env, fingerprintTips,
835 "FINGERPRINT_AUTH_TIP_PARTIAL", fingerprintTipPartial));
836 NAPI_CALL(env, napi_set_named_property(env, fingerprintTips,
837 "FINGERPRINT_AUTH_TIP_TOO_FAST", fingerprintTipTooFast));
838 NAPI_CALL(env, napi_set_named_property(env, fingerprintTips,
839 "FINGERPRINT_AUTH_TIP_TOO_SLOW", fingerprintTipTooSlow));
840 return fingerprintTips;
841 }
842
UserAuthTypeConstructor(napi_env env)843 napi_value UserAuthTypeConstructor(napi_env env)
844 {
845 napi_value userAuthType = nullptr;
846 napi_value pin = nullptr;
847 napi_value face = nullptr;
848 napi_value fingerprint = nullptr;
849 NAPI_CALL(env, napi_create_object(env, &userAuthType));
850 NAPI_CALL(env, napi_create_int32(env, AuthType::PIN, &pin));
851 NAPI_CALL(env, napi_create_int32(env, AuthType::FACE, &face));
852 NAPI_CALL(env, napi_create_int32(env, AuthType::FINGERPRINT, &fingerprint));
853 NAPI_CALL(env, napi_set_named_property(env, userAuthType, "PIN", pin));
854 NAPI_CALL(env, napi_set_named_property(env, userAuthType, "FACE", face));
855 NAPI_CALL(env, napi_set_named_property(env, userAuthType, "FINGERPRINT", fingerprint));
856 return userAuthType;
857 }
858
NoticeTypeConstructor(napi_env env)859 napi_value NoticeTypeConstructor(napi_env env)
860 {
861 napi_value noticeType = nullptr;
862 napi_value widget_notice = nullptr;
863 NAPI_CALL(env, napi_create_object(env, ¬iceType));
864 NAPI_CALL(env, napi_create_int32(env, NoticeType::WIDGET_NOTICE, &widget_notice));
865 NAPI_CALL(env, napi_set_named_property(env, noticeType, "WIDGET_NOTICE", widget_notice));
866 return noticeType;
867 }
868
WindowModeTypeConstructor(napi_env env)869 napi_value WindowModeTypeConstructor(napi_env env)
870 {
871 napi_value windowModeType = nullptr;
872 napi_value dialog_box = nullptr;
873 napi_value fullscreen = nullptr;
874 NAPI_CALL(env, napi_create_object(env, &windowModeType));
875 NAPI_CALL(env, napi_create_int32(env, WindowModeType::DIALOG_BOX, &dialog_box));
876 NAPI_CALL(env, napi_create_int32(env, WindowModeType::FULLSCREEN, &fullscreen));
877 NAPI_CALL(env, napi_set_named_property(env, windowModeType, "DIALOG_BOX", dialog_box));
878 NAPI_CALL(env, napi_set_named_property(env, windowModeType, "FULLSCREEN", fullscreen));
879 return windowModeType;
880 }
881
GetCtor(napi_env env)882 napi_value GetCtor(napi_env env)
883 {
884 IAM_LOGI("start");
885 napi_value cons = nullptr;
886 napi_property_descriptor clzDes[] = {
887 DECLARE_NAPI_FUNCTION("getVersion", UserAuth::GetVersion),
888 DECLARE_NAPI_FUNCTION("getAvailableStatus", UserAuth::GetAvailableStatus),
889 DECLARE_NAPI_FUNCTION("auth", UserAuth::Auth),
890 DECLARE_NAPI_FUNCTION("cancelAuth", UserAuth::CancelAuth),
891 };
892 NAPI_CALL(env, napi_define_class(env, "UserAuth", NAPI_AUTO_LENGTH, UserAuthServiceConstructor, nullptr,
893 sizeof(clzDes) / sizeof(napi_property_descriptor), clzDes, &cons));
894 return cons;
895 }
896
GetCtorForApi6(napi_env env)897 napi_value GetCtorForApi6(napi_env env)
898 {
899 napi_value cons = nullptr;
900 napi_property_descriptor clzDes[] = {
901 DECLARE_NAPI_FUNCTION("execute", UserAuth::Execute),
902 };
903 NAPI_CALL(env, napi_define_class(env, "UserAuth", NAPI_AUTO_LENGTH, UserAuthServiceConstructor, nullptr,
904 sizeof(clzDes) / sizeof(napi_property_descriptor), clzDes, &cons));
905 return cons;
906 }
907
ConstructorForApi6(napi_env env,napi_callback_info info)908 napi_value ConstructorForApi6(napi_env env, napi_callback_info info)
909 {
910 napi_value userAuthForApi6 = nullptr;
911 NAPI_CALL(env, napi_new_instance(env, GetCtorForApi6(env), 0, nullptr, &userAuthForApi6));
912 return userAuthForApi6;
913 }
914
UserAuthInit(napi_env env,napi_value exports)915 napi_value UserAuthInit(napi_env env, napi_value exports)
916 {
917 IAM_LOGI("start");
918 napi_status status;
919 napi_property_descriptor exportFuncs[] = {
920 DECLARE_NAPI_FUNCTION("getAuthenticator", UserAuth::ConstructorForApi6),
921 DECLARE_NAPI_FUNCTION("getAvailableStatus", UserAuth::GetAvailableStatusV9),
922 DECLARE_NAPI_FUNCTION("getAuthInstance", UserAuth::GetAuthInstanceV9),
923 DECLARE_NAPI_FUNCTION("getUserAuthInstance", UserAuth::GetUserAuthInstanceV10),
924 DECLARE_NAPI_FUNCTION("getUserAuthWidgetMgr", UserAuth::GetUserAuthWidgetMgrV10),
925 DECLARE_NAPI_FUNCTION("sendNotice", UserAuth::SendNotice),
926 };
927 status = napi_define_properties(env, exports,
928 sizeof(exportFuncs) / sizeof(napi_property_descriptor), exportFuncs);
929 if (status != napi_ok) {
930 IAM_LOGE("napi_define_properties failed");
931 NAPI_CALL(env, status);
932 }
933 status = napi_set_named_property(env, exports, "UserAuth", GetCtor(env));
934 if (status != napi_ok) {
935 IAM_LOGE("napi_set_named_property failed");
936 NAPI_CALL(env, status);
937 }
938 return exports;
939 }
940
EnumExport(napi_env env,napi_value exports)941 napi_value EnumExport(napi_env env, napi_value exports)
942 {
943 napi_property_descriptor descriptors[] = {
944 DECLARE_NAPI_PROPERTY("AuthTrustLevel", AuthTrustLevelConstructor(env)),
945 DECLARE_NAPI_PROPERTY("ResultCode", ResultCodeConstructor(env)),
946 DECLARE_NAPI_PROPERTY("UserAuthResultCode", UserAuthResultCodeConstructor(env)),
947 DECLARE_NAPI_PROPERTY("FingerprintTips", FingerprintTipsConstructorForKits(env)),
948 DECLARE_NAPI_PROPERTY("UserAuthType", UserAuthTypeConstructor(env)),
949 DECLARE_NAPI_PROPERTY("FaceTips", FaceTipsCodeConstructor(env)),
950 DECLARE_NAPI_PROPERTY("AuthenticationResult", AuthenticationResultConstructor(env)),
951 //add
952 DECLARE_NAPI_PROPERTY("NoticeType", NoticeTypeConstructor(env)),
953 DECLARE_NAPI_PROPERTY("WindowModeType", WindowModeTypeConstructor(env)),
954 };
955 NAPI_CALL(env, napi_define_properties(env, exports,
956 sizeof(descriptors) / sizeof(napi_property_descriptor), descriptors));
957 return exports;
958 }
959
ModuleInit(napi_env env,napi_value exports)960 napi_value ModuleInit(napi_env env, napi_value exports)
961 {
962 napi_value val = UserAuthInit(env, exports);
963 return EnumExport(env, val);
964 }
965 } // namespace
966
RegisterModule(void)967 extern "C" __attribute__((constructor)) void RegisterModule(void)
968 {
969 napi_module module = {
970 .nm_version = 1,
971 .nm_flags = 0,
972 .nm_filename = nullptr,
973 .nm_register_func = ModuleInit,
974 .nm_modname = "userIAM.userAuth",
975 .nm_priv = nullptr,
976 .reserved = {}
977 };
978 napi_module_register(&module);
979 }
980 } // namespace UserAuth
981 } // namespace UserIam
982 } // namespace OHOS
983