Fix adding member issue

https://github.com/rancher/rancher/issues/16320
This commit is contained in:
loganhz 2018-10-30 07:14:44 +08:00
parent ab0e965819
commit d3ae679dbd
7 changed files with 15 additions and 59 deletions

View File

@ -2,7 +2,6 @@ import Controller from '@ember/controller';
import NewOrEdit from 'ui/mixins/new-or-edit';
import { get } from '@ember/object';
// import { all as PromiseAll } from 'rsvp';
import { computed } from '@ember/object';
const ROLE_KINDS = [
{ id: 'User', },
@ -18,14 +17,9 @@ const ROLE_KINDS = [
export default Controller.extend(NewOrEdit, {
primaryResource: null,
kinds: ROLE_KINDS,
defaultUser: null,
actions: {
doneSaving() {
this.transitionToRoute('authenticated.cluster.security.members.index', get(this, 'model.cluster.id'))
},
},
filteredUsers: computed('model.users.@each.{id,state}', function() {
return get(this, 'model.users').filter((u) => !u.hasOwnProperty('me') || get(u, 'me') === false)
.sortBy('username');
}),
});

View File

@ -14,17 +14,9 @@ export default Route.extend({
const cid = this.paramsFor('authenticated.cluster');
return hash({
cluster: gs.find('cluster', cid.cluster_id, { forceReload: true }),
roles: get(this, 'roleTemplateService').get('allFilteredRoleTemplates'),
users: gs.findAll('user'),
cluster: gs.find('cluster', cid.cluster_id, { forceReload: true }),
roles: get(this, 'roleTemplateService').get('allFilteredRoleTemplates'),
roleBindings: gs.findAll('clusterRoleTemplateBinding'),
});
},
setupController(controller, model) {
this._super(controller, model);
let dfu = get(model, 'users.firstObject');
controller.setProperties({ defaultUser: dfu, });
},
});

View File

@ -8,8 +8,6 @@
<div class="box mt-30">
{{form-scoped-roles
model=model
filtered=filteredUsers
defaultUser=defaultUser
type="cluster"
cancel=(action "doneSaving")
doneSaving=(action "doneSaving")

View File

@ -1,7 +1,6 @@
import Controller from '@ember/controller';
import NewOrEdit from 'ui/mixins/new-or-edit';
import { get } from '@ember/object';
import { computed } from '@ember/object';
const ROLE_KINDS = [
{ id: 'User', },
@ -22,8 +21,4 @@ export default Controller.extend(NewOrEdit, {
this.transitionToRoute('authenticated.project.security.members.index', get(this, 'model.project.id'))
},
},
filteredUsers: computed('model.users.@each.{id,state}', function() {
return get(this, 'model.users').filter((u) => !u.hasOwnProperty('me') || get(u, 'me') === false)
.sortBy('username');
}),
});

View File

@ -12,17 +12,9 @@ export default Route.extend({
const pid = this.paramsFor('authenticated.project');
return hash({
project: gs.find('project', pid.project_id, { forceReload: true }),
roles: get(this, 'roleTemplateService').get('allFilteredRoleTemplates'),
users: gs.findAll('user'),
project: gs.find('project', pid.project_id, { forceReload: true }),
roles: get(this, 'roleTemplateService').get('allFilteredRoleTemplates'),
roleBindings: gs.findAll('projectRoleTemplateBinding'),
});
},
setupController(controller, model) {
this._super(controller, model);
let dfu = get(model, 'users.firstObject');
controller.setProperties({ defaultUser: dfu, });
},
}
});

View File

@ -8,8 +8,6 @@
<div class="box mt-30">
{{form-scoped-roles
model=model
filtered=filteredUsers
defaultUser=defaultUser
type="project"
cancel=(action "doneSaving")
doneSaving=(action "doneSaving")

View File

@ -27,14 +27,12 @@ export default Component.extend(NewOrEdit, {
init() {
this._super(...arguments);
let dfu = get(this, 'defaultUser');
let model = { type: `${ get(this, 'type') }RoleTemplateBinding`, };
set(model, `${ get(this, 'type') }Id`, get(this, `model.${ get(this, 'type') }.id`))
setProperties(this, {
primaryResource: this.make(model),
defaultUser: dfu,
stdUser: `${ get(this, 'type') }-member`,
admin: `${ get(this, 'type') }-owner`,
cTyped: get(this, 'type').capitalize(),
@ -214,26 +212,17 @@ export default Component.extend(NewOrEdit, {
});
}),
mode: computed('editing', 'defaultUser', {
mode: computed('editing', {
get() {
let editing = get(this, 'editing');
let dfu = get(this, 'defaultUser');
let current = dfu.get(`${ get(this, 'type') }RoleBindings`);
let mode = null;
if (editing && current.length === 1) {
mode = get(current, 'firstObject.roleTemplateId');
} else if (editing && current.length > 1){
mode = CUSTOM;
} else {
const id = `${ get(this, 'type') }-member`;
const role = get(this, 'model.roles').findBy('id', id);
const id = `${ get(this, 'type') }-member`;
const role = get(this, 'model.roles').findBy('id', id);
if ( role && get(role, 'locked') !== true ) {
mode = `${ get(this, 'type') }-member`;
} else {
mode = CUSTOM;
}
if ( role && get(role, 'locked') !== true ) {
mode = `${ get(this, 'type') }-member`;
} else {
mode = CUSTOM;
}
return mode;
@ -277,9 +266,7 @@ export default Component.extend(NewOrEdit, {
return false;
}
const user = get(this, 'model.users').find((user) => (get(user, 'principalIds') || []).indexOf(get(principal, 'id')) > -1 );
const current = user.get(`${ get(this, 'type') }RoleBindings`);
const current = (get(this, 'model.roleBindings') || []).filterBy('userPrincipalId', get(principal, 'id'));
if (get(this, 'mode') === 'custom') {
if (get(this, 'customToAdd.length') < 1) {