Add role footer for admins and developers, remove wasted API calls
This commit is contained in:
parent
1b7b61bb63
commit
9eadb06fd3
|
@ -34,6 +34,7 @@
|
||||||
export let fetchTerm = null
|
export let fetchTerm = null
|
||||||
export let customPopoverHeight
|
export let customPopoverHeight
|
||||||
export let align = "left"
|
export let align = "left"
|
||||||
|
export let footer = null
|
||||||
|
|
||||||
const dispatch = createEventDispatcher()
|
const dispatch = createEventDispatcher()
|
||||||
|
|
||||||
|
@ -210,6 +211,12 @@
|
||||||
{/each}
|
{/each}
|
||||||
{/if}
|
{/if}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
{#if footer}
|
||||||
|
<div class="footer">
|
||||||
|
{footer}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|
||||||
|
@ -286,4 +293,11 @@
|
||||||
.popover-content :global(.spectrum-Search .spectrum-Textfield-icon) {
|
.popover-content :global(.spectrum-Search .spectrum-Textfield-icon) {
|
||||||
top: 9px;
|
top: 9px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
padding: 4px 12px 12px 12px;
|
||||||
|
font-style: italic;
|
||||||
|
max-width: 160px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
export let autocomplete = false
|
export let autocomplete = false
|
||||||
export let sort = false
|
export let sort = false
|
||||||
export let align
|
export let align
|
||||||
|
export let footer = null
|
||||||
|
|
||||||
const dispatch = createEventDispatcher()
|
const dispatch = createEventDispatcher()
|
||||||
|
|
||||||
|
@ -68,6 +69,7 @@
|
||||||
{options}
|
{options}
|
||||||
{autoWidth}
|
{autoWidth}
|
||||||
{align}
|
{align}
|
||||||
|
{footer}
|
||||||
{getOptionLabel}
|
{getOptionLabel}
|
||||||
{getOptionValue}
|
{getOptionValue}
|
||||||
{getOptionIcon}
|
{getOptionIcon}
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
export let autocomplete = false
|
export let autocomplete = false
|
||||||
export let customPopoverHeight
|
export let customPopoverHeight
|
||||||
export let align
|
export let align
|
||||||
|
export let footer = null
|
||||||
|
|
||||||
const dispatch = createEventDispatcher()
|
const dispatch = createEventDispatcher()
|
||||||
const onChange = e => {
|
const onChange = e => {
|
||||||
|
@ -50,6 +51,7 @@
|
||||||
{autoWidth}
|
{autoWidth}
|
||||||
{sort}
|
{sort}
|
||||||
{align}
|
{align}
|
||||||
|
{footer}
|
||||||
{getOptionLabel}
|
{getOptionLabel}
|
||||||
{getOptionValue}
|
{getOptionValue}
|
||||||
{getOptionIcon}
|
{getOptionIcon}
|
||||||
|
|
|
@ -13,16 +13,24 @@
|
||||||
export let allowRemove = false
|
export let allowRemove = false
|
||||||
export let disabled = false
|
export let disabled = false
|
||||||
export let align
|
export let align
|
||||||
|
export let footer = null
|
||||||
|
export let allowedRoles = null
|
||||||
|
|
||||||
const dispatch = createEventDispatcher()
|
const dispatch = createEventDispatcher()
|
||||||
const RemoveID = "remove"
|
const RemoveID = "remove"
|
||||||
|
|
||||||
$: options = getOptions($roles, allowPublic, allowRemove)
|
$: options = getOptions($roles, allowPublic, allowRemove, allowedRoles)
|
||||||
|
|
||||||
const getOptions = (roles, allowPublic) => {
|
const getOptions = (roles, allowPublic, allowRemove, allowedRoles) => {
|
||||||
|
if (allowedRoles?.length) {
|
||||||
|
console.log(allowedRoles)
|
||||||
|
console.log(roles)
|
||||||
|
return roles.filter(role => allowedRoles.includes(role._id))
|
||||||
|
}
|
||||||
|
let newRoles = [...roles]
|
||||||
if (allowRemove) {
|
if (allowRemove) {
|
||||||
roles = [
|
newRoles = [
|
||||||
...roles,
|
...newRoles,
|
||||||
{
|
{
|
||||||
_id: RemoveID,
|
_id: RemoveID,
|
||||||
name: "Remove",
|
name: "Remove",
|
||||||
|
@ -30,9 +38,9 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
if (allowPublic) {
|
if (allowPublic) {
|
||||||
return roles
|
return newRoles
|
||||||
}
|
}
|
||||||
return roles.filter(role => role._id !== Constants.Roles.PUBLIC)
|
return newRoles.filter(role => role._id !== Constants.Roles.PUBLIC)
|
||||||
}
|
}
|
||||||
|
|
||||||
const getColor = role => {
|
const getColor = role => {
|
||||||
|
@ -63,6 +71,7 @@
|
||||||
{quiet}
|
{quiet}
|
||||||
{disabled}
|
{disabled}
|
||||||
{align}
|
{align}
|
||||||
|
{footer}
|
||||||
bind:value
|
bind:value
|
||||||
on:change={onChange}
|
on:change={onChange}
|
||||||
{options}
|
{options}
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
const isBuilderOrAdmin = user.admin?.global || user.builder?.global
|
const isBuilderOrAdmin = user.admin?.global || user.builder?.global
|
||||||
let role = undefined
|
let role = undefined
|
||||||
if (isBuilderOrAdmin) {
|
if (isBuilderOrAdmin) {
|
||||||
role = "ADMIN"
|
role = Constants.Roles.ADMIN
|
||||||
} else {
|
} else {
|
||||||
const appRole = Object.keys(user.roles).find(x => x === prodAppId)
|
const appRole = Object.keys(user.roles).find(x => x === prodAppId)
|
||||||
if (appRole) {
|
if (appRole) {
|
||||||
|
@ -134,6 +134,9 @@
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
if (user.role === role) {
|
||||||
|
return
|
||||||
|
}
|
||||||
await updateAppUser(user, role)
|
await updateAppUser(user, role)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
|
@ -369,9 +372,12 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const roleNote = user => {
|
const getRoleFooter = user => {
|
||||||
if (user.group) {
|
if (!user.role && user.group) {
|
||||||
return "Part of a group"
|
return "This user has been given access via their group"
|
||||||
|
}
|
||||||
|
if (user.isBuilderOrAdmin) {
|
||||||
|
return "This user's role grants admin access to all apps"
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
@ -557,7 +563,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="auth-entity-access" class:muted={user.group}>
|
<div class="auth-entity-access" class:muted={user.group}>
|
||||||
<RoleSelect
|
<RoleSelect
|
||||||
note={roleNote(user)}
|
footer={getRoleFooter(user)}
|
||||||
placeholder={false}
|
placeholder={false}
|
||||||
value={user.role}
|
value={user.role}
|
||||||
allowRemove={user.role && !user.group}
|
allowRemove={user.role && !user.group}
|
||||||
|
@ -569,9 +575,11 @@
|
||||||
on:remove={() => {
|
on:remove={() => {
|
||||||
onUpdateUser(user)
|
onUpdateUser(user)
|
||||||
}}
|
}}
|
||||||
disabled={user.isBuilderOrAdmin}
|
|
||||||
autoWidth
|
autoWidth
|
||||||
align="right"
|
align="right"
|
||||||
|
allowedRoles={user.isBuilderOrAdmin
|
||||||
|
? [Constants.Roles.ADMIN]
|
||||||
|
: null}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue