• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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