mirror of https://github.com/rancher/ui.git
Fix adding member issue
https://github.com/rancher/rancher/issues/16320
This commit is contained in:
parent
ab0e965819
commit
d3ae679dbd
|
|
@ -2,7 +2,6 @@ import Controller from '@ember/controller';
|
||||||
import NewOrEdit from 'ui/mixins/new-or-edit';
|
import NewOrEdit from 'ui/mixins/new-or-edit';
|
||||||
import { get } from '@ember/object';
|
import { get } from '@ember/object';
|
||||||
// import { all as PromiseAll } from 'rsvp';
|
// import { all as PromiseAll } from 'rsvp';
|
||||||
import { computed } from '@ember/object';
|
|
||||||
|
|
||||||
const ROLE_KINDS = [
|
const ROLE_KINDS = [
|
||||||
{ id: 'User', },
|
{ id: 'User', },
|
||||||
|
|
@ -18,14 +17,9 @@ const ROLE_KINDS = [
|
||||||
export default Controller.extend(NewOrEdit, {
|
export default Controller.extend(NewOrEdit, {
|
||||||
primaryResource: null,
|
primaryResource: null,
|
||||||
kinds: ROLE_KINDS,
|
kinds: ROLE_KINDS,
|
||||||
defaultUser: null,
|
|
||||||
actions: {
|
actions: {
|
||||||
doneSaving() {
|
doneSaving() {
|
||||||
this.transitionToRoute('authenticated.cluster.security.members.index', get(this, 'model.cluster.id'))
|
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');
|
|
||||||
}),
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -14,17 +14,9 @@ export default Route.extend({
|
||||||
const cid = this.paramsFor('authenticated.cluster');
|
const cid = this.paramsFor('authenticated.cluster');
|
||||||
|
|
||||||
return hash({
|
return hash({
|
||||||
cluster: gs.find('cluster', cid.cluster_id, { forceReload: true }),
|
cluster: gs.find('cluster', cid.cluster_id, { forceReload: true }),
|
||||||
roles: get(this, 'roleTemplateService').get('allFilteredRoleTemplates'),
|
roles: get(this, 'roleTemplateService').get('allFilteredRoleTemplates'),
|
||||||
users: gs.findAll('user'),
|
roleBindings: gs.findAll('clusterRoleTemplateBinding'),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
setupController(controller, model) {
|
|
||||||
this._super(controller, model);
|
|
||||||
|
|
||||||
let dfu = get(model, 'users.firstObject');
|
|
||||||
|
|
||||||
controller.setProperties({ defaultUser: dfu, });
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,6 @@
|
||||||
<div class="box mt-30">
|
<div class="box mt-30">
|
||||||
{{form-scoped-roles
|
{{form-scoped-roles
|
||||||
model=model
|
model=model
|
||||||
filtered=filteredUsers
|
|
||||||
defaultUser=defaultUser
|
|
||||||
type="cluster"
|
type="cluster"
|
||||||
cancel=(action "doneSaving")
|
cancel=(action "doneSaving")
|
||||||
doneSaving=(action "doneSaving")
|
doneSaving=(action "doneSaving")
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import Controller from '@ember/controller';
|
import Controller from '@ember/controller';
|
||||||
import NewOrEdit from 'ui/mixins/new-or-edit';
|
import NewOrEdit from 'ui/mixins/new-or-edit';
|
||||||
import { get } from '@ember/object';
|
import { get } from '@ember/object';
|
||||||
import { computed } from '@ember/object';
|
|
||||||
|
|
||||||
const ROLE_KINDS = [
|
const ROLE_KINDS = [
|
||||||
{ id: 'User', },
|
{ id: 'User', },
|
||||||
|
|
@ -22,8 +21,4 @@ export default Controller.extend(NewOrEdit, {
|
||||||
this.transitionToRoute('authenticated.project.security.members.index', get(this, 'model.project.id'))
|
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');
|
|
||||||
}),
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -12,17 +12,9 @@ export default Route.extend({
|
||||||
const pid = this.paramsFor('authenticated.project');
|
const pid = this.paramsFor('authenticated.project');
|
||||||
|
|
||||||
return hash({
|
return hash({
|
||||||
project: gs.find('project', pid.project_id, { forceReload: true }),
|
project: gs.find('project', pid.project_id, { forceReload: true }),
|
||||||
roles: get(this, 'roleTemplateService').get('allFilteredRoleTemplates'),
|
roles: get(this, 'roleTemplateService').get('allFilteredRoleTemplates'),
|
||||||
users: gs.findAll('user'),
|
roleBindings: gs.findAll('projectRoleTemplateBinding'),
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
|
|
||||||
setupController(controller, model) {
|
|
||||||
this._super(controller, model);
|
|
||||||
|
|
||||||
let dfu = get(model, 'users.firstObject');
|
|
||||||
|
|
||||||
controller.setProperties({ defaultUser: dfu, });
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,6 @@
|
||||||
<div class="box mt-30">
|
<div class="box mt-30">
|
||||||
{{form-scoped-roles
|
{{form-scoped-roles
|
||||||
model=model
|
model=model
|
||||||
filtered=filteredUsers
|
|
||||||
defaultUser=defaultUser
|
|
||||||
type="project"
|
type="project"
|
||||||
cancel=(action "doneSaving")
|
cancel=(action "doneSaving")
|
||||||
doneSaving=(action "doneSaving")
|
doneSaving=(action "doneSaving")
|
||||||
|
|
|
||||||
|
|
@ -27,14 +27,12 @@ export default Component.extend(NewOrEdit, {
|
||||||
init() {
|
init() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
|
|
||||||
let dfu = get(this, 'defaultUser');
|
|
||||||
let model = { type: `${ get(this, 'type') }RoleTemplateBinding`, };
|
let model = { type: `${ get(this, 'type') }RoleTemplateBinding`, };
|
||||||
|
|
||||||
set(model, `${ get(this, 'type') }Id`, get(this, `model.${ get(this, 'type') }.id`))
|
set(model, `${ get(this, 'type') }Id`, get(this, `model.${ get(this, 'type') }.id`))
|
||||||
|
|
||||||
setProperties(this, {
|
setProperties(this, {
|
||||||
primaryResource: this.make(model),
|
primaryResource: this.make(model),
|
||||||
defaultUser: dfu,
|
|
||||||
stdUser: `${ get(this, 'type') }-member`,
|
stdUser: `${ get(this, 'type') }-member`,
|
||||||
admin: `${ get(this, 'type') }-owner`,
|
admin: `${ get(this, 'type') }-owner`,
|
||||||
cTyped: get(this, 'type').capitalize(),
|
cTyped: get(this, 'type').capitalize(),
|
||||||
|
|
@ -214,26 +212,17 @@ export default Component.extend(NewOrEdit, {
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
|
|
||||||
mode: computed('editing', 'defaultUser', {
|
mode: computed('editing', {
|
||||||
get() {
|
get() {
|
||||||
let editing = get(this, 'editing');
|
|
||||||
let dfu = get(this, 'defaultUser');
|
|
||||||
let current = dfu.get(`${ get(this, 'type') }RoleBindings`);
|
|
||||||
let mode = null;
|
let mode = null;
|
||||||
|
|
||||||
if (editing && current.length === 1) {
|
const id = `${ get(this, 'type') }-member`;
|
||||||
mode = get(current, 'firstObject.roleTemplateId');
|
const role = get(this, 'model.roles').findBy('id', id);
|
||||||
} else if (editing && current.length > 1){
|
|
||||||
mode = CUSTOM;
|
|
||||||
} else {
|
|
||||||
const id = `${ get(this, 'type') }-member`;
|
|
||||||
const role = get(this, 'model.roles').findBy('id', id);
|
|
||||||
|
|
||||||
if ( role && get(role, 'locked') !== true ) {
|
if ( role && get(role, 'locked') !== true ) {
|
||||||
mode = `${ get(this, 'type') }-member`;
|
mode = `${ get(this, 'type') }-member`;
|
||||||
} else {
|
} else {
|
||||||
mode = CUSTOM;
|
mode = CUSTOM;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return mode;
|
return mode;
|
||||||
|
|
@ -277,9 +266,7 @@ export default Component.extend(NewOrEdit, {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const user = get(this, 'model.users').find((user) => (get(user, 'principalIds') || []).indexOf(get(principal, 'id')) > -1 );
|
const current = (get(this, 'model.roleBindings') || []).filterBy('userPrincipalId', get(principal, 'id'));
|
||||||
const current = user.get(`${ get(this, 'type') }RoleBindings`);
|
|
||||||
|
|
||||||
|
|
||||||
if (get(this, 'mode') === 'custom') {
|
if (get(this, 'mode') === 'custom') {
|
||||||
if (get(this, 'customToAdd.length') < 1) {
|
if (get(this, 'customToAdd.length') < 1) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue