mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
Save app required/recommended permissions on role create
This commit is contained in:
@@ -5,7 +5,21 @@
|
||||
{{ $t('create_role') }}
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<v-input v-model="roleName" autofocus @keyup.enter="save" :placeholder="$t('role_name') + '...'" />
|
||||
<div class="form-grid">
|
||||
<div class="field full">
|
||||
<v-input v-model="roleName" autofocus @keyup.enter="save" :placeholder="$t('role_name') + '...'" />
|
||||
</div>
|
||||
|
||||
<div class="field half">
|
||||
<p class="type-label">{{ $t('fields.directus_roles.app_access') }}</p>
|
||||
<v-checkbox block v-model="appAccess" :label="$t('enabled')" />
|
||||
</div>
|
||||
|
||||
<div class="field half">
|
||||
<p class="type-label">{{ $t('fields.directus_roles.admin') }}</p>
|
||||
<v-checkbox block v-model="admin" :label="$t('enabled')" />
|
||||
</div>
|
||||
</div>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-button to="/settings/roles" secondary>{{ $t('cancel') }}</v-button>
|
||||
@@ -19,14 +33,17 @@
|
||||
import { defineComponent, ref } from '@vue/composition-api';
|
||||
import api from '@/api';
|
||||
import router from '@/router';
|
||||
import { permissions } from './app-required-permissions'
|
||||
|
||||
export default defineComponent({
|
||||
setup() {
|
||||
const roleName = ref<string>();
|
||||
const appAccess = ref(true);
|
||||
const admin = ref(false);
|
||||
|
||||
const { saving, error, save } = useSave();
|
||||
|
||||
return { roleName, saving, error, save };
|
||||
return { roleName, saving, error, save, appAccess, admin };
|
||||
|
||||
function useSave() {
|
||||
const saving = ref(false);
|
||||
@@ -39,7 +56,15 @@ export default defineComponent({
|
||||
error.value = null;
|
||||
|
||||
try {
|
||||
const roleResponse = await api.post('/roles', { name: roleName.value });
|
||||
const roleResponse = await api.post('/roles', { name: roleName.value, admin: admin.value, app_access: appAccess.value });
|
||||
|
||||
if (appAccess.value === true && admin.value === false) {
|
||||
await api.post('/permissions', permissions.map(permission => ({
|
||||
...permission,
|
||||
role: roleResponse.data.data.id,
|
||||
})));
|
||||
}
|
||||
|
||||
router.push(`/settings/roles/${roleResponse.data.data.id}`);
|
||||
} catch (err) {
|
||||
error.value = err;
|
||||
@@ -52,3 +77,17 @@ export default defineComponent({
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@/styles/mixins/form-grid';
|
||||
|
||||
.form-grid {
|
||||
--v-form-horizontal-gap: 12px;
|
||||
--v-form-vertical-gap: 24px;
|
||||
|
||||
@include form-grid;
|
||||
|
||||
.type-label {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
import { Permission } from '@/types';
|
||||
|
||||
export const appRequiredPermissions: Partial<Permission>[] = [
|
||||
{
|
||||
collection: 'directus_activity',
|
||||
action: 'read',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_collections',
|
||||
action: 'read',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_fields',
|
||||
action: 'read',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_presets',
|
||||
action: 'create',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_presets',
|
||||
action: 'read',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_presets',
|
||||
action: 'update',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_presets',
|
||||
action: 'delete',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_relations',
|
||||
action: 'read',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_revisions',
|
||||
action: 'read',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_users',
|
||||
action: 'read',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_roles',
|
||||
action: 'read',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_settings',
|
||||
action: 'read',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
];
|
||||
|
||||
export const appRecommendedPermissions: Partial<Permission>[] = [
|
||||
{
|
||||
collection: 'directus_files',
|
||||
action: 'create',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_files',
|
||||
action: 'read',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_files',
|
||||
action: 'update',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_files',
|
||||
action: 'delete',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_folders',
|
||||
action: 'create',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_folders',
|
||||
action: 'read',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_folders',
|
||||
action: 'update',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
{
|
||||
collection: 'directus_folders',
|
||||
action: 'delete',
|
||||
permissions: {},
|
||||
fields: '*',
|
||||
},
|
||||
];
|
||||
|
||||
export const permissions = [
|
||||
...appRequiredPermissions,
|
||||
...appRecommendedPermissions,
|
||||
]
|
||||
Reference in New Issue
Block a user