• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-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 INTERFACES_KITS_ADMIN_MANAGER_INCLUDE_ADMIN_MANAGER_ADDON_H
17 #define INTERFACES_KITS_ADMIN_MANAGER_INCLUDE_ADMIN_MANAGER_ADDON_H
18 
19 #include "admin_type.h"
20 #include "datetime_manager_proxy.h"
21 #include "edm_errors.h"
22 #include "element_name.h"
23 #include "ent_info.h"
24 #include "enterprise_device_mgr_proxy.h"
25 #include "ienterprise_device_mgr.h"
26 #include "managed_event.h"
27 #include "napi/native_api.h"
28 #include "napi/native_common.h"
29 #include "napi/native_node_api.h"
30 #include "napi_edm_adapter.h"
31 #include "napi_edm_common.h"
32 #include "napi_edm_error.h"
33 #include "want.h"
34 
35 namespace OHOS {
36 namespace EDM {
37 struct AsyncEnableAdminCallbackInfo : AsyncCallbackInfo {
38     OHOS::AppExecFwk::ElementName elementName;
39     EntInfo entInfo;
40     int32_t adminType = 0;
41     int32_t userId = 0;
42 };
43 
44 struct AsyncDisableAdminCallbackInfo : AsyncCallbackInfo {
45     OHOS::AppExecFwk::ElementName elementName;
46     int32_t userId = 0;
47 };
48 
49 struct AsyncDisableSuperAdminCallbackInfo : AsyncCallbackInfo {
50     std::string bundleName;
51 };
52 
53 struct AsyncGetEnterpriseInfoCallbackInfo : AsyncCallbackInfo {
54     OHOS::AppExecFwk::ElementName elementName;
55     EntInfo entInfo;
56 };
57 
58 struct AsyncSetEnterpriseInfoCallbackInfo : AsyncCallbackInfo {
59     OHOS::AppExecFwk::ElementName elementName;
60     EntInfo entInfo;
61 };
62 
63 struct AsyncIsSuperAdminCallbackInfo : AsyncCallbackInfo {
64     std::string bundleName;
65 };
66 
67 struct AsyncIsAdminEnabledCallbackInfo : AsyncCallbackInfo {
68     OHOS::AppExecFwk::ElementName elementName;
69     int32_t userId = 0;
70 };
71 
72 struct AsyncSubscribeManagedEventCallbackInfo : AsyncCallbackInfo {
73     OHOS::AppExecFwk::ElementName elementName;
74     std::vector<uint32_t> managedEvent;
75     bool subscribe = true;
76 };
77 
78 struct AsyncAuthorizeAdminCallbackInfo : AsyncCallbackInfo {
79     OHOS::AppExecFwk::ElementName elementName;
80     std::string bundleName;
81 };
82 
83 struct AsyncGetSuperAdminCallbackInfo : AsyncCallbackInfo {
84     std::string bundleName;
85     std::string abilityName;
86 };
87 
88 struct AsyncGetAdminsCallbackInfo : AdapterAddonData {
89     std::vector<std::shared_ptr<AAFwk::Want>> wants;
90 };
91 
92 class AdminManager {
93 public:
94     static napi_value Init(napi_env env, napi_value exports);
95 
96 private:
97     static napi_value EnableAdmin(napi_env env, napi_callback_info info);
98     static napi_value DisableAdmin(napi_env env, napi_callback_info info);
99     static napi_value DisableSuperAdmin(napi_env env, napi_callback_info info);
100     static napi_value GetEnterpriseInfo(napi_env env, napi_callback_info info);
101     static napi_value SetEnterpriseInfo(napi_env env, napi_callback_info info);
102     static napi_value IsSuperAdmin(napi_env env, napi_callback_info info);
103     static napi_value IsAdminEnabled(napi_env env, napi_callback_info info);
104     static napi_value CreateAdminTypeObject(napi_env env);
105     static napi_value SubscribeManagedEvent(napi_env env, napi_callback_info info);
106     static napi_value UnsubscribeManagedEvent(napi_env env, napi_callback_info info);
107     static napi_value AuthorizeAdmin(napi_env env, napi_callback_info info);
108     static napi_value SubscribeManagedEventSync(napi_env env, napi_callback_info info);
109     static napi_value UnsubscribeManagedEventSync(napi_env env, napi_callback_info info);
110     static napi_value GetSuperAdmin(napi_env env, napi_callback_info info);
111     static napi_value SetDelegatedPolicies(napi_env env, napi_callback_info info);
112     static napi_value GetDelegatedPolicies(napi_env env, napi_callback_info info);
113     static napi_value GetDelegatedBundleNames(napi_env env, napi_callback_info info);
114     static napi_value GetDelegatedPolicies(napi_env env, napi_callback_info info, uint32_t code);
115     static napi_value StartAdminProvision(napi_env env, napi_callback_info info);
116     static napi_value GetAdmins(napi_env env, napi_callback_info info);
117     static napi_value ReplaceSuperAdmin(napi_env env, napi_callback_info info);
118 
119     static void NativeEnableAdmin(napi_env env, void *data);
120     static void NativeDisableSuperAdmin(napi_env env, void *data);
121     static void NativeDisableAdmin(napi_env env, void *data);
122     static void NativeGetEnterpriseInfo(napi_env env, void *data);
123     static void NativeSetEnterpriseInfo(napi_env env, void *data);
124     static void NativeIsSuperAdmin(napi_env env, void *data);
125     static void NativeIsAdminEnabled(napi_env env, void *data);
126     static void NativeSubscribeManagedEvent(napi_env env, void *data);
127     static void NativeGetEnterpriseInfoComplete(napi_env env, napi_status status, void *data);
128     static void NativeAuthorizeAdmin(napi_env env, void *data);
129 
130     static void ConvertEnterpriseInfo(napi_env env, napi_value objEntInfo, EntInfo &entInfo);
131     static bool ParseEnterpriseInfo(napi_env env, EntInfo &enterpriseInfo, napi_value args);
132     static bool ParseManagedEvent(napi_env env, std::vector<uint32_t> &managedEvent, napi_value args);
133     static void CreateAdminTypeObject(napi_env env, napi_value value);
134     static void CreateManagedEventObject(napi_env env, napi_value value);
135 
136     static void NativeGetSuperAdmin(napi_env env, void *data);
137     static void NativeGetSuperAdminComplete(napi_env env, napi_status status, void *data);
138     static void NativeGetAdmins(napi_env env, void *data);
139     static void NativeGetAdminsComplete(napi_env env, napi_status status, void *data);
140     static napi_value ConvertWantToJs(napi_env env, const std::string &bundleName, const std::string &abilityName);
141     static napi_value ConvertWantToJsWithType(napi_env env, std::vector<std::shared_ptr<AAFwk::Want>> &wants);
142 
143     static AdminType ParseAdminType(int32_t type);
144     static bool CheckEnableAdminParamType(napi_env env, size_t argc, napi_value *argv, bool &hasCallback,
145         bool &hasUserId);
146     static napi_value HandleManagedEvent(napi_env env, napi_callback_info info, bool subscribe);
147     static napi_value HandleManagedEventSync(napi_env env, napi_callback_info info, bool subscribe);
148     static int32_t JsAdminTypeToAdminType(int32_t jsAdminType);
149     static int32_t AdminTypeToJsAdminType(int32_t AdminType);
150     static bool CheckByodParams(AppExecFwk::ElementName elementName, const std::string &callerBundleName,
151         int32_t adminType, std::map<std::string, std::string> &parameters);
152 };
153 } // namespace EDM
154 } // namespace OHOS
155 
156 #endif // INTERFACES_KITS_ADMIN_MANAGER_INCLUDE_ADMIN_MANAGER_ADDON_H
157