• 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     OsAccountInfo osAccountInfos;
82     bool hasShortName = false;
83 };
84 
85 struct CreateOAForDomainAsyncContext : public CommonAsyncContext {
86     OsAccountType type;
87     DomainAccountInfo domainInfo;
88     OsAccountInfo osAccountInfos;
89     CreateOsAccountForDomainOptions domainOptions;
90     ThreadLockInfo *lockInfo;
91 };
92 
93 struct GetOACountAsyncContext : public CommonAsyncContext {
94     unsigned int osAccountsCount = 0;
95 };
96 
97 struct DbDeviceIdAsyncContext : public CommonAsyncContext {
98     std::string deviceId;
99 };
100 
101 struct GetAllConsAsyncContext : public CommonAsyncContext {
102     int id = 0;
103     std::vector<std::string> constraints;
104 };
105 
106 struct GetIdAsyncContext : public CommonAsyncContext {
107     int id = 0;
108 };
109 
110 struct QueryCreateOAAsyncContext : public CommonAsyncContext {
111     std::vector<OsAccountInfo> osAccountInfos;
112 };
113 
114 struct QueryOAConstraintSrcTypeContext : public CommonAsyncContext {
115     int32_t id = 0;
116     std::string constraint;
117     std::vector<ConstraintSourceTypeInfo> constraintSourceTypeInfos;
118 };
119 
120 struct QueryActiveIdsAsyncContext : public CommonAsyncContext {
121     std::vector<int> osAccountIds;
122 };
123 
124 struct GetForegroundOALocalIdAsyncContext : public CommonAsyncContext {
125     int id = 0;
126 };
127 
128 struct GetOAPhotoAsyncContext : public CommonAsyncContext {
129     int id = 0;
130     std::string photo;
131 };
132 
133 struct GetOsAccountNameContext : public CommonAsyncContext {
134     std::string name;
135 };
136 
137 struct CurrentOAAsyncContext : public CommonAsyncContext {
138     OsAccountInfo osAccountInfos;
139 };
140 
141 struct GetIdByUidAsyncContext : public CommonAsyncContext {
142     int id = 0;
143     int uid = 0;
144 };
145 
146 struct GetIdByDomainAsyncContext : public CommonAsyncContext {
147     int id = 0;
148     DomainAccountInfo domainInfo;
149 };
150 
151 struct SetOAPhotoAsyncContext : public CommonAsyncContext {
152     int id = 0;
153     std::string photo;
154 };
155 
156 struct QueryMaxNumAsyncContext : public CommonAsyncContext {
157     uint32_t maxOsAccountNumber = 0;
158     uint32_t maxLoggedInNumber = 0;
159 };
160 
161 struct IsActivedAsyncContext : public CommonAsyncContext {
162     int id = -1;
163     bool isOsAccountActived = false;
164 };
165 
166 struct IsConEnableAsyncContext : public CommonAsyncContext {
167     int id = 0;
168     std::string constraint;
169     bool isConsEnable = false;
170 };
171 
172 struct GetTypeAsyncContext : public CommonAsyncContext {
173     int id = -1;
174     bool withId = false;
175     OsAccountType type;
176 };
177 
178 struct IsMultiEnAsyncContext : public CommonAsyncContext {
179     bool isMultiOAEnable = false;
180 };
181 
182 struct IsVerifiedAsyncContext : public CommonAsyncContext {
183     int id = -1;
184     bool hasAccountId = false;
185     bool IsVerified = false;
186 };
187 
188 struct GetSerialNumIdCBInfo : public CommonAsyncContext {
189     int id = 0;
190     int64_t serialNumber;
191 };
192 
193 struct GetSerialNumForOAInfo : public CommonAsyncContext {
194     int id = 0;
195     int64_t serialNum;
196 };
197 
198 struct IsTestOAInfo : public CommonAsyncContext {
199     bool isTestOsAccount = false;
200 };
201 
202 struct IsMainOAInfo : public CommonAsyncContext {
203     bool isMainOsAccount = false;
204 };
205 
206 struct SubscribeCBInfo : public CommonAsyncContext {
SubscribeCBInfoSubscribeCBInfo207     SubscribeCBInfo(napi_env napiEnv) : CommonAsyncContext(napiEnv) {};
208     OS_ACCOUNT_SUBSCRIBE_TYPE osSubscribeType = OS_ACCOUNT_SUBSCRIBE_TYPE::INVALID_TYPE;
209     std::string name;
210     OsAccountManager *osManager = nullptr;
211     std::shared_ptr<SubscriberPtr> subscriber = nullptr;
212 };
213 
214 struct SubscriberOAWorker : public CommonAsyncContext {
215     int oldId = 0;
216     int newId = 0;
217     napi_ref ref = nullptr;
218     SubscriberPtr *subscriber = nullptr;
219 };
220 
221 struct UnsubscribeCBInfo : public CommonAsyncContext {
UnsubscribeCBInfoUnsubscribeCBInfo222     UnsubscribeCBInfo(napi_env napiEnv) : CommonAsyncContext(napiEnv){};
223     OS_ACCOUNT_SUBSCRIBE_TYPE osSubscribeType = OS_ACCOUNT_SUBSCRIBE_TYPE::INVALID_TYPE;
224     std::string name;
225     OsAccountManager *osManager = nullptr;
226     std::vector<std::shared_ptr<SubscriberPtr>> subscribers;
227 };
228 
229 struct GetOsAccountDomainInfoAsyncContext : public CommonAsyncContext {
230     int32_t id = 0;
231     DomainAccountInfo domainInfo;
232 };
233 
234 napi_value OsAccountInit(napi_env env, napi_value exports);
235 
236 napi_value GetAccountManager(napi_env env, napi_callback_info cbInfo);
237 
238 napi_value OsAccountJsConstructor(napi_env env, napi_callback_info cbinfo);
239 
240 napi_value QueryOsAccountById(napi_env env, napi_callback_info cbInfo);
241 
242 napi_value RemoveOsAccount(napi_env env, napi_callback_info cbInfo);
243 
244 napi_value SetOsAccountName(napi_env env, napi_callback_info cbInfo);
245 
246 napi_value SetOsAccountConstraints(napi_env env, napi_callback_info cbInfo);
247 
248 napi_value ActivateOsAccount(napi_env env, napi_callback_info cbInfo);
249 
250 napi_value DeactivateOsAccount(napi_env env, napi_callback_info cbInfo);
251 
252 napi_value CreateOsAccount(napi_env env, napi_callback_info cbInfo);
253 
254 napi_value CreateOsAccountForDomain(napi_env env, napi_callback_info cbInfo);
255 
256 napi_value GetOsAccountCount(napi_env env, napi_callback_info cbInfo);
257 
258 napi_value GetCreatedOsAccountsCount(napi_env env, napi_callback_info cbInfo);
259 
260 napi_value GetCreatedOsAccountsCountInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
261 
262 napi_value QueryDistributedVirtualDeviceId(napi_env env, napi_callback_info cbInfo);
263 
264 napi_value GetDistributedVirtualDeviceId(napi_env env, napi_callback_info cbInfo);
265 
266 napi_value GetDistributedVirtualDeviceIdInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
267 
268 napi_value GetOsAccountConstraints(napi_env env, napi_callback_info cbInfo);
269 
270 napi_value GetOsAccountAllConstraints(napi_env env, napi_callback_info cbInfo);
271 
272 napi_value GetOsAccountAllConstraintsInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
273 
274 napi_value QueryOsAccountLocalIdFromProcess(napi_env env, napi_callback_info cbInfo);
275 
276 napi_value GetOsAccountLocalIdFromProcess(napi_env env, napi_callback_info cbInfo);
277 
278 napi_value GetOsAccountLocalIdFromProcessInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
279 
280 napi_value QueryAllCreatedOsAccounts(napi_env env, napi_callback_info cbInfo);
281 
282 napi_value GetActivatedOsAccountIds(napi_env env, napi_callback_info cbInfo);
283 
284 napi_value GetForegroundOsAccountLocalId(napi_env env, napi_callback_info cbInfo);
285 
286 napi_value QueryActivatedOsAccountIds(napi_env env, napi_callback_info cbInfo);
287 
288 napi_value QueryActivatedOsAccountIdsInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
289 
290 napi_value GetOsAccountProfilePhoto(napi_env env, napi_callback_info cbInfo);
291 
292 napi_value GetOsAccountName(napi_env env, napi_callback_info cbInfo);
293 
294 napi_value GetCurrentOsAccount(napi_env env, napi_callback_info cbInfo);
295 
296 napi_value QueryCurrentOsAccount(napi_env env, napi_callback_info cbInfo);
297 
298 napi_value QueryCurrentOsAccountInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
299 
300 napi_value GetOsAccountLocalIdFromUid(napi_env env, napi_callback_info cbInfo);
301 
302 napi_value GetOsAccountLocalIdForUid(napi_env env, napi_callback_info cbInfo);
303 
304 napi_value GetOsAccountLocalIdForUidSync(napi_env env, napi_callback_info cbInfo);
305 
306 napi_value GetOsAccountLocalIdFromUidInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
307 
308 napi_value GetBundleIdFromUid(napi_env env, napi_callback_info cbInfo);
309 
310 napi_value GetBundleIdForUidSync(napi_env env, napi_callback_info cbInfo);
311 
312 napi_value GetOsAccountLocalIdFromDomain(napi_env env, napi_callback_info cbInfo);
313 
314 napi_value QueryOsAccountLocalIdFromDomain(napi_env env, napi_callback_info cbInfo);
315 
316 napi_value GetOsAccountLocalIdFromDomainInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
317 
318 napi_value SetOsAccountProfilePhoto(napi_env env, napi_callback_info cbInfo);
319 
320 napi_value QueryMaxOsAccountNumber(napi_env env, napi_callback_info cbInfo);
321 
322 napi_value QueryMaxLoggedInOsAccountNumber(napi_env env, napi_callback_info cbInfo);
323 
324 napi_value QueryOsAccountConstraintSourceTypes(napi_env env, napi_callback_info cbInfo);
325 
326 napi_value IsOsAccountActived(napi_env env, napi_callback_info cbInfo);
327 
328 napi_value CheckOsAccountActivated(napi_env env, napi_callback_info cbInfo);
329 
330 napi_value IsOsAccountConstraintEnable(napi_env env, napi_callback_info cbInfo);
331 
332 napi_value CheckConstraintEnabled(napi_env env, napi_callback_info cbInfo);
333 
334 napi_value GetOsAccountType(napi_env env, napi_callback_info cbInfo);
335 
336 napi_value GetOsAccountTypeFromProcess(napi_env env, napi_callback_info cbInfo);
337 
338 napi_value GetOsAccountTypeFromProcessInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
339 
340 napi_value IsMultiOsAccountEnable(napi_env env, napi_callback_info cbInfo);
341 
342 napi_value CheckMultiOsAccountEnabled(napi_env env, napi_callback_info cbInfo);
343 
344 napi_value InnerIsMultiOsAccountEnable(napi_env env, napi_callback_info cbInfo, bool throwErr);
345 
346 napi_value IsOsAccountVerified(napi_env env, napi_callback_info cbInfo);
347 
348 napi_value CheckOsAccountVerified(napi_env env, napi_callback_info cbInfo);
349 
350 napi_value GetApplicationConstraints(napi_env env, napi_callback_info cbInfo);
351 
352 napi_value QueryOsAccountLocalIdBySerialNumber(napi_env env, napi_callback_info cbInfo);
353 
354 napi_value GetOsAccountLocalIdBySerialNumber(napi_env env, napi_callback_info cbInfo);
355 
356 napi_value GetOsAccountLocalIdBySerialNumberInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
357 
358 napi_value QuerySerialNumberByOsAccountLocalId(napi_env env, napi_callback_info cbInfo);
359 
360 napi_value GetSerialNumberByOsAccountLocalId(napi_env env, napi_callback_info cbInfo);
361 
362 napi_value GetSerialNumberByOsAccountLocalIdInner(napi_env env, napi_callback_info cbInfo, bool throwErr);
363 
364 napi_value IsTestOsAccount(napi_env env, napi_callback_info cbInfo);
365 
366 napi_value CheckOsAccountTestable(napi_env env, napi_callback_info cbInfo);
367 
368 napi_value InnerIsTestOsAccount(napi_env env, napi_callback_info cbInfo, bool throwErr);
369 
370 napi_value IsMainOsAccount(napi_env env, napi_callback_info cbInfo);
371 
372 napi_value Subscribe(napi_env env, napi_callback_info cbInfo);
373 
374 napi_value Unsubscribe(napi_env env, napi_callback_info cbInfo);
375 
376 std::function<void()> OnAccountsSubNotifyTask(const std::shared_ptr<SubscriberOAWorker> &subscriberOAWorkerData);
377 
378 void UnsubscribeSync(napi_env env, UnsubscribeCBInfo *unsubscribeCBInfo);
379 
380 void SetEnumProperty(napi_env env, napi_value dstObj, const int objValue, const char *propName);
381 
382 napi_value IsOsAccountActivated(napi_env env, napi_callback_info cbInfo);
383 
384 napi_value IsOsAccountConstraintEnabled(napi_env env, napi_callback_info cbInfo);
385 
386 napi_value IsOsAccountUnlocked(napi_env env, napi_callback_info cbInfo);
387 
388 napi_value GetEnabledOsAccountConstraints(napi_env env, napi_callback_info cbInfo);
389 
390 napi_value QueryOsAccount(napi_env env, napi_callback_info cbInfo);
391 
392 napi_value GetOsAccountDomainInfo(napi_env env, napi_callback_info cbInfo);
393 }  // namespace AccountJsKit
394 }  // namespace OHOS
395 
396 #endif  // OS_ACCOUNT_INTERFACES_KITS_NAPI_OSACCOUNT_INCLUDE_NAPI_OS_ACCOUNT_H
397