skyline/src/stores/keystone/role.js
Jingwei.Zhang e86bff5f0f feat: update role detail page
1. Update TabDetail to support fetch api when router change
2. Update role detail page: show implied roles in detail page

Change-Id: I99cf7510c30d3924a7f7281f3d5fb3f6db67bd4d
2022-06-22 16:56:52 +08:00

68 lines
1.8 KiB
JavaScript

// Copyright 2021 99cloud
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import { action, observable } from 'mobx';
import client from 'client';
import Base from 'stores/base';
import List from 'stores/base-list';
export class RoleStore extends Base {
get client() {
return client.keystone.roles;
}
@observable
implyRoles = {};
@observable
systemRoles = new List();
async detailDidFetch(item) {
const { id } = item;
const { role_inference: { implies = [] } = {} } =
await this.client.implies.list(id);
return {
...item,
implies,
};
}
checkSystemRole = (roleItem) => {
return roleItem.name === 'admin' || roleItem.name === 'reader';
};
@action
async fetchSystemRoles() {
this.systemRoles.isLoading = true;
const result = await this.client.list();
const { roles = [] } = result;
const systemRoles = roles.filter((it) => {
return this.checkSystemRole(it);
});
this.systemRoles.data = systemRoles;
this.systemRoles.isLoading = false;
return systemRoles;
}
@action
update({ id }, newObject) {
const body = {};
body[this.responseKey] = newObject;
return this.submitting(this.client.patch(id, body));
}
}
const globalRoleStore = new RoleStore();
export default globalRoleStore;