github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/ui/app/abilities/client.js (about)

     1  import AbstractAbility from './abstract';
     2  import { computed, get } from '@ember/object';
     3  import { or } from '@ember/object/computed';
     4  import classic from 'ember-classic-decorator';
     5  
     6  @classic
     7  export default class Client extends AbstractAbility {
     8    // Map abilities to policy options (which are coarse for nodes)
     9    // instead of specific behaviors.
    10    @or('bypassAuthorization', 'selfTokenIsManagement', 'policiesIncludeNodeWrite')
    11    canWrite;
    12  
    13    @computed('token.selfTokenPolicies.[]')
    14    get policiesIncludeNodeWrite() {
    15      // For each policy record, extract the Node policy
    16      const policies = (this.get('token.selfTokenPolicies') || [])
    17        .toArray()
    18        .map(policy => get(policy, 'rulesJSON.Node.Policy'))
    19        .compact();
    20  
    21      // Node write is allowed if any policy allows it
    22      return policies.some(policy => policy === 'write');
    23    }
    24  }