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 }