forked from tsai/budibase
15 changed files with 246 additions and 74 deletions
@ -0,0 +1,37 @@ |
|||
<script> |
|||
import { Label, Select } from "@budibase/bbui" |
|||
import { permissions, roles } from "stores/backend" |
|||
|
|||
export let query |
|||
export let saveId |
|||
export let label |
|||
|
|||
$: updateRole(roleId, saveId) |
|||
|
|||
let roleId |
|||
|
|||
async function updateRole(role, id) { |
|||
roleId = role |
|||
const queryId = query?._id || id |
|||
if (roleId && queryId) { |
|||
for (let level of ["read", "write"]) { |
|||
await permissions.save({ |
|||
level, |
|||
role, |
|||
resource: queryId, |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
{#if label} |
|||
<Label>{label}</Label> |
|||
{/if} |
|||
<Select |
|||
value={roleId} |
|||
on:change={e => updateRole(e.detail)} |
|||
options={$roles} |
|||
getOptionLabel={x => x.name} |
|||
getOptionValue={x => x._id} |
|||
/> |
|||
@ -0,0 +1,13 @@ |
|||
<script> |
|||
import { params } from "@roxi/routify" |
|||
import { queries } from "stores/backend" |
|||
|
|||
if ($params.query) { |
|||
const query = $queries.list.find(q => q._id === $params.query) |
|||
if (query) { |
|||
queries.select(query) |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<slot /> |
|||
@ -1,4 +0,0 @@ |
|||
<script> |
|||
</script> |
|||
|
|||
<slot /> |
|||
@ -0,0 +1,37 @@ |
|||
import { writable } from "svelte/store" |
|||
import api from "builderStore/api" |
|||
|
|||
export function createFlagsStore() { |
|||
const { subscribe, set } = writable({}) |
|||
|
|||
return { |
|||
subscribe, |
|||
fetch: async () => { |
|||
const { doc, response } = await getFlags() |
|||
set(doc) |
|||
return response |
|||
}, |
|||
updateFlag: async (flag, value) => { |
|||
const response = await api.post("/api/users/flags", { |
|||
flag, |
|||
value, |
|||
}) |
|||
if (response.status === 200) { |
|||
const { doc } = await getFlags() |
|||
set(doc) |
|||
} |
|||
return response |
|||
}, |
|||
} |
|||
} |
|||
|
|||
async function getFlags() { |
|||
const response = await api.get("/api/users/flags") |
|||
let doc = {} |
|||
if (response.status === 200) { |
|||
doc = await response.json() |
|||
} |
|||
return { doc, response } |
|||
} |
|||
|
|||
export const flags = createFlagsStore() |
|||
Loading…
Reference in new issue