1 /*
2  * Copyright (c) 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 #define LOG_TAG "CrossPermissionStrategy"
16 
17 #include "cross_permission_strategy.h"
18 
19 #include "accesstoken_kit.h"
20 #include "log_print.h"
21 
22 namespace OHOS::DataShare {
operator ()(std::shared_ptr<Context> context)23 bool CrossPermissionStrategy::operator()(std::shared_ptr<Context> context)
24 {
25     for (const auto &permission : allowCrossPermissions_) {
26         int status = Security::AccessToken::AccessTokenKit::VerifyAccessToken(context->callerTokenId, permission);
27         if (status == Security::AccessToken::PermissionState::PERMISSION_GRANTED) {
28             context->isAllowCrossPer = true;
29             return true;
30         }
31     }
32     return true;
33 }
CrossPermissionStrategy(std::initializer_list<std::string> permissions)34 CrossPermissionStrategy::CrossPermissionStrategy(std::initializer_list<std::string> permissions)
35 {
36     allowCrossPermissions_.insert(allowCrossPermissions_.end(), permissions.begin(), permissions.end());
37 }
38 } // namespace OHOS::DataShare