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