/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: MPL-2.0 */ import AbstractAbility from './abstract'; import { computed, get } from '@ember/object'; import { or } from '@ember/object/computed'; export default class Client extends AbstractAbility { @or( 'bypassAuthorization', 'selfTokenIsManagement', 'policiesIncludeAgentReadOrWrite' ) canRead; @computed('token.selfTokenPolicies.[]') get policiesIncludeAgentReadOrWrite() { const policies = (get(this, 'token.selfTokenPolicies') || []) .toArray() .map((policy) => get(policy, 'rulesJSON.Agent.Policy')) .compact(); return policies.some((policy) => policy === 'read' || policy === 'write'); } }