mirror of https://github.com/rancher/ui.git
110 lines
2.5 KiB
JavaScript
110 lines
2.5 KiB
JavaScript
import { computed } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
import { alias } from '@ember/object/computed';
|
|
import Controller from '@ember/controller';
|
|
import NewOrEdit from 'ui/mixins/new-or-edit';
|
|
import C from 'ui/utils/constants';
|
|
import { get, set } from '@ember/object';
|
|
|
|
export default Controller.extend(NewOrEdit, {
|
|
globalStore: service(),
|
|
settings: service(),
|
|
intl: service(),
|
|
sortBy: 'name',
|
|
|
|
globalRoleSave: null,
|
|
canUserLogIn: null,
|
|
|
|
headers: [{
|
|
name: 'active',
|
|
sort: ['active'],
|
|
translationKey: 'accountsPage.detail.table.headers.active',
|
|
width: 125,
|
|
},
|
|
{
|
|
name: 'name',
|
|
sort: ['name'],
|
|
translationKey: 'accountsPage.detail.table.headers.role',
|
|
},
|
|
],
|
|
|
|
primaryResource: alias('model.account'),
|
|
|
|
actions: {
|
|
cancel() {
|
|
this.transitionToRoute('accounts');
|
|
},
|
|
|
|
setGlobalRoleSave(fn) {
|
|
set(this, 'globalRoleSave', fn);
|
|
},
|
|
|
|
setValidateGlobalRoles(fn) {
|
|
set(this, 'canUserLogIn', fn);
|
|
}
|
|
},
|
|
|
|
validateDescription: computed(function() {
|
|
return get(this, 'settings').get(C.SETTING.AUTH_LOCAL_VALIDATE_DESC) || null;
|
|
}),
|
|
|
|
roles: computed('model.globalRoles.[]', function() {
|
|
return get(this, 'model.globalRoles').map((grb) => {
|
|
return {
|
|
name: get(grb, 'name'),
|
|
active: false,
|
|
globalId: get(grb, 'id')
|
|
};
|
|
});
|
|
}),
|
|
|
|
doesExist() {
|
|
let users = get(this, 'model.users');
|
|
let account = get(this, 'model.account');
|
|
|
|
if (users.findBy('username', account.get('username'))) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
},
|
|
|
|
validate() {
|
|
var errors = [];
|
|
|
|
if (this.canUserLogIn && !this.canUserLogIn()) {
|
|
errors.push(this.intl.findTranslationByKey('formGlobalRoles.loginError'));
|
|
}
|
|
|
|
if ((get(this, 'model.account.username') || '').trim().length === 0) {
|
|
errors.push(get(this, 'intl').t('accountsPage.new.errors.usernameReq'));
|
|
}
|
|
|
|
if (this.doesExist()) {
|
|
errors.push(get(this, 'intl').t('accountsPage.new.errors.usernameInExists'));
|
|
}
|
|
|
|
if ((get(this, 'model.account.password') || '').trim().length === 0) {
|
|
errors.push(get(this, 'intl').t('accountsPage.new.errors.pwReq'));
|
|
}
|
|
|
|
if (errors.length) {
|
|
set(this, 'errors', errors.uniq());
|
|
|
|
return false;
|
|
} else {
|
|
set(this, 'errors', null);
|
|
}
|
|
|
|
return true;
|
|
},
|
|
|
|
didSave() {
|
|
return this.globalRoleSave();
|
|
},
|
|
|
|
doneSaving() {
|
|
this.transitionToRoute('accounts');
|
|
}
|
|
});
|