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_APP_ACCOUNT_PROXY_H
17 #define OS_ACCOUNT_SERVICES_ACCOUNTMGR_INCLUDE_APPACCOUNT_APP_ACCOUNT_PROXY_H
18 
19 #include "iapp_account.h"
20 #include "iremote_proxy.h"
21 
22 namespace OHOS {
23 namespace AccountSA {
24 class AppAccountProxy : public IRemoteProxy<IAppAccount> {
25 public:
26     explicit AppAccountProxy(const sptr<IRemoteObject> &object);
27     ~AppAccountProxy() override;
28 
29     ErrCode AddAccount(const std::string &name, const std::string &extraInfo) override;
30     ErrCode AddAccountImplicitly(const std::string &owner, const std::string &authType,
31         const AAFwk::Want &options, const sptr<IAppAccountAuthenticatorCallback> &callback) override;
32     ErrCode CreateAccount(const std::string &name, const CreateAccountOptions &options) override;
33     ErrCode CreateAccountImplicitly(const std::string &owner, const CreateAccountImplicitlyOptions &options,
34         const sptr<IAppAccountAuthenticatorCallback> &callback) override;
35     ErrCode DeleteAccount(const std::string &name) override;
36 
37     ErrCode GetAccountExtraInfo(const std::string &name, std::string &extraInfo) override;
38     ErrCode SetAccountExtraInfo(const std::string &name, const std::string &extraInfo) override;
39 
40     ErrCode EnableAppAccess(const std::string &name, const std::string &authorizedApp) override;
41     ErrCode DisableAppAccess(const std::string &name, const std::string &authorizedApp) override;
42     ErrCode SetAppAccess(const std::string &name, const std::string &authorizedApp, bool isAccessible) override;
43     ErrCode CheckAppAccess(const std::string &name, const std::string &authorizedApp, bool &isAccessible) override;
44 
45     ErrCode CheckAppAccountSyncEnable(const std::string &name, bool &syncEnable) override;
46     ErrCode SetAppAccountSyncEnable(const std::string &name, const bool &syncEnable) override;
47 
48     ErrCode GetAssociatedData(const std::string &name, const std::string &key, std::string &value) override;
49     ErrCode SetAssociatedData(const std::string &name, const std::string &key, const std::string &value) override;
50 
51     ErrCode GetAccountCredential(
52         const std::string &name, const std::string &credentialType, std::string &credential) override;
53     ErrCode SetAccountCredential(
54         const std::string &name, const std::string &credentialType, const std::string &credential) override;
55     ErrCode DeleteAccountCredential(const std::string &name, const std::string &credentialType) override;
56 
57     ErrCode Authenticate(const std::string &name, const std::string &owner, const std::string &authType,
58         const AAFwk::Want &options, const sptr<IAppAccountAuthenticatorCallback> &callback) override;
59     ErrCode GetOAuthToken(
60         const std::string &name, const std::string &owner, const std::string &authType, std::string &token) override;
61     ErrCode GetAuthToken(
62         const std::string &name, const std::string &owner, const std::string &authType, std::string &token) override;
63     ErrCode SetOAuthToken(
64         const std::string &name, const std::string &authType, const std::string &token) override;
65     ErrCode DeleteOAuthToken(const std::string &name, const std::string &owner, const std::string &authType,
66         const std::string &token) override;
67     ErrCode DeleteAuthToken(const std::string &name, const std::string &owner, const std::string &authType,
68         const std::string &token) override;
69     ErrCode SetOAuthTokenVisibility(
70         const std::string &name, const std::string &authType, const std::string &bundleName, bool isVisible) override;
71     ErrCode SetAuthTokenVisibility(
72         const std::string &name, const std::string &authType, const std::string &bundleName, bool isVisible) override;
73     ErrCode CheckOAuthTokenVisibility(
74         const std::string &name, const std::string &authType, const std::string &bundleName, bool &isVisible) override;
75     ErrCode CheckAuthTokenVisibility(
76         const std::string &name, const std::string &authType, const std::string &bundleName, bool &isVisible) override;
77     ErrCode GetAuthenticatorInfo(const std::string &owner, AuthenticatorInfo &info) override;
78     ErrCode GetAllOAuthTokens(
79         const std::string &name, const std::string &owner, std::vector<OAuthTokenInfo> &tokenInfos) override;
80     ErrCode GetOAuthList(
81         const std::string &name, const std::string &authType, std::set<std::string> &oauthList) override;
82     ErrCode GetAuthList(
83         const std::string &name, const std::string &authType, std::set<std::string> &oauthList) override;
84     ErrCode GetAuthenticatorCallback(const std::string &sessionId, sptr<IRemoteObject> &callback) override;
85 
86     ErrCode GetAllAccounts(const std::string &owner, std::vector<AppAccountInfo> &appAccounts) override;
87     ErrCode GetAllAccessibleAccounts(std::vector<AppAccountInfo> &appAccounts) override;
88     ErrCode QueryAllAccessibleAccounts(const std::string &owner, std::vector<AppAccountInfo> &appAccounts) override;
89 
90     ErrCode SelectAccountsByOptions(
91         const SelectAccountsOptions &options, const sptr<IAppAccountAuthenticatorCallback> &callback) override;
92     ErrCode VerifyCredential(const std::string &name, const std::string &owner,
93         const VerifyCredentialOptions &options, const sptr<IAppAccountAuthenticatorCallback> &callback) override;
94     ErrCode CheckAccountLabels(const std::string &name, const std::string &owner,
95         const std::vector<std::string> &labels, const sptr<IAppAccountAuthenticatorCallback> &callback) override;
96     ErrCode SetAuthenticatorProperties(const std::string &owner, const SetPropertiesOptions &options,
97         const sptr<IAppAccountAuthenticatorCallback> &callback) override;
98     ErrCode SubscribeAppAccount(
99         AppAccountSubscribeInfo &subscribeInfo, const sptr<IRemoteObject> &eventListener) override;
100     ErrCode UnsubscribeAppAccount(const sptr<IRemoteObject> &eventListener) override;
101 
102 private:
103     ErrCode SendRequest(AppAccountInterfaceCode code, MessageParcel &data, MessageParcel &reply);
104     ErrCode WriteGetAuthListParam(
105         const std::string &name, const std::string &authType, MessageParcel &data);
106     ErrCode WriteGetAuthTokenParam(
107         const std::string &name, const std::string &owner, const std::string &authType, MessageParcel &data);
108     ErrCode WriteDeleteAuthTokenParam(const std::string &name,
109         const std::string &owner, const std::string &authType, const std::string &token, MessageParcel &data);
110     ErrCode WriteTokenVisibilityParam(
111         const std::string &name, const std::string &authType, const std::string &bundleName, MessageParcel &data);
112     ErrCode SendRequestWithTwoStr(MessageParcel &reply, AppAccountInterfaceCode code,
113         const std::string &str1, const std::string &str2);
114     bool ReadAppAccountList(MessageParcel &parcel, std::vector<AppAccountInfo> &accountList);
115 
116 private:
117     static inline BrokerDelegator<AppAccountProxy> delegator_;
118 };
119 }  // namespace AccountSA
120 }  // namespace OHOS
121 
122 #endif  // OS_ACCOUNT_SERVICES_ACCOUNTMGR_INCLUDE_APPACCOUNT_APP_ACCOUNT_PROXY_H
123