Merge pull request #8169 from Budibase/bug/sev3/delete-button-roles

Hide delete button for built-in roles, and prevent duplicate roles
This commit is contained in:
melohagan 2022-10-12 09:11:58 +01:00 committed by GitHub
commit d15df3691b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 6 deletions

View File

@ -17,12 +17,21 @@
$: selectedRoleId = selectedRole._id $: selectedRoleId = selectedRole._id
$: otherRoles = editableRoles.filter(role => role._id !== selectedRoleId) $: otherRoles = editableRoles.filter(role => role._id !== selectedRoleId)
$: isCreating = selectedRoleId == null || selectedRoleId === "" $: isCreating = selectedRoleId == null || selectedRoleId === ""
$: hasUniqueRoleName = !otherRoles
?.map(role => role.name)
?.includes(selectedRole.name)
$: valid = $: valid =
selectedRole.name && selectedRole.name &&
selectedRole.inherits && selectedRole.inherits &&
selectedRole.permissionId && selectedRole.permissionId &&
!builtInRoles.includes(selectedRole.name) !builtInRoles.includes(selectedRole.name)
$: shouldDisableRoleInput =
builtInRoles.includes(selectedRole.name) &&
selectedRole.name?.toLowerCase() === selectedRoleId?.toLowerCase()
const fetchBasePermissions = async () => { const fetchBasePermissions = async () => {
try { try {
basePermissions = await API.getBasePermissions() basePermissions = await API.getBasePermissions()
@ -99,7 +108,7 @@
title="Edit Roles" title="Edit Roles"
confirmText={isCreating ? "Create" : "Save"} confirmText={isCreating ? "Create" : "Save"}
onConfirm={saveRole} onConfirm={saveRole}
disabled={!valid} disabled={!valid || !hasUniqueRoleName}
> >
{#if errors.length} {#if errors.length}
<ErrorsBox {errors} /> <ErrorsBox {errors} />
@ -119,15 +128,16 @@
<Input <Input
label="Name" label="Name"
bind:value={selectedRole.name} bind:value={selectedRole.name}
disabled={builtInRoles.includes(selectedRole.name)} disabled={shouldDisableRoleInput}
error={!hasUniqueRoleName ? "Select a unique role name." : null}
/> />
<Select <Select
label="Inherits Role" label="Inherits Role"
bind:value={selectedRole.inherits} bind:value={selectedRole.inherits}
options={otherRoles} options={selectedRole._id === "BASIC" ? $roles : otherRoles}
getOptionValue={role => role._id} getOptionValue={role => role._id}
getOptionLabel={role => role.name} getOptionLabel={role => role.name}
disabled={builtInRoles.includes(selectedRole.name)} disabled={shouldDisableRoleInput}
/> />
<Select <Select
label="Base Permissions" label="Base Permissions"
@ -135,11 +145,11 @@
options={basePermissions} options={basePermissions}
getOptionValue={x => x._id} getOptionValue={x => x._id}
getOptionLabel={x => x.name} getOptionLabel={x => x.name}
disabled={builtInRoles.includes(selectedRole.name)} disabled={shouldDisableRoleInput}
/> />
{/if} {/if}
<div slot="footer"> <div slot="footer">
{#if !isCreating} {#if !isCreating && !builtInRoles.includes(selectedRole.name)}
<Button warning on:click={deleteRole}>Delete</Button> <Button warning on:click={deleteRole}>Delete</Button>
{/if} {/if}
</div> </div>