1 /* 2 * Copyright (c) 2021-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 OS_ACCOUNT_SERVICES_ACCOUNTMGR_INCLUDE_OSACCOUNT_OS_ACCOUNT_CONTROL_FILE_MANAGER_H 17 #define OS_ACCOUNT_SERVICES_ACCOUNTMGR_INCLUDE_OSACCOUNT_OS_ACCOUNT_CONTROL_FILE_MANAGER_H 18 19 #include <memory> 20 #include <mutex> 21 #include "ios_account_control.h" 22 #include "os_account_database_operator.h" 23 #include "os_account_file_operator.h" 24 #include "os_account_photo_operator.h" 25 namespace OHOS { 26 namespace AccountSA { 27 28 bool GetValidAccountID(const std::string& dirName, std::int32_t& accountID); 29 30 class OsAccountControlFileManager : public IOsAccountControl { 31 public: 32 OsAccountControlFileManager(); 33 virtual ~OsAccountControlFileManager(); 34 void Init() override; 35 ErrCode GetOsAccountList(std::vector<OsAccountInfo> &osAccountList) override; 36 ErrCode GetOsAccountInfoById(const int id, OsAccountInfo &osAccountInfo) override; 37 ErrCode GetConstraintsByType(const OsAccountType type, std::vector<std::string> &constraints) override; 38 ErrCode InsertOsAccount(OsAccountInfo &osAccountInfo) override; 39 ErrCode DelOsAccount(const int id) override; 40 ErrCode UpdateOsAccount(OsAccountInfo &osAccountInfo) override; 41 ErrCode GetMaxCreatedOsAccountNum(int &maxCreatedOsAccountNum) override; 42 ErrCode GetSerialNumber(int64_t &serialNumber) override; 43 ErrCode GetAllowCreateId(int &id) override; 44 ErrCode IsOsAccountExists(const int id, bool &isExists) override; 45 ErrCode GetPhotoById(const int id, std::string &photo) override; 46 ErrCode SetPhotoById(const int id, const std::string &photo) override; 47 ErrCode GetIsMultiOsAccountEnable(bool &isMultiOsAccountEnable) override; 48 ErrCode CheckConstraintsList(const std::vector<std::string> &constraints, 49 bool &isExists, bool &isOverSize) override; 50 ErrCode IsAllowedCreateAdmin(bool &isAllowedCreateAdmin) override; 51 52 ErrCode GetCreatedOsAccountNumFromDatabase(const std::string& storeID, 53 int &createdOsAccountNum) override; 54 ErrCode GetSerialNumberFromDatabase(const std::string& storeID, 55 int64_t &serialNumber) override; 56 ErrCode GetMaxAllowCreateIdFromDatabase(const std::string& storeID, int &id) override; 57 ErrCode GetOsAccountFromDatabase(const std::string& storeID, 58 const int id, OsAccountInfo& osAccountInfo) override; 59 ErrCode GetOsAccountListFromDatabase(const std::string& storeID, 60 std::vector<OsAccountInfo>& osAccountList) override; 61 62 ErrCode RemoveOAConstraintsInfo(const int32_t id) override; 63 ErrCode IsFromBaseOAConstraintsList(const int32_t id, const std::string constraint, bool &isExits) override; 64 ErrCode IsFromGlobalOAConstraintsList(const int32_t id, const int32_t deviceOwnerId, 65 const std::string constraint, std::vector<ConstraintSourceTypeInfo> &globalSourceList) override; 66 ErrCode IsFromSpecificOAConstraintsList(const int32_t id, const int32_t deviceOwnerId, 67 const std::string constraint, std::vector<ConstraintSourceTypeInfo> &specificSourceList) override; 68 ErrCode GetGlobalOAConstraintsList(std::vector<std::string> &constraintsList) override; 69 ErrCode GetSpecificOAConstraintsList(const int32_t id, std::vector<std::string> &constraintsList) override; 70 ErrCode UpdateBaseOAConstraints(const std::string& idStr, 71 const std::vector<std::string>& ConstraintStr, bool isAdd) override; 72 ErrCode UpdateGlobalOAConstraints(const std::string& idStr, 73 const std::vector<std::string>& ConstraintStr, bool isAdd) override; 74 ErrCode UpdateSpecificOAConstraints(const std::string& idStr, 75 const std::string& targetIdStr, const std::vector<std::string>& ConstraintStr, bool isAdd) override; 76 ErrCode GetDeviceOwnerId(int32_t &deviceOwnerId) override; 77 ErrCode UpdateDeviceOwnerId(const int32_t deviceOwnerId) override; 78 79 private: 80 ErrCode UpdateAccountList(const std::string& idStr, bool isAdd); 81 ErrCode GetAccountListFromFile(Json& accountListJson); 82 ErrCode SaveAccountListToFile(const Json& accountListJson); 83 ErrCode SaveAccountListToFileAndDataBase(const Json& accountListJson); 84 void BuildAndSaveAccountListJsonFile(const std::vector<std::string>& accounts); 85 void RecoverAccountListJsonFile(); 86 void BuildAndSaveBaseOAConstraintsJsonFile(); 87 void BuildAndSaveGlobalOAConstraintsJsonFile(); 88 void BuildAndSaveSpecificOAConstraintsJsonFile(); 89 void GlobalConstraintsDataOperate(const std::string& idStr, 90 const std::vector<std::string>& ConstraintStr, bool isAdd, Json &globalOAConstraintsJson); 91 void SpecificConstraintsDataOperate(const std::string& idStr, const std::string& targetIdStr, 92 const std::vector<std::string>& ConstraintStr, bool isAdd, Json& userPrivateConstraintsDataJson); 93 94 ErrCode GetBaseOAConstraintsFromFile(Json &baseOAConstraintsJson); 95 ErrCode GetGlobalOAConstraintsFromFile(Json &globalOAConstraintsJson); 96 ErrCode GetSpecificOAConstraintsFromFile(Json &specificOAConstraintsJson); 97 ErrCode SaveBaseOAConstraintsToFile(const Json &baseOAConstraints); 98 ErrCode SaveGlobalOAConstraintsToFile(const Json &globalOAConstraints); 99 ErrCode SaveSpecificOAConstraintsToFile(const Json &specificOAConstraints); 100 101 ErrCode RemoveOABaseConstraintsInfo(const int32_t id); 102 ErrCode RemoveOAGlobalConstraintsInfo(const int32_t id); 103 ErrCode RemoveOASpecificConstraintsInfo(const int32_t id); 104 105 private: 106 std::shared_ptr<AccountFileOperator> accountFileOperator_; 107 std::shared_ptr<OsAccountDatabaseOperator> osAccountDataBaseOperator_; 108 std::shared_ptr<OsAccountFileOperator> osAccountFileOperator_; 109 std::shared_ptr<OsAccountPhotoOperator> osAccountPhotoOperator_; 110 std::mutex accountListFileLock_; 111 std::mutex baseOAConstraintsFileLock_; 112 std::mutex globalOAConstraintsFileLock_; 113 std::mutex specificOAConstraintsFileLock_; 114 }; 115 } // namespace AccountSA 116 } // namespace OHOS 117 118 #endif // OS_ACCOUNT_SERVICES_ACCOUNTMGR_INCLUDE_OSACCOUNT_OS_ACCOUNT_CONTROL_FILE_MANAGER_H 119