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