Browse Source

Prevent flashing and intermittent errors when navigating to admin screens as a non admin

pull/1538/head
Andrew Kingston 5 years ago
parent
commit
d7aae52657
  1. 18
      packages/builder/src/pages/builder/portal/manage/_layout.svelte
  2. 14
      packages/builder/src/pages/builder/portal/manage/auth/_layout.svelte
  3. 8
      packages/builder/src/pages/builder/portal/manage/email/_layout.svelte
  4. 14
      packages/builder/src/pages/builder/portal/manage/users/_layout.svelte
  5. 116
      packages/builder/src/pages/builder/portal/settings/organisation.svelte

18
packages/builder/src/pages/builder/portal/manage/_layout.svelte

@ -0,0 +1,18 @@
<script>
import { Page } from "@budibase/bbui"
import { auth } from "stores/portal"
import { redirect } from "@roxi/routify"
// Only admins allowed here
$: {
if (!$auth.isAdmin) {
$redirect("../")
}
}
</script>
{#if $auth.isAdmin}
<Page>
<slot />
</Page>
{/if}

14
packages/builder/src/pages/builder/portal/manage/auth/_layout.svelte

@ -1,14 +0,0 @@
<script>
import { redirect } from "@roxi/routify"
import { Page } from "@budibase/bbui"
import { auth } from "../../../../../stores/portal"
// only admins allowed here
if (!$auth.isAdmin) {
$redirect("../../../portal")
}
</script>
<Page>
<slot />
</Page>

8
packages/builder/src/pages/builder/portal/manage/email/_layout.svelte

@ -1,11 +1,5 @@
<script> <script>
import { redirect } from "@roxi/routify" import { email } from "stores/portal"
import { auth, email } from "stores/portal"
// only admins allowed here
if (!$auth.isAdmin) {
$redirect("../../../portal")
}
email.templates.fetch() email.templates.fetch()
</script> </script>

14
packages/builder/src/pages/builder/portal/manage/users/_layout.svelte

@ -1,14 +0,0 @@
<script>
import { Page } from "@budibase/bbui"
import { auth } from "../../../../../stores/portal"
import { redirect } from "@roxi/routify"
// only admins allowed here
if (!$auth.isAdmin) {
$redirect("../../../portal")
}
</script>
<Page>
<slot />
</Page>

116
packages/builder/src/pages/builder/portal/settings/organisation.svelte

@ -17,9 +17,11 @@
import { writable } from "svelte/store" import { writable } from "svelte/store"
import { redirect } from "@roxi/routify" import { redirect } from "@roxi/routify"
// only admins allowed here // Only admins allowed here
if (!$auth.isAdmin) { $: {
$redirect("../../portal") if (!$auth.isAdmin) {
$redirect("../../portal")
}
} }
const values = writable({ const values = writable({
@ -70,68 +72,70 @@
} }
</script> </script>
<Layout> {#if $auth.isAdmin}
<Layout gap="XS" noPadding> <Layout>
<Heading size="M">Organisation</Heading> <Layout gap="XS" noPadding>
<Body> <Heading size="M">Organisation</Heading>
Organisation settings is where you can edit your organisation name and <Body>
logo. You can also configure your platform URL and enable or disable Organisation settings is where you can edit your organisation name and
analytics. logo. You can also configure your platform URL and enable or disable
</Body> analytics.
</Layout> </Body>
<Divider size="S" /> </Layout>
<Layout gap="XS" noPadding> <Divider size="S" />
<Heading size="S">Information</Heading> <Layout gap="XS" noPadding>
<Body size="S">Here you can update your logo and organization name.</Body> <Heading size="S">Information</Heading>
</Layout> <Body size="S">Here you can update your logo and organization name.</Body>
<div class="fields"> </Layout>
<div class="field"> <div class="fields">
<Label size="L">Organization name</Label> <div class="field">
<Input thin bind:value={$values.company} /> <Label size="L">Organization name</Label>
</div> <Input thin bind:value={$values.company} />
<div class="field logo"> </div>
<Label size="L">Logo</Label> <div class="field logo">
<div class="file"> <Label size="L">Logo</Label>
<Dropzone <div class="file">
value={[$values.logo]} <Dropzone
on:change={e => { value={[$values.logo]}
$values.logo = e.detail?.[0] on:change={e => {
}} $values.logo = e.detail?.[0]
/> }}
/>
</div>
</div> </div>
</div> </div>
</div> <Divider size="S" />
<Divider size="S" />
<Layout gap="XS" noPadding>
<Heading size="S">Platform</Heading>
<Body size="S">Here you can set up general platform settings.</Body>
</Layout>
<div class="fields">
<div class="field">
<Label size="L">Platform URL</Label>
<Input thin bind:value={$values.platformUrl} />
</div>
</div>
<Divider size="S" />
<Layout gap="S" noPadding>
<Layout gap="XS" noPadding> <Layout gap="XS" noPadding>
<Heading size="S">Analytics</Heading> <Heading size="S">Platform</Heading>
<Body size="S"> <Body size="S">Here you can set up general platform settings.</Body>
If you would like to send analytics that help us make Budibase better,
please let us know below.
</Body>
</Layout> </Layout>
<div class="fields"> <div class="fields">
<div class="field"> <div class="field">
<Label size="L">Send Analytics to Budibase</Label> <Label size="L">Platform URL</Label>
<Toggle text="" bind:value={$values.analytics} /> <Input thin bind:value={$values.platformUrl} />
</div>
</div>
<Divider size="S" />
<Layout gap="S" noPadding>
<Layout gap="XS" noPadding>
<Heading size="S">Analytics</Heading>
<Body size="S">
If you would like to send analytics that help us make Budibase better,
please let us know below.
</Body>
</Layout>
<div class="fields">
<div class="field">
<Label size="L">Send Analytics to Budibase</Label>
<Toggle text="" bind:value={$values.analytics} />
</div>
</div> </div>
</Layout>
<div>
<Button disabled={loading} on:click={saveConfig} cta>Save</Button>
</div> </div>
</Layout> </Layout>
<div> {/if}
<Button disabled={loading} on:click={saveConfig} cta>Save</Button>
</div>
</Layout>
<style> <style>
.fields { .fields {

Loading…
Cancel
Save