10fbfc30aSopenharmony_ci/**
20fbfc30aSopenharmony_ci * @file Describe the file
30fbfc30aSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
40fbfc30aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
50fbfc30aSopenharmony_ci * you may not use this file except in compliance with the License.
60fbfc30aSopenharmony_ci * You may obtain a copy of the License at
70fbfc30aSopenharmony_ci *
80fbfc30aSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
90fbfc30aSopenharmony_ci *
100fbfc30aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
110fbfc30aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
120fbfc30aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130fbfc30aSopenharmony_ci * See the License for the specific language governing permissions and
140fbfc30aSopenharmony_ci * limitations under the License.
150fbfc30aSopenharmony_ci */
160fbfc30aSopenharmony_ci
170fbfc30aSopenharmony_ciimport abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
180fbfc30aSopenharmony_ciimport { Log } from '@ohos/common/src/main/ets/utils/Log';
190fbfc30aSopenharmony_ci
200fbfc30aSopenharmony_ciconst TAG = 'CalendarUriHelper'
210fbfc30aSopenharmony_ci
220fbfc30aSopenharmony_ci/**
230fbfc30aSopenharmony_ci * Verify whether the current calling application has this permission by tokenID
240fbfc30aSopenharmony_ci *
250fbfc30aSopenharmony_ci * @param tokenId indicates the user's tokenID ,the tokenID can be a string or number
260fbfc30aSopenharmony_ci * @return the uri string without BundleName and TokenID in case of changing this data.
270fbfc30aSopenharmony_ci */
280fbfc30aSopenharmony_ciexport async function verifyAccessByTokenId(tokenId: string, permissionName: Permissions): Promise<boolean> {
290fbfc30aSopenharmony_ci  let atManager = abilityAccessCtrl.createAtManager();
300fbfc30aSopenharmony_ci  let result: abilityAccessCtrl.GrantStatus = 2;
310fbfc30aSopenharmony_ci  try {
320fbfc30aSopenharmony_ci    result = await atManager.checkAccessToken(Number.parseInt(tokenId), permissionName);
330fbfc30aSopenharmony_ci  } catch (err) {
340fbfc30aSopenharmony_ci    Log.error(TAG, `err=${err?.message}`);
350fbfc30aSopenharmony_ci  }
360fbfc30aSopenharmony_ci
370fbfc30aSopenharmony_ci  if (result === null || result === undefined) {
380fbfc30aSopenharmony_ci    return false;
390fbfc30aSopenharmony_ci  }
400fbfc30aSopenharmony_ci
410fbfc30aSopenharmony_ci  if (result === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {
420fbfc30aSopenharmony_ci    // Allow the visitor to call the interface provided by the current application
430fbfc30aSopenharmony_ci    Log.debug(TAG, "This application has been authorized to access");
440fbfc30aSopenharmony_ci    return true;
450fbfc30aSopenharmony_ci  }
460fbfc30aSopenharmony_ci  // Prohibit the visitor to call the interface provided by the current application
470fbfc30aSopenharmony_ci  Log.debug(TAG, "This application is NOT authorized to access");
480fbfc30aSopenharmony_ci  return false;
490fbfc30aSopenharmony_ci}