1 /*
2  * Copyright (c) 2021-2023 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_APPACCOUNT_INNER_APP_ACCOUNT_MANAGER_H
17 #define OS_ACCOUNT_SERVICES_ACCOUNTMGR_INCLUDE_APPACCOUNT_INNER_APP_ACCOUNT_MANAGER_H
18 
19 #include "ability_connect_callback_stub.h"
20 #include "app_account_authenticator_manager.h"
21 #include "app_account_authenticator_session_manager.h"
22 #include "app_account_authorization_extension_callback.h"
23 #include "app_account_control_manager.h"
24 #include "app_account_subscribe_manager.h"
25 
26 namespace OHOS {
27 namespace AccountSA {
28 class InnerAppAccountManager {
29 public:
30     InnerAppAccountManager();
31     virtual ~InnerAppAccountManager();
32 
33     ErrCode AddAccount(const std::string &name, const std::string &extraInfo,
34         const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
35     ErrCode AddAccountImplicitly(const AuthenticatorSessionRequest &request);
36     ErrCode CreateAccount(const std::string &name, const CreateAccountOptions &options,
37         const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
38     ErrCode CreateAccountImplicitly(const AuthenticatorSessionRequest &request);
39     ErrCode DeleteAccount(
40         const std::string &name, const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
41 
42     ErrCode GetAccountExtraInfo(const std::string &name, std::string &extraInfo,
43         const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
44     ErrCode SetAccountExtraInfo(const std::string &name, const std::string &extraInfo,
45         const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
46 
47     ErrCode EnableAppAccess(const std::string &name, const std::string &authorizedApp,
48         AppAccountCallingInfo &appAccountCallingInfo, const uint32_t apiVersion = Constants::API_VERSION7);
49     ErrCode DisableAppAccess(const std::string &name, const std::string &authorizedApp,
50         AppAccountCallingInfo &appAccountCallingInfo, const uint32_t apiVersion = Constants::API_VERSION7);
51     ErrCode CheckAppAccess(const std::string &name, const std::string &authorizedApp, bool &isAccessible,
52         const AppAccountCallingInfo &appAccountCallingInfo);
53 
54     ErrCode CheckAppAccountSyncEnable(const std::string &name, bool &syncEnable,
55         const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
56     ErrCode SetAppAccountSyncEnable(const std::string &name, const bool &syncEnable,
57         const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
58 
59     ErrCode GetAssociatedData(const std::string &name, const std::string &key,
60         std::string &value, const uid_t &uid);
61     ErrCode SetAssociatedData(const std::string &name, const std::string &key, const std::string &value,
62         const AppAccountCallingInfo &appAccountCallingInfo);
63 
64     ErrCode GetAccountCredential(const std::string &name, const std::string &credentialType, std::string &credential,
65         const AppAccountCallingInfo &appAccountCallingInfo);
66     ErrCode SetAccountCredential(const std::string &name, const std::string &credentialType,
67         const std::string &credential, const AppAccountCallingInfo &appAccountCallingInfo);
68     ErrCode DeleteAccountCredential(const std::string &name, const std::string &credentialType,
69         const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
70 
71     ErrCode Authenticate(const AuthenticatorSessionRequest &request);
72     ErrCode GetOAuthToken(const AuthenticatorSessionRequest &request,
73         std::string &token, const uint32_t apiVersion = Constants::API_VERSION8);
74     ErrCode SetOAuthToken(const AuthenticatorSessionRequest &request);
75     ErrCode DeleteOAuthToken(
76         const AuthenticatorSessionRequest &request, const uint32_t apiVersion = Constants::API_VERSION8);
77     ErrCode SetOAuthTokenVisibility(const AuthenticatorSessionRequest &request,
78         const uint32_t apiVersion = Constants::API_VERSION8);
79     ErrCode CheckOAuthTokenVisibility(const AuthenticatorSessionRequest &request,
80         bool &isVisible, const uint32_t apiVersion = Constants::API_VERSION8);
81     ErrCode GetAllOAuthTokens(const AuthenticatorSessionRequest &request, std::vector<OAuthTokenInfo> &tokenInfos);
82     ErrCode GetOAuthList(const AuthenticatorSessionRequest &request,
83         std::set<std::string> &oauthList, const uint32_t apiVersion = Constants::API_VERSION8);
84     ErrCode GetAuthenticatorCallback(const AuthenticatorSessionRequest &request, sptr<IRemoteObject> &callback);
85     ErrCode GetAuthenticatorInfo(const AuthenticatorSessionRequest &request, AuthenticatorInfo &info);
86 
87     ErrCode GetAllAccounts(const std::string &owner, std::vector<AppAccountInfo> &appAccounts, const uid_t &uid,
88         const std::string &bundleName, const uint32_t &appIndex);
89     ErrCode GetAllAccessibleAccounts(std::vector<AppAccountInfo> &appAccounts,
90         const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
91 
92     ErrCode SelectAccountsByOptions(
93         const SelectAccountsOptions &options, const sptr<IAppAccountAuthenticatorCallback> &callback,
94         const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
95     ErrCode VerifyCredential(const AuthenticatorSessionRequest &request);
96     ErrCode CheckAccountLabels(const AuthenticatorSessionRequest &request);
97     ErrCode SetAuthenticatorProperties(const AuthenticatorSessionRequest &request);
98 
99     ErrCode SubscribeAppAccount(const AppAccountSubscribeInfo &subscribeInfo, const sptr<IRemoteObject> &eventListener,
100         const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
101     ErrCode UnsubscribeAppAccount(const sptr<IRemoteObject> &eventListener);
102 
103     ErrCode OnPackageRemoved(const uid_t &uid, const std::string &bundleName, const uint32_t &appIndex);
104     ErrCode OnUserRemoved(int32_t userId);
105 
106 private:
107     AppAccountControlManager &controlManager_;
108     AppAccountSubscribeManager &subscribeManager_;
109     AppAccountAuthenticatorSessionManager &sessionManager_;
110 
111     DISALLOW_COPY_AND_MOVE(InnerAppAccountManager);
112 };
113 }  // namespace AccountSA
114 }  // namespace OHOS
115 
116 #endif  // OS_ACCOUNT_SERVICES_ACCOUNTMGR_INCLUDE_APPACCOUNT_INNER_APP_ACCOUNT_MANAGER_H
117