• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 "osaccount_manager_impl.h"
17 #include "os_account_manager.h"
18 #include "account_error_no.h"
19 #include "os_account_info.h"
20 #include "account_log_wrapper.h"
21 
22 namespace OHOS::AccountJsKit {
23     using namespace OHOS::AccountSA;
24 
IsOsAccountConstraintEnabled(char * constraint,int32_t * errCode)25     bool OsAccountManagerImpl::IsOsAccountConstraintEnabled(char *constraint, int32_t *errCode)
26     {
27         int32_t id = 0;
28         bool isConsEnable = false;
29         std::vector<int32_t> ids;
30         *errCode = OsAccountManager::QueryActiveOsAccountIds(ids);
31         if (*errCode != ERR_OK) {
32             ACCOUNT_LOGE("isOsAccountConstraintEnabled Get id failed");
33             return false;
34         }
35         if (ids.empty()) {
36             *errCode = ERR_ACCOUNT_COMMON_INVALID_PARAMETER;
37             ACCOUNT_LOGE("isOsAccountConstraintEnabled No Active OsAccount Ids");
38             return false;
39         }
40         id = ids[0];
41         *errCode = ConvertToJSErrCode(OsAccountManager::CheckOsAccountConstraintEnabled(id, constraint, isConsEnable));
42         return isConsEnable;
43     }
44 
GetOsAccountType(int32_t * errCode)45     int32_t OsAccountManagerImpl::GetOsAccountType(int32_t *errCode)
46     {
47         OsAccountType type;
48         *errCode = ConvertToJSErrCode(OsAccountManager::GetOsAccountTypeFromProcess(type));
49         return type;
50     }
51 
CheckMultiOsAccountEnabled(int32_t * errCode)52     bool OsAccountManagerImpl::CheckMultiOsAccountEnabled(int32_t *errCode)
53     {
54         bool isMultiOAEnable = false;
55         *errCode = ConvertToJSErrCode(OsAccountManager::IsMultiOsAccountEnable(isMultiOAEnable));
56         return isMultiOAEnable;
57     }
58 
GetOsAccountLocalId(int32_t * errCode)59     int32_t OsAccountManagerImpl::GetOsAccountLocalId(int32_t *errCode)
60     {
61         int32_t id = 0;
62         *errCode = ConvertToJSErrCode(OsAccountManager::GetOsAccountLocalIdFromProcess(id));
63         return id;
64     }
65 
GetActivatedOsAccountLocalIds(std::vector<int32_t> & osAccountIds)66     int32_t OsAccountManagerImpl::GetActivatedOsAccountLocalIds(std::vector<int32_t> &osAccountIds)
67     {
68         return ConvertToJSErrCode(OsAccountManager::QueryActiveOsAccountIds(osAccountIds));
69     }
70 
GetOsAccountCount(int32_t * errCode)71     uint32_t OsAccountManagerImpl::GetOsAccountCount(int32_t *errCode)
72     {
73         uint32_t osAccountCount = 0;
74         *errCode = ConvertToJSErrCode(OsAccountManager::GetCreatedOsAccountsCount(osAccountCount));
75         return osAccountCount;
76     }
77 
QueryDistributedVirtualDeviceId(int32_t * errCode)78     char *OsAccountManagerImpl::QueryDistributedVirtualDeviceId(int32_t *errCode)
79     {
80         std::string deviceId;
81         *errCode = ConvertToJSErrCode(OsAccountManager::GetDistributedVirtualDeviceId(deviceId));
82         return MallocCString(deviceId);
83     }
84 
GetSerialNumberForOsAccountLocalId(uint32_t localId,int32_t * errCode)85     int64_t OsAccountManagerImpl::GetSerialNumberForOsAccountLocalId(uint32_t localId, int32_t *errCode)
86     {
87         int64_t serialNum;
88         *errCode = ConvertToJSErrCode(OsAccountManager::GetSerialNumberByOsAccountLocalId(localId, serialNum));
89         return serialNum;
90     }
91 
GetOsAccountLocalIdForSerialNumber(int64_t serialNumber,int32_t * errCode)92     int32_t OsAccountManagerImpl::GetOsAccountLocalIdForSerialNumber(int64_t serialNumber, int32_t *errCode)
93     {
94         int32_t id = 0;
95         *errCode = ConvertToJSErrCode(OsAccountManager::GetOsAccountLocalIdBySerialNumber(serialNumber, id));
96         return id;
97     }
98 
GetOsAccountLocalIdForDomain(char * domain,char * accountName,int32_t * errCode)99     int32_t OsAccountManagerImpl::GetOsAccountLocalIdForDomain(char *domain, char *accountName, int32_t *errCode)
100     {
101         int32_t id = 0;
102         DomainAccountInfo domainInfo;
103         domainInfo.accountId_ = domain;
104         domainInfo.accountName_ = accountName;
105         *errCode = ConvertToJSErrCode(OsAccountManager::GetOsAccountLocalIdFromDomain(domainInfo, id));
106         return id;
107     }
108 
GetOsAccountLocalIdForUid(int32_t uid,int32_t * errCode)109     int32_t OsAccountManagerImpl::GetOsAccountLocalIdForUid(int32_t uid, int32_t *errCode)
110     {
111         int32_t id = 0;
112         *errCode = ConvertToJSErrCode(OsAccountManager::GetOsAccountLocalIdFromUid(uid, id));
113         return id;
114     }
115 
GetOsAccountName(int32_t * errCode)116     char *OsAccountManagerImpl::GetOsAccountName(int32_t *errCode)
117     {
118         std::string name;
119         *errCode = ConvertToJSErrCode(OsAccountManager::GetOsAccountName(name));
120         return MallocCString(name);
121     }
122 
IsOsAccountUnlocked(int32_t * errCode)123     bool OsAccountManagerImpl::IsOsAccountUnlocked(int32_t *errCode)
124     {
125         bool isVerified = false;
126         *errCode = ConvertToJSErrCode(OsAccountManager::IsCurrentOsAccountVerified(isVerified));
127         return isVerified;
128     }
129 
MallocCString(const std::string & origin)130     char *OsAccountManagerImpl::MallocCString(const std::string &origin)
131     {
132         if (origin.empty()) {
133             return nullptr;
134         }
135         auto len = origin.length() + 1;
136         char *res = static_cast<char *>(malloc(sizeof(char) * len));
137         if (res == nullptr) {
138             return nullptr;
139         }
140         return std::char_traits<char>::copy(res, origin.c_str(), len);
141     }
142 }