1686862fbSopenharmony_ci/* 2686862fbSopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 3686862fbSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4686862fbSopenharmony_ci * you may not use this file except in compliance with the License. 5686862fbSopenharmony_ci * You may obtain a copy of the License at 6686862fbSopenharmony_ci * 7686862fbSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8686862fbSopenharmony_ci * 9686862fbSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10686862fbSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11686862fbSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12686862fbSopenharmony_ci * See the License for the specific language governing permissions and 13686862fbSopenharmony_ci * limitations under the License. 14686862fbSopenharmony_ci */ 15686862fbSopenharmony_ci 16686862fbSopenharmony_ci#ifndef DISTRIBUTED_SCHED_PERMISSION_H 17686862fbSopenharmony_ci#define DISTRIBUTED_SCHED_PERMISSION_H 18686862fbSopenharmony_ci 19686862fbSopenharmony_ci#include <stdint.h> 20686862fbSopenharmony_ci#include <string> 21686862fbSopenharmony_ci 22686862fbSopenharmony_ci#include "distributed_sched_interface.h" 23686862fbSopenharmony_ci#include "nlohmann/json.hpp" 24686862fbSopenharmony_ci#include "single_instance.h" 25686862fbSopenharmony_ci 26686862fbSopenharmony_cinamespace OHOS { 27686862fbSopenharmony_cinamespace DistributedSchedule { 28686862fbSopenharmony_cistruct GroupInfo { 29686862fbSopenharmony_ci std::string groupName; 30686862fbSopenharmony_ci std::string groupId; 31686862fbSopenharmony_ci std::string groupOwner; 32686862fbSopenharmony_ci int32_t groupType; 33686862fbSopenharmony_ci int32_t groupVisibility; 34686862fbSopenharmony_ci 35686862fbSopenharmony_ci GroupInfo() : groupName(""), groupId(""), groupOwner(""), groupType(0), groupVisibility(0) {} 36686862fbSopenharmony_ci}; 37686862fbSopenharmony_ci 38686862fbSopenharmony_civoid from_json(const nlohmann::json& jsonObject, GroupInfo& groupInfo); 39686862fbSopenharmony_ci 40686862fbSopenharmony_ciclass DistributedSchedPermission { 41686862fbSopenharmony_ci DECLARE_SINGLE_INSTANCE(DistributedSchedPermission); 42686862fbSopenharmony_ci 43686862fbSopenharmony_cipublic: 44686862fbSopenharmony_ci using AccountInfo = IDistributedSched::AccountInfo; 45686862fbSopenharmony_ci 46686862fbSopenharmony_ci int32_t CheckSendResultPermission(const AAFwk::Want& want, const CallerInfo& callerInfo, 47686862fbSopenharmony_ci const AccountInfo& accountInfo, AppExecFwk::AbilityInfo& targetAbility); 48686862fbSopenharmony_ci int32_t CheckStartPermission(const AAFwk::Want& want, const CallerInfo& callerInfo, 49686862fbSopenharmony_ci const AccountInfo& accountInfo, AppExecFwk::AbilityInfo& targetAbility, bool isSameBundle = true); 50686862fbSopenharmony_ci int32_t CheckGetCallerPermission(const AAFwk::Want& want, const CallerInfo& callerInfo, 51686862fbSopenharmony_ci const AccountInfo& accountInfo, AppExecFwk::AbilityInfo& targetAbility); 52686862fbSopenharmony_ci bool IsFoundationCall() const; 53686862fbSopenharmony_ci bool IsSceneBoardCall() const; 54686862fbSopenharmony_ci int32_t CheckPermission(uint32_t accessToken, const std::string& permissionName) const; 55686862fbSopenharmony_ci int32_t CheckPermissionAll(uint32_t accessToken, const std::string& permissionName) const; 56686862fbSopenharmony_ci int32_t GetAccountInfo(const std::string& remoteNetworkId, const CallerInfo& callerInfo, 57686862fbSopenharmony_ci AccountInfo& accountInfo); 58686862fbSopenharmony_ci bool GetTargetAbility(const AAFwk::Want& want, AppExecFwk::AbilityInfo& targetAbility, 59686862fbSopenharmony_ci bool needQueryExtension = false) const; 60686862fbSopenharmony_ci void MarkUriPermission(OHOS::AAFwk::Want& want, uint32_t accessToken); 61686862fbSopenharmony_ci void RemoveRemoteObjectFromWant(std::shared_ptr<AAFwk::Want> want) const; 62686862fbSopenharmony_ci 63686862fbSopenharmony_ciprivate: 64686862fbSopenharmony_ci bool GetOsAccountData(AccountInfo& dmsAccountInfo); 65686862fbSopenharmony_ci bool CheckDstSameAccount(const std::string& dstNetworkId, const AccountInfo& dmsAccountInfo, 66686862fbSopenharmony_ci const CallerInfo& callerInfo); 67686862fbSopenharmony_ci bool CheckAclList(const std::string& dstNetworkId, const AccountInfo& dmsAccountInfo, 68686862fbSopenharmony_ci const CallerInfo& callerInfo); 69686862fbSopenharmony_ci bool GetRelatedGroups(const std::string& udid, const std::vector<std::string>& bundleNames, 70686862fbSopenharmony_ci AccountInfo& accountInfo); 71686862fbSopenharmony_ci bool ParseGroupInfos(const std::string& returnGroupStr, std::vector<GroupInfo>& groupInfos); 72686862fbSopenharmony_ci bool VerifyPermission(uint32_t accessToken, const std::string& permissionName) const; 73686862fbSopenharmony_ci bool CheckAccountAccessPermission(const CallerInfo& callerInfo, 74686862fbSopenharmony_ci const AccountInfo& accountInfo, const std::string& targetBundleName); 75686862fbSopenharmony_ci bool CheckComponentAccessPermission(const AppExecFwk::AbilityInfo& targetAbility, 76686862fbSopenharmony_ci const CallerInfo& callerInfo, const AccountInfo& accountInfo, const AAFwk::Want& want) const; 77686862fbSopenharmony_ci bool CheckMigrateStartCtrlPer(const AppExecFwk::AbilityInfo& targetAbility, 78686862fbSopenharmony_ci const CallerInfo& callerInfo, const AAFwk::Want& want, bool isSameBundle = true); 79686862fbSopenharmony_ci bool CheckCollaborateStartCtrlPer(const AppExecFwk::AbilityInfo& targetAbility, 80686862fbSopenharmony_ci const CallerInfo& callerInfo, const AAFwk::Want& want) const; 81686862fbSopenharmony_ci bool CheckStartControlPermission(const AppExecFwk::AbilityInfo& targetAbility, 82686862fbSopenharmony_ci const CallerInfo& callerInfo, const AAFwk::Want& want, bool isSameBundle = true); 83686862fbSopenharmony_ci bool CheckBackgroundPermission(const AppExecFwk::AbilityInfo& targetAbility, 84686862fbSopenharmony_ci const CallerInfo& callerInfo, const AAFwk::Want& want, bool needCheckApiVersion) const; 85686862fbSopenharmony_ci bool CheckMinApiVersion(const AppExecFwk::AbilityInfo& targetAbility, int32_t apiVersion) const; 86686862fbSopenharmony_ci bool CheckDeviceSecurityLevel(const std::string& srcDeviceId, const std::string& dstDeviceId) const; 87686862fbSopenharmony_ci int32_t GetDeviceSecurityLevel(const std::string& udid) const; 88686862fbSopenharmony_ci bool CheckTargetAbilityVisible(const AppExecFwk::AbilityInfo& targetAbility, const CallerInfo& callerInfo) const; 89686862fbSopenharmony_ci bool IsDistributedFile(const std::string& path) const; 90686862fbSopenharmony_ci}; 91686862fbSopenharmony_ci} // namespace DistributedSchedule 92686862fbSopenharmony_ci} // namespace OHOS 93686862fbSopenharmony_ci#endif // DISTRIBUTED_SCHED_PERMISSION_H