skyline/src/pages/user-center/containers/Credentials/actions/Create.jsx
Jingwei.Zhang 832cce176c refactor: remove the basic role display from the overview page
1. remove the basic role display from the overview page: because the api removed the base role information[1]
2. fix the title i18n

[1] I461ae3f8979377ae22ec851bf3315e509b22cfbd

Change-Id: Ib0e1ed51010c68dac64159a6154e65399f46a14d
2022-08-18 09:50:15 +08:00

113 lines
3.0 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 { inject, observer } from 'mobx-react';
import { ModalAction } from 'containers/Action';
import globalCredentialStore from 'stores/keystone/credential';
import moment from 'moment';
import globalRootStore from 'stores/root';
import { toJS } from 'mobx';
import FileSaver from 'file-saver';
export class Create extends ModalAction {
static id = 'create-application_credentials';
static title = t('Create Application Credentials');
static get modalSize() {
return 'middle';
}
getModalSize() {
return 'middle';
}
get name() {
return t('Create Application Credentials');
}
onSubmit = (values) => {
if (values.expires_at) {
values.expires_at = values.expires_at.clone().endOf('day');
}
if (values.roles) {
values.roles = Object.keys(values.roles)
.filter((key) => values.roles[key])
.map((i) => ({ id: i }));
}
return globalCredentialStore.create(values).then((res) => {
const { links, roles, system, unrestricted, user_id, name, ...rest } =
res.application_credential;
const filename = `${name}.json`;
const blob = new Blob([JSON.stringify(rest, null, 2)], {
type: 'text/plain;charset=utf-8',
});
FileSaver.saveAs(blob, filename);
});
};
static allowed() {
return Promise.resolve(true);
}
static policy = 'identity:create_application_credential';
get roleOptions() {
const roles = toJS(globalRootStore.roles);
return roles.map((i) => ({
label: i.name,
value: i.id,
}));
}
get formItems() {
return [
{
name: 'name',
label: t('Name'),
type: 'input-name',
required: true,
},
{
name: 'expires_at',
label: t('Expires At'),
type: 'date-picker',
showToday: false,
disabledDate: (current) =>
current && current < moment().subtract(1, 'days').endOf('d'),
required: false,
},
{
name: 'roles',
label: t('Roles'),
type: 'check-group',
options: this.roleOptions,
extra: t(
'If not provided, the roles assigned to the application credential will be the same as the roles in the current token.'
),
span: 12,
},
{
name: 'description',
label: t('Description'),
type: 'textarea',
required: false,
},
];
}
}
export default inject('rootStore')(observer(Create));