1 /* 2 * Copyright (c) 2022 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_edm_error.h" 28 #include "napi_edm_common.h" 29 #include "napi/native_common.h" 30 #include "napi/native_node_api.h" 31 #include "napi/native_api.h" 32 #include "want.h" 33 34 namespace OHOS { 35 namespace EDM { 36 struct AsyncEnableAdminCallbackInfo : AsyncCallbackInfo { 37 OHOS::AppExecFwk::ElementName elementName; 38 EntInfo entInfo; 39 int32_t adminType = 0; 40 int32_t userId = 0; 41 }; 42 43 struct AsyncDisableAdminCallbackInfo : AsyncCallbackInfo { 44 OHOS::AppExecFwk::ElementName elementName; 45 int32_t userId = 0; 46 }; 47 48 struct AsyncDisableSuperAdminCallbackInfo : AsyncCallbackInfo { 49 std::string bundleName; 50 }; 51 52 struct AsyncGetEnterpriseInfoCallbackInfo : AsyncCallbackInfo { 53 OHOS::AppExecFwk::ElementName elementName; 54 EntInfo entInfo; 55 }; 56 57 struct AsyncSetEnterpriseInfoCallbackInfo : AsyncCallbackInfo { 58 OHOS::AppExecFwk::ElementName elementName; 59 EntInfo entInfo; 60 }; 61 62 struct AsyncIsSuperAdminCallbackInfo : AsyncCallbackInfo { 63 std::string bundleName; 64 }; 65 66 struct AsyncIsAdminEnabledCallbackInfo : AsyncCallbackInfo { 67 OHOS::AppExecFwk::ElementName elementName; 68 int32_t userId = 0; 69 }; 70 71 struct AsyncSubscribeManagedEventCallbackInfo : AsyncCallbackInfo { 72 OHOS::AppExecFwk::ElementName elementName; 73 std::vector<uint32_t> managedEvent; 74 bool subscribe = true; 75 }; 76 77 class AdminManager { 78 public: 79 AdminManager(); 80 ~AdminManager() = default; 81 static napi_value Init(napi_env env, napi_value exports); 82 static napi_value EnableAdmin(napi_env env, napi_callback_info info); 83 static napi_value DisableAdmin(napi_env env, napi_callback_info info); 84 static napi_value DisableSuperAdmin(napi_env env, napi_callback_info info); 85 static napi_value GetEnterpriseInfo(napi_env env, napi_callback_info info); 86 static napi_value SetEnterpriseInfo(napi_env env, napi_callback_info info); 87 static napi_value IsSuperAdmin(napi_env env, napi_callback_info info); 88 static napi_value isAdminEnabled(napi_env env, napi_callback_info info); 89 static napi_value CreateAdminTypeObject(napi_env env); 90 static napi_value SubscribeManagedEvent(napi_env env, napi_callback_info info); 91 static napi_value UnsubscribeManagedEvent(napi_env env, napi_callback_info info); 92 93 static void NativeEnableAdmin(napi_env env, void *data); 94 static void NativeDisableSuperAdmin(napi_env env, void *data); 95 static void NativeDisableAdmin(napi_env env, void *data); 96 static void NativeGetEnterpriseInfo(napi_env env, void *data); 97 static void NativeSetEnterpriseInfo(napi_env env, void *data); 98 static void NativeIsSuperAdmin(napi_env env, void *data); 99 static void NativeIsAdminEnabled(napi_env env, void *data); 100 static void NativeSubscribeManagedEvent(napi_env env, void *data); 101 static void NativeGetEnterpriseInfoComplete(napi_env env, napi_status status, void *data); 102 103 static void ConvertEnterpriseInfo(napi_env env, napi_value objEntInfo, EntInfo &entInfo); 104 static bool ParseEnterpriseInfo(napi_env env, EntInfo &enterpriseInfo, napi_value args); 105 static bool ParseManagedEvent(napi_env env, std::vector<uint32_t> &managedEvent, napi_value args); 106 static void CreateAdminTypeObject(napi_env env, napi_value value); 107 static void CreateManagedEventObject(napi_env env, napi_value value); 108 private: 109 static bool checkEnableAdminParamType(napi_env env, size_t argc, 110 napi_value* argv, bool &hasCallback, bool &hasUserId); 111 static bool checkAdminWithUserIdParamType(napi_env env, size_t argc, 112 napi_value* argv, bool &hasCallback, bool &hasUserId); 113 static napi_value HandleManagedEvent(napi_env env, napi_callback_info info, bool subscribe); 114 static std::shared_ptr<EnterpriseDeviceMgrProxy> proxy_; 115 }; 116 } // namespace EDM 117 } // namespace OHOS 118 119 #endif // INTERFACES_KITS_ADMIN_MANAGER_INCLUDE_ADMIN_MANAGER_ADDON_H 120