mirror of https://github.com/rancher/ui.git
77 lines
2.0 KiB
JavaScript
77 lines
2.0 KiB
JavaScript
import Component from '@ember/component';
|
|
import layout from './template';
|
|
import { get, set } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
|
|
const MEMBERS_HEADERS = [
|
|
{
|
|
translationKey: 'newMultiClusterApp.members.table.name',
|
|
name: 'name',
|
|
sort: ['userPrincipalId', 'groupPrincipalId'],
|
|
},
|
|
{
|
|
translationKey: 'newMultiClusterApp.members.table.type',
|
|
name: 'type',
|
|
sort: ['displayType'],
|
|
},
|
|
{
|
|
translationKey: 'newMultiClusterApp.members.table.accessType',
|
|
name: 'accessType',
|
|
sort: ['accessType'],
|
|
},
|
|
];
|
|
|
|
export default Component.extend({
|
|
globalStore: service(),
|
|
|
|
layout,
|
|
|
|
membersHeaders: MEMBERS_HEADERS,
|
|
sortBy: '',
|
|
descending: false,
|
|
excludeMember: false,
|
|
resource: null,
|
|
gotError: null,
|
|
removeMember: null,
|
|
optionsForAccessType: null,
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
|
|
this.initOptionsForMembersAccessType();
|
|
},
|
|
|
|
actions: {
|
|
addPrincipal(principal) {
|
|
if (principal) {
|
|
const { principalType, id } = principal;
|
|
|
|
const nue = {
|
|
type: 'member',
|
|
accessType: null,
|
|
displayType: get(principal, 'displayType') || principalType,
|
|
displayName: get(principal, 'displayName') || get(principal, 'loginName') || get(principalType, 'id'),
|
|
};
|
|
|
|
if (principalType === 'group') {
|
|
set(nue, 'groupPrincipalId', id);
|
|
} else if (principalType === 'user') {
|
|
set(nue, 'userPrincipalId', id);
|
|
}
|
|
|
|
this.addAuthorizedPrincipal(nue);
|
|
}
|
|
},
|
|
},
|
|
|
|
addAuthorizedPrincipal() {
|
|
throw new Error('add principal handler must be provided!!');
|
|
},
|
|
|
|
initOptionsForMembersAccessType() {
|
|
let accessTypes = this.optionsForAccessType || this.globalStore.getById('schema', 'member').optionsFor('accessType');
|
|
|
|
return set(this, 'optionsForAccessType', accessTypes);
|
|
},
|
|
});
|