• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2024 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 #ifndef OS_ACCOUNT_INTERFACES_KITS_NAPI_OSACCOUNT_INCLUDE_NAPI_OS_ACCOUNT_H
17 #define OS_ACCOUNT_INTERFACES_KITS_NAPI_OSACCOUNT_INCLUDE_NAPI_OS_ACCOUNT_H
18 
19 #include <uv.h>
20 #include <map>
21 #include <mutex>
22 #include <vector>
23 #include "os_account_info.h"
24 #include "os_account_manager.h"
25 #include "account_log_wrapper.h"
26 #include "napi/native_api.h"
27 #include "napi/native_node_api.h"
28 #include "napi_account_common.h"
29 
30 namespace OHOS {
31 namespace AccountJsKit {
32 using namespace OHOS::AccountSA;
33 struct SubscribeCBInfo;
34 
35 class SubscriberPtr : public OsAccountSubscriber {
36 public:
37     explicit SubscriberPtr(const OsAccountSubscribeInfo &subscribeInfo);
38     ~SubscriberPtr() override;
39 
40     void OnAccountsChanged(const int &id) override;
41     void OnAccountsSwitch(const int &newId, const int &oldId) override;
42 
43     void SetEnv(const napi_env &env);
44     void SetCallbackRef(const napi_ref &ref);
45 
46 private:
47     void OnAccountsSubNotify(const int &newId, const int &oldId);
48     napi_env env_ = nullptr;
49     napi_ref ref_ = nullptr;
50 };
51 
52 struct QueryOAByIdAsyncContext : public CommonAsyncContext {
53     int id = -1;
54     OsAccountInfo osAccountInfos;
55 };
56 
57 struct RemoveOAAsyncContext : public CommonAsyncContext {
58     int id = 0;
59 };
60 
61 struct SetOANameAsyncContext : public CommonAsyncContext {
62     int id = 0;
63     std::string name;
64 };
65 
66 struct SetOAConsAsyncContext : public CommonAsyncContext {
67     int id = 0;
68     bool enable = false;
69     std::vector<std::string> constraints;
70 };
71 
72 struct ActivateOAAsyncContext : public CommonAsyncContext {
73     int id = -1;
74 };
75 
76 struct CreateOAAsyncContext : public CommonAsyncContext {
77     OsAccountType type;
78     std::string name;
79     std::string shortName;
80     std::vector<std::string> disallowedHapList;
81     std::optional<std::vector<std::string>> allowedHapList = std::nullopt;
82     OsAccountInfo osAccountInfos;
83     bool hasShortName = false;
84 };
85 
86 struct CreateOAForDomainAsyncContext : public CommonAsyncContext {
87     OsAccountType type;
88     DomainAccountInfo domainInfo;
89     OsAccountInfo osAccountInfos;
90     CreateOsAccountForDomainOptions domainOptions;
91     ThreadLockInfo *lockInfo;
92 };
93 
94 struct GetOACountAsyncContext : public CommonAsyncContext {
95     unsigned int osAccountsCount = 0;
96 };
97 
98 struct DbDeviceIdAsyncContext : public CommonAsyncContext {
99     std::string deviceId;
100 };
101 
102 struct GetAllConsAsyncContext : public CommonAsyncContext {
103     int id = 0;
104     std::vector<std::string> constraints;
105 };
106 
107 struct GetIdAsyncContext : public CommonAsyncContext {
108     int id = 0;
109 };
110 
111 struct QueryCreateOAAsyncContext : public CommonAsyncContext {
112     std::vector<OsAccountInfo> osAccountInfos;
113 };
114 
115 struct QueryOAConstraintSrcTypeContext : public CommonAsyncContext {
116     int32_t id = 0;
117     std::string constraint;
118     std::vector<ConstraintSourceTypeInfo> constraintSourceTypeInfos;
119 };
120 
121 struct QueryActiveIdsAsyncContext : public CommonAsyncContext {
122     std::vector<int> osAccountIds;
123 };
124 
125 struct GetForegroundOALocalIdAsyncContext : public CommonAsyncContext {
126     int id = 0;
127 };
128 
129 struct GetOAPhotoAsyncContext : public CommonAsyncContext {
130     int id = 0;
131     std::string photo;
132 };
133 
134 struct GetOsAccountNameContext : public CommonAsyncContext {
135     std::string name;
136 };
137 
138 struct CurrentOAAsyncContext : public CommonAsyncContext {
139     OsAccountInfo osAccountInfos;
140 };
141 
142 struct GetIdByUidAsyncContext : public CommonAsyncContext {
143     int id = 0;
144     int uid = 0;
145 };
146 
147 struct GetIdByDomainAsyncContext : public CommonAsyncContext {
148     int id = 0;
149     DomainAccountInfo domainInfo;
150 };
151 
152 struct SetOAPhotoAsyncContext : public CommonAsyncContext {
153     int id = 0;
154     std::string photo;
155 };
156 
157 struct QueryMaxNumAsyncContext : public CommonAsyncContext {
158     uint32_t maxOsAccountNumber = 0;
159     uint32_t maxLoggedInNumber = 0;
160 };
161 
162 struct IsActivedAsyncContext : public CommonAsyncContext {
163     int id = -1;
164     bool isOsAccountActived = false;
165 };
166 
167 struct IsConEnableAsyncContext : public CommonAsyncContext {
168     int id = 0;
169     std::string constraint;
170     bool isConsEnable = false;
171 };
172 
173 struct GetTypeAsyncContext : public CommonAsyncContext {
174     int id = -1;
175     bool withId = false;
176     OsAccountType type;
177 };
178 
179 struct IsMultiEnAsyncContext : public CommonAsyncContext {
180     bool isMultiOAEnable = false;
181 };
182 
183 struct IsVerifiedAsyncContext : public CommonAsyncContext {
184     int id = -1;
185     bool hasAccountId = false;
186     bool IsVerified = false;
187 };
188 
189 struct GetSerialNumIdCBInfo : public CommonAsyncContext {
190     int id = 0;
191     int64_t serialNumber;
192 };
193 
194 struct GetSerialNumForOAInfo : public CommonAsyncContext {
195     int id = 0;
196     int64_t serialNum;
197 };
198 
199 struct IsTestOAInfo : public CommonAsyncContext {
200     bool isTestOsAccount = false;
201 };
202 
203 struct IsMainOAInfo : public CommonAsyncContext {
204     bool isMainOsAccount = false;
205 };
206 
207 struct SubscribeCBInfo : public CommonAsyncContext {
SubscribeCBInfoSubscribeCBInfo208     SubscribeCBInfo(napi_env napiEnv) : CommonAsyncContext(napiEnv) {};
209     OS_ACCOUNT_SUBSCRIBE_TYPE osSubscribeType = OS_ACCOUNT_SUBSCRIBE_TYPE::INVALID_TYPE;
210     std::string name;
211     OsAccountManager *osManager = nullptr;
212     std::shared_ptr<SubscriberPtr> subscriber = nullptr;
213 };
214 
215 struct SubscriberOAWorker : public CommonAsyncContext {
216     int oldId = 0;
217     int newId = 0;
218     napi_ref ref = nullptr;
219     SubscriberPtr *subscriber = nullptr;
220 };
221 
222 struct UnsubscribeCBInfo : public CommonAsyncContext {
UnsubscribeCBInfoUnsubscribeCBInfo223     UnsubscribeCBInfo(napi_env napiEnv) : CommonAsyncContext(napiEnv){};
224     OS_ACCOUNT_SUBSCRIBE_TYPE osSubscribeType = OS_ACCOUNT_SUBSCRIBE_TYPE::INVALID_TYPE;
225     std::string name;
226     OsAccountManager *osManager = nullptr;
227     std::vector<std::shared_ptr<SubscriberPtr>> subscribers;
228 };
229 
230 struct GetOsAccountDomainInfoAsyncContext : public CommonAsyncContext {
231     int32_t id = 0;
232     DomainAccountInfo domainInfo;
233 };
234 
235 struct BindDomainAccountAsyncContext : public CommonAsyncContext {
236     int32_t localID = -1;
237     DomainAccountInfo domainInfo;
238 };
239 
240 napi_value OsAccountInit(napi_env env, napi_value exports);
241 
242 napi_value GetAccountManager(napi_env env, napi_callback_info cbInfo);
243 
244 napi_value OsAccountJsConstructor(napi_env env, napi_callback_info cbinfo);
245 
246 napi_value QueryOsAccountById(napi_env env, napi_callback_info cbInfo);
247 
248 napi_value RemoveOsAccount(napi_env env, napi_callback_info cbInfo);
249 
250 napi_value SetOsAccountName(napi_env env, napi_callback_info cbInfo);
251 
252 napi_value SetOsAccountConstraints(napi_env env, napi_callback_info cbInfo);
253 
254 napi_value ActivateOsAccount(napi_env env, napi_callback_info cbInfo);
255 
256 napi_value DeactivateOsAccount(napi_env env, napi_callback_info cbInfo);
257 
258 napi_value CreateOsAccount(napi_env env, napi_callback_info cbInfo);
259 
260 napi_value CreateOsAccountForDomain(napi_env env, napi_callback_info cbInfo);
261 
262 napi_value GetOsAccountCount(napi_env env, napi_callback_info cbInfo);
263 
264 napi_value GetCreatedOsAccountsCount(napi_env env, napi_callback_info cbInfo);
265 
266 napi_value GetCreatedOsAccountsCountInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
267 
268 napi_value QueryDistributedVirtualDeviceId(napi_env env, napi_callback_info cbInfo);
269 
270 napi_value GetDistributedVirtualDeviceId(napi_env env, napi_callback_info cbInfo);
271 
272 napi_value GetDistributedVirtualDeviceIdInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
273 
274 napi_value GetOsAccountConstraints(napi_env env, napi_callback_info cbInfo);
275 
276 napi_value GetOsAccountAllConstraints(napi_env env, napi_callback_info cbInfo);
277 
278 napi_value GetOsAccountAllConstraintsInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
279 
280 napi_value QueryOsAccountLocalIdFromProcess(napi_env env, napi_callback_info cbInfo);
281 
282 napi_value GetOsAccountLocalIdFromProcess(napi_env env, napi_callback_info cbInfo);
283 
284 napi_value GetOsAccountLocalIdFromProcessInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
285 
286 napi_value QueryAllCreatedOsAccounts(napi_env env, napi_callback_info cbInfo);
287 
288 napi_value GetActivatedOsAccountIds(napi_env env, napi_callback_info cbInfo);
289 
290 napi_value GetForegroundOsAccountLocalId(napi_env env, napi_callback_info cbInfo);
291 
292 napi_value QueryActivatedOsAccountIds(napi_env env, napi_callback_info cbInfo);
293 
294 napi_value QueryActivatedOsAccountIdsInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
295 
296 napi_value GetOsAccountProfilePhoto(napi_env env, napi_callback_info cbInfo);
297 
298 napi_value GetOsAccountName(napi_env env, napi_callback_info cbInfo);
299 
300 napi_value GetCurrentOsAccount(napi_env env, napi_callback_info cbInfo);
301 
302 napi_value QueryCurrentOsAccount(napi_env env, napi_callback_info cbInfo);
303 
304 napi_value QueryCurrentOsAccountInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
305 
306 napi_value GetOsAccountLocalIdFromUid(napi_env env, napi_callback_info cbInfo);
307 
308 napi_value GetOsAccountLocalIdForUid(napi_env env, napi_callback_info cbInfo);
309 
310 napi_value GetOsAccountLocalIdForUidSync(napi_env env, napi_callback_info cbInfo);
311 
312 napi_value GetOsAccountLocalIdFromUidInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
313 
314 napi_value GetBundleIdFromUid(napi_env env, napi_callback_info cbInfo);
315 
316 napi_value GetBundleIdForUidSync(napi_env env, napi_callback_info cbInfo);
317 
318 napi_value GetOsAccountLocalIdFromDomain(napi_env env, napi_callback_info cbInfo);
319 
320 napi_value QueryOsAccountLocalIdFromDomain(napi_env env, napi_callback_info cbInfo);
321 
322 napi_value GetOsAccountLocalIdFromDomainInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
323 
324 napi_value SetOsAccountProfilePhoto(napi_env env, napi_callback_info cbInfo);
325 
326 napi_value QueryMaxOsAccountNumber(napi_env env, napi_callback_info cbInfo);
327 
328 napi_value QueryMaxLoggedInOsAccountNumber(napi_env env, napi_callback_info cbInfo);
329 
330 napi_value QueryOsAccountConstraintSourceTypes(napi_env env, napi_callback_info cbInfo);
331 
332 napi_value IsOsAccountActived(napi_env env, napi_callback_info cbInfo);
333 
334 napi_value CheckOsAccountActivated(napi_env env, napi_callback_info cbInfo);
335 
336 napi_value IsOsAccountConstraintEnable(napi_env env, napi_callback_info cbInfo);
337 
338 napi_value CheckConstraintEnabled(napi_env env, napi_callback_info cbInfo);
339 
340 napi_value GetOsAccountType(napi_env env, napi_callback_info cbInfo);
341 
342 napi_value GetOsAccountTypeFromProcess(napi_env env, napi_callback_info cbInfo);
343 
344 napi_value GetOsAccountTypeFromProcessInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
345 
346 napi_value IsMultiOsAccountEnable(napi_env env, napi_callback_info cbInfo);
347 
348 napi_value CheckMultiOsAccountEnabled(napi_env env, napi_callback_info cbInfo);
349 
350 napi_value InnerIsMultiOsAccountEnable(napi_env env, napi_callback_info cbInfo, bool throwErr);
351 
352 napi_value IsOsAccountVerified(napi_env env, napi_callback_info cbInfo);
353 
354 napi_value CheckOsAccountVerified(napi_env env, napi_callback_info cbInfo);
355 
356 napi_value GetApplicationConstraints(napi_env env, napi_callback_info cbInfo);
357 
358 napi_value QueryOsAccountLocalIdBySerialNumber(napi_env env, napi_callback_info cbInfo);
359 
360 napi_value GetOsAccountLocalIdBySerialNumber(napi_env env, napi_callback_info cbInfo);
361 
362 napi_value GetOsAccountLocalIdBySerialNumberInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
363 
364 napi_value QuerySerialNumberByOsAccountLocalId(napi_env env, napi_callback_info cbInfo);
365 
366 napi_value GetSerialNumberByOsAccountLocalId(napi_env env, napi_callback_info cbInfo);
367 
368 napi_value GetSerialNumberByOsAccountLocalIdInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
369 
370 napi_value IsTestOsAccount(napi_env env, napi_callback_info cbInfo);
371 
372 napi_value CheckOsAccountTestable(napi_env env, napi_callback_info cbInfo);
373 
374 napi_value InnerIsTestOsAccount(napi_env env, napi_callback_info cbInfo, bool throwErr);
375 
376 napi_value IsMainOsAccount(napi_env env, napi_callback_info cbInfo);
377 
378 napi_value Subscribe(napi_env env, napi_callback_info cbInfo);
379 
380 napi_value Unsubscribe(napi_env env, napi_callback_info cbInfo);
381 
382 std::function<void()> OnAccountsSubNotifyTask(const std::shared_ptr<SubscriberOAWorker> &subscriberOAWorkerData);
383 
384 void UnsubscribeSync(napi_env env, UnsubscribeCBInfo *unsubscribeCBInfo);
385 
386 void SetEnumProperty(napi_env env, napi_value dstObj, const int objValue, const char *propName);
387 
388 napi_value IsOsAccountActivated(napi_env env, napi_callback_info cbInfo);
389 
390 napi_value IsOsAccountConstraintEnabled(napi_env env, napi_callback_info cbInfo);
391 
392 napi_value IsOsAccountUnlocked(napi_env env, napi_callback_info cbInfo);
393 
394 napi_value GetEnabledOsAccountConstraints(napi_env env, napi_callback_info cbInfo);
395 
396 napi_value QueryOsAccount(napi_env env, napi_callback_info cbInfo);
397 
398 napi_value GetOsAccountDomainInfo(napi_env env, napi_callback_info cbInfo);
399 
400 napi_value BindDomainAccount(napi_env env, napi_callback_info cbInfo);
401 }  // namespace AccountJsKit
402 }  // namespace OHOS
403 
404 #endif  // OS_ACCOUNT_INTERFACES_KITS_NAPI_OSACCOUNT_INCLUDE_NAPI_OS_ACCOUNT_H
405