Update some other portal components to use new role metadata

This commit is contained in:
Andrew Kingston 2024-09-11 17:00:41 +01:00
parent 8a7af78c48
commit f6852d5331
No known key found for this signature in database
4 changed files with 3 additions and 121 deletions

View File

@ -1,17 +1,17 @@
<script> <script>
import { StatusLight } from "@budibase/bbui" import { StatusLight } from "@budibase/bbui"
import { RoleUtils, Constants } from "@budibase/frontend-core" import { Constants } from "@budibase/frontend-core"
import { roles } from "stores/builder" import { roles } from "stores/builder"
import { capitalise } from "helpers" import { capitalise } from "helpers"
export let value export let value
$: role = $roles.find(x => x._id === roleId) $: role = $roles.find(x => x._id === value)
const getRoleLabel = roleId => { const getRoleLabel = roleId => {
return roleId === Constants.Roles.CREATOR return roleId === Constants.Roles.CREATOR
? capitalise(Constants.Roles.CREATOR.toLowerCase()) ? capitalise(Constants.Roles.CREATOR.toLowerCase())
: role?.name || "Custom role" : role?.displayName || role?.name || "Custom role"
} }
</script> </script>

View File

@ -1,9 +0,0 @@
<script>
import TagsTableRenderer from "./TagsTableRenderer.svelte"
export let value
$: roles = value?.filter(role => role != null).map(role => role.name) ?? []
</script>
<TagsTableRenderer value={roles} />

View File

@ -1,35 +0,0 @@
<script>
import { Tag, Tags } from "@budibase/bbui"
export let value
const displayLimit = 5
$: values = value?.filter(value => value != null) ?? []
$: tags = values.slice(0, displayLimit)
$: leftover = values.length - tags.length
</script>
<div class="tag-renderer">
<Tags>
{#each tags as tag}
<Tag>
{tag}
</Tag>
{/each}
{#if leftover}
<Tag>+{leftover} more</Tag>
{/if}
</Tags>
</div>
<style>
.tag-renderer :global(.spectrum-Tags-item:hover) {
color: var(--spectrum-alias-label-text-color);
border-color: var(--spectrum-alias-border-color-darker-default);
cursor: pointer;
}
.tag-renderer :global(.spectrum-Tags-itemLabel) {
cursor: pointer;
}
</style>

View File

@ -1,74 +0,0 @@
<script>
import { createEventDispatcher } from "svelte"
import { Body, Select, ModalContent, notifications } from "@budibase/bbui"
import { users } from "stores/portal"
import { sdk } from "@budibase/shared-core"
export let app
export let user
const NO_ACCESS = "NO_ACCESS"
const dispatch = createEventDispatcher()
const roles = app.roles
let options = roles
.filter(role => role._id !== "PUBLIC")
.map(role => ({ value: role._id, label: role.name }))
if (!sdk.users.isBuilder(user, app?.appId)) {
options.push({ value: NO_ACCESS, label: "No Access" })
}
let selectedRole = user?.roles?.[app?._id]
async function updateUserRoles() {
try {
if (selectedRole === NO_ACCESS) {
// Remove the user role
const filteredRoles = { ...user.roles }
delete filteredRoles[app?._id]
await users.save({
...user,
roles: {
...filteredRoles,
},
})
} else {
// Add the user role
await users.save({
...user,
roles: {
...user.roles,
[app._id]: selectedRole,
},
})
}
notifications.success("Role updated")
dispatch("update")
} catch (error) {
notifications.error("Failed to update role")
}
}
</script>
<ModalContent
onConfirm={updateUserRoles}
title="Update App Role"
confirmText="Update role"
cancelText="Cancel"
size="M"
showCloseIcon={false}
>
<Body>
Update {user.email}'s role for <strong>{app.name}</strong>.
</Body>
<Select
placeholder={null}
bind:value={selectedRole}
on:change
{options}
label="Role"
getOptionLabel={role => role.label}
getOptionValue={role => role.value}
/>
</ModalContent>