Adding mechanism to disable org functionality when multi-tenancy disabled.

This commit is contained in:
mike12345567 2021-07-21 17:52:42 +01:00
parent a9752c0939
commit be1558e1e7
8 changed files with 50 additions and 20 deletions

View File

@ -87,7 +87,8 @@ exports.getGlobalDB = tenantId => {
exports.getGlobalDBFromCtx = ctx => { exports.getGlobalDBFromCtx = ctx => {
const user = ctx.user || {} const user = ctx.user || {}
const params = ctx.request.params || {} const params = ctx.request.params || {}
return exports.getGlobalDB(user.tenantId || params.tenantId) const query = ctx.request.query || {}
return exports.getGlobalDB(user.tenantId || params.tenantId || query.tenantId)
} }
/** /**

View File

@ -6,6 +6,7 @@
Layout, Layout,
Input, Input,
Body, Body,
ActionButton,
} from "@budibase/bbui" } from "@budibase/bbui"
import { goto } from "@roxi/routify" import { goto } from "@roxi/routify"
import api from "builderStore/api" import api from "builderStore/api"
@ -17,6 +18,7 @@
let error let error
$: tenantId = $auth.tenantId $: tenantId = $auth.tenantId
$: multiTenancyEnabled = $admin.multiTenancy
async function save() { async function save() {
try { try {
@ -34,6 +36,11 @@
notifications.error(`Failed to create admin user`) notifications.error(`Failed to create admin user`)
} }
} }
function changeOrg() {
auth.setOrg(null)
$goto("../auth")
}
</script> </script>
<section> <section>
@ -50,9 +57,16 @@
<Input label="Email" bind:value={adminUser.email} /> <Input label="Email" bind:value={adminUser.email} />
<PasswordRepeatInput bind:password={adminUser.password} bind:error /> <PasswordRepeatInput bind:password={adminUser.password} bind:error />
</Layout> </Layout>
<Layout gap="XS" noPadding>
<Button cta disabled={error} on:click={save}> <Button cta disabled={error} on:click={save}>
Create super admin user Create super admin user
</Button> </Button>
{#if multiTenancyEnabled}
<ActionButton quiet on:click={changeOrg}>
Change organisation
</ActionButton>
{/if}
</Layout>
</Layout> </Layout>
</div> </div>
</section> </section>

View File

@ -6,10 +6,12 @@
Layout, Layout,
Body, Body,
Heading, Heading,
ActionButton,
} from "@budibase/bbui" } from "@budibase/bbui"
import { organisation, auth } from "stores/portal" import {organisation, auth} from "stores/portal"
import Logo from "assets/bb-emblem.svg" import Logo from "assets/bb-emblem.svg"
import { onMount } from "svelte" import {onMount} from "svelte"
import {goto} from "@roxi/routify"
let email = "" let email = ""
@ -41,9 +43,14 @@
</Body> </Body>
<Input label="Email" bind:value={email} /> <Input label="Email" bind:value={email} />
</Layout> </Layout>
<Layout gap="XS" nopadding>
<Button cta on:click={forgot} disabled={!email}> <Button cta on:click={forgot} disabled={!email}>
Reset your password Reset your password
</Button> </Button>
<ActionButton quiet on:click={() => $goto("../")}>
Back
</ActionButton>
</Layout>
</Layout> </Layout>
</div> </div>
</div> </div>

View File

@ -9,7 +9,6 @@
let loaded = false let loaded = false
$: { $: {
console.log(loaded)
if (loaded && multiTenancyEnabled && !tenantSet) { if (loaded && multiTenancyEnabled && !tenantSet) {
$redirect("./org") $redirect("./org")
} else if (loaded) { } else if (loaded) {

View File

@ -10,7 +10,7 @@
notifications, notifications,
} from "@budibase/bbui" } from "@budibase/bbui"
import { goto, params } from "@roxi/routify" import { goto, params } from "@roxi/routify"
import { auth, organisation, oidc } from "stores/portal" import {auth, organisation, oidc, admin} from "stores/portal"
import GoogleButton from "./_components/GoogleButton.svelte" import GoogleButton from "./_components/GoogleButton.svelte"
import OIDCButton from "./_components/OIDCButton.svelte" import OIDCButton from "./_components/OIDCButton.svelte"
import Logo from "assets/bb-emblem.svg" import Logo from "assets/bb-emblem.svg"
@ -18,8 +18,10 @@
let username = "" let username = ""
let password = "" let password = ""
let loaded = false
$: company = $organisation.company || "Budibase" $: company = $organisation.company || "Budibase"
$: multiTenancyEnabled = $admin.multiTenancy
async function login() { async function login() {
try { try {
@ -49,6 +51,7 @@
onMount(async () => { onMount(async () => {
await organisation.init() await organisation.init()
loaded = true
}) })
</script> </script>
@ -60,8 +63,10 @@
<img alt="logo" src={$organisation.logoUrl || Logo} /> <img alt="logo" src={$organisation.logoUrl || Logo} />
<Heading>Sign in to {company}</Heading> <Heading>Sign in to {company}</Heading>
</Layout> </Layout>
{#if loaded}
<GoogleButton /> <GoogleButton />
<OIDCButton oidcIcon={$oidc.logo} oidcName={$oidc.name} /> <OIDCButton oidcIcon={$oidc.logo} oidcName={$oidc.name} />
{/if}
<Divider noGrid /> <Divider noGrid />
<Layout gap="XS" noPadding> <Layout gap="XS" noPadding>
<Body size="S" textAlign="center">Sign in with email</Body> <Body size="S" textAlign="center">Sign in with email</Body>
@ -78,9 +83,11 @@
<ActionButton quiet on:click={() => $goto("./forgot")}> <ActionButton quiet on:click={() => $goto("./forgot")}>
Forgot password? Forgot password?
</ActionButton> </ActionButton>
{#if multiTenancyEnabled}
<ActionButton quiet on:click={() => $goto("./org")}> <ActionButton quiet on:click={() => $goto("./org")}>
Change organisation Change organisation
</ActionButton> </ActionButton>
{/if}
</Layout> </Layout>
</Layout> </Layout>
</div> </div>

View File

@ -3,10 +3,14 @@
import { goto } from "@roxi/routify" import { goto } from "@roxi/routify"
import { auth, admin } from "stores/portal" import { auth, admin } from "stores/portal"
import Logo from "assets/bb-emblem.svg" import Logo from "assets/bb-emblem.svg"
import { get } from "svelte/store"
let tenantId = "" let tenantId = get(auth).tenantSet ? get(auth).tenantId : ""
async function setOrg() { async function setOrg() {
if (tenantId == null || tenantId === "") {
tenantId = "default"
}
auth.setOrg(tenantId) auth.setOrg(tenantId)
// re-init now org selected // re-init now org selected
await admin.init() await admin.init()

View File

@ -248,8 +248,6 @@
const oidcResponse = await api.get(`/api/admin/configs/${ConfigTypes.OIDC}`) const oidcResponse = await api.get(`/api/admin/configs/${ConfigTypes.OIDC}`)
const oidcDoc = await oidcResponse.json() const oidcDoc = await oidcResponse.json()
if (!oidcDoc._id) { if (!oidcDoc._id) {
console.log("hi")
providers.oidc = { providers.oidc = {
type: ConfigTypes.OIDC, type: ConfigTypes.OIDC,
config: { configs: [{ activated: true }] }, config: { configs: [{ activated: true }] },

View File

@ -52,7 +52,7 @@ export function createAuthStore() {
setOrg: tenantId => { setOrg: tenantId => {
auth.update(store => { auth.update(store => {
store.tenantId = tenantId store.tenantId = tenantId
store.tenantSet = true store.tenantSet = !!tenantId
return store return store
}) })
}, },