• 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 #include "account_log_wrapper.h"
17 #include "os_account_constants.h"
18 
19 #include "os_account_file_operator.h"
20 namespace OHOS {
21 namespace AccountSA {
OsAccountFileOperator()22 OsAccountFileOperator::OsAccountFileOperator()
23 {
24     accountFileOperator_ = std::make_shared<AccountFileOperator>();
25     isAlreadyInit_ = false;
26     constratinsList_.clear();
27 }
~OsAccountFileOperator()28 OsAccountFileOperator::~OsAccountFileOperator()
29 {}
Init()30 void OsAccountFileOperator::Init()
31 {
32     std::string constraintsConfigStr;
33     if (accountFileOperator_->IsExistFile(Constants::OSACCOUNT_CONSTRAINTS_JSON_PATH)) {
34         accountFileOperator_->GetFileContentByPath(Constants::OSACCOUNT_CONSTRAINTS_JSON_PATH, constraintsConfigStr);
35         constraintsConfig_ = Json::parse(constraintsConfigStr, nullptr, false);
36         isAlreadyInit_ = true;
37     } else {
38         isAlreadyInit_ = false;
39     }
40     std::string constratinsListColloctingStr;
41     if (accountFileOperator_->IsExistFile(Constants::CONSTRAINTS_LIST_JSON_PATH)) {
42         accountFileOperator_->GetFileContentByPath(Constants::CONSTRAINTS_LIST_JSON_PATH, constratinsListColloctingStr);
43         Json constratinsListCollocting = Json::parse(constratinsListColloctingStr, nullptr, false);
44         OHOS::AccountSA::GetDataByType<std::vector<std::string>>(constratinsListCollocting,
45             constratinsListCollocting.end(),
46             Constants::CONSTANS_LITE,
47             constratinsList_,
48             OHOS::AccountSA::JsonType::ARRAY);
49     }
50 }
51 
GetConstraintsByType(const int type,std::vector<std::string> & constratins)52 ErrCode OsAccountFileOperator::GetConstraintsByType(const int type, std::vector<std::string> &constratins)
53 {
54     ACCOUNT_LOGI("OsAccountFileOperator GetConstraintsByType Start");
55     if (!isAlreadyInit_) {
56         return ERR_OSACCOUNT_SERVICE_OS_FILE_GET_CONFIG_ERROR;
57     }
58     std::vector<std::string> typeList;
59     OHOS::AccountSA::GetDataByType<std::vector<std::string>>(
60         constraintsConfig_, constraintsConfig_.end(), Constants::TYPE_LIST, typeList, OHOS::AccountSA::JsonType::ARRAY);
61     if (std::find(typeList.begin(), typeList.end(), std::to_string(type)) == typeList.end()) {
62         ACCOUNT_LOGE("GetConstraintsByType get type error");
63         return ERR_OSACCOUNT_SERVICE_CONTROL_GET_TYPE_ERROR;
64     }
65     Json typeJson;
66     OHOS::AccountSA::GetDataByType<Json>(constraintsConfig_,
67         constraintsConfig_.end(),
68         Constants::USER_CONSTRATINTS_TEMPLATE,
69         typeJson,
70         OHOS::AccountSA::JsonType::OBJECT);
71     constratins.clear();
72     OHOS::AccountSA::GetDataByType<std::vector<std::string>>(
73         typeJson, typeJson.end(), std::to_string(type), constratins, OHOS::AccountSA::JsonType::ARRAY);
74     ACCOUNT_LOGI("OsAccountFileOperator GetConstraintsByType End");
75     return ERR_OK;
76 }
77 
GetIsMultiOsAccountEnable(bool & isMultiOsAccountEnable)78 ErrCode OsAccountFileOperator::GetIsMultiOsAccountEnable(bool &isMultiOsAccountEnable)
79 {
80     if (!isAlreadyInit_) {
81         ACCOUNT_LOGE("GetIsMultiOsAccountEnable not init error");
82         return ERR_OSACCOUNT_SERVICE_OS_FILE_GET_CONFIG_ERROR;
83     }
84     OHOS::AccountSA::GetDataByType<Json>(constraintsConfig_,
85         constraintsConfig_.end(),
86         Constants::IS_MULTI_OS_ACCOUNT_ENABLE,
87         isMultiOsAccountEnable,
88         OHOS::AccountSA::JsonType::BOOLEAN);
89     return ERR_OK;
90 }
91 
IsAllowedCreateAdmin(bool & isAllowedCreateAdmin)92 ErrCode OsAccountFileOperator::IsAllowedCreateAdmin(bool &isAllowedCreateAdmin)
93 {
94     if (!isAlreadyInit_) {
95         ACCOUNT_LOGE("IsAllowedCreateAdmin not init error");
96         return ERR_OSACCOUNT_SERVICE_OS_FILE_GET_CONFIG_ERROR;
97     }
98     OHOS::AccountSA::GetDataByType<Json>(constraintsConfig_,
99         constraintsConfig_.end(),
100         Constants::IS_ALLOWED_CREATE_ADMIN,
101         isAllowedCreateAdmin,
102         OHOS::AccountSA::JsonType::BOOLEAN);
103     return ERR_OK;
104 }
105 
IsConstrarionsInTypeList(const std::vector<std::string> & constrains,bool & isExists)106 ErrCode OsAccountFileOperator::IsConstrarionsInTypeList(const std::vector<std::string> &constrains, bool &isExists)
107 {
108     if (constratinsList_.size() == 0) {
109         ACCOUNT_LOGE("IsConstrarionsInTypeList constratinsList_ zero error");
110         return ERR_OSACCOUNT_SERVICE_OS_FILE_GET_CONSTRATIONS_LITS_ERROR;
111     }
112     isExists = true;
113     for (auto it = constrains.begin(); it != constrains.end(); it++) {
114         if (std::find(constratinsList_.begin(), constratinsList_.end(), *it) == constratinsList_.end()) {
115             isExists = false;
116         }
117     }
118     return ERR_OK;
119 }
120 }  // namespace AccountSA
121 }  // namespace OHOS