Linting and adding tenancy API.

This commit is contained in:
mike12345567 2021-07-20 18:03:16 +01:00
parent e98965a805
commit e3744c0b20
8 changed files with 72 additions and 19 deletions

View File

@ -1,9 +1,9 @@
<script> <script>
import { ActionButton } from "@budibase/bbui" import { ActionButton } from "@budibase/bbui"
import GoogleLogo from "assets/google-logo.png" import GoogleLogo from "assets/google-logo.png"
import { admin, auth, organisation } from "stores/portal" import { auth, organisation } from "stores/portal"
let show = false let show
$: tenantId = $auth.tenantId $: tenantId = $auth.tenantId
$: show = $organisation.google $: show = $organisation.google

View File

@ -33,18 +33,28 @@
$: GoogleConfigFields = { $: GoogleConfigFields = {
Google: [ Google: [
{name: "clientID", label: "Client ID"}, { name: "clientID", label: "Client ID" },
{name: "clientSecret", label: "Client secret"}, { name: "clientSecret", label: "Client secret" },
{name: "callbackURL", label: "Callback URL", readonly: true, placeholder: `/api/admin/auth/${tenantId}/google/callback`}, {
name: "callbackURL",
label: "Callback URL",
readonly: true,
placeholder: `/api/admin/auth/${tenantId}/google/callback`,
},
], ],
} }
$: OIDCConfigFields = { $: OIDCConfigFields = {
Oidc: [ Oidc: [
{name: "configUrl", label: "Config URL"}, { name: "configUrl", label: "Config URL" },
{name: "clientID", label: "Client ID"}, { name: "clientID", label: "Client ID" },
{name: "clientSecret", label: "Client Secret"}, { name: "clientSecret", label: "Client Secret" },
{name: "callbackURL", label: "Callback URL", readonly: true, placeholder: `/api/admin/auth/${tenantId}/oidc/callback`}, {
name: "callbackURL",
label: "Callback URL",
readonly: true,
placeholder: `/api/admin/auth/${tenantId}/oidc/callback`,
},
], ],
} }
@ -286,7 +296,11 @@
{#each GoogleConfigFields.Google as field} {#each GoogleConfigFields.Google as field}
<div class="form-row"> <div class="form-row">
<Label size="L">{field.label}</Label> <Label size="L">{field.label}</Label>
<Input bind:value={providers.google.config[field.name]} readonly={field.readonly} placeholder={field.placeholder} /> <Input
bind:value={providers.google.config[field.name]}
readonly={field.readonly}
placeholder={field.placeholder}
/>
</div> </div>
{/each} {/each}
<div class="form-row"> <div class="form-row">
@ -326,7 +340,11 @@
{#each OIDCConfigFields.Oidc as field} {#each OIDCConfigFields.Oidc as field}
<div class="form-row"> <div class="form-row">
<Label size="L">{field.label}</Label> <Label size="L">{field.label}</Label>
<Input bind:value={providers.oidc.config.configs[0][field.name]} readonly={field.readonly} placeholder={field.placeholder} /> <Input
bind:value={providers.oidc.config.configs[0][field.name]}
readonly={field.readonly}
placeholder={field.placeholder}
/>
</div> </div>
{/each} {/each}
<br /> <br />

View File

@ -22,12 +22,13 @@ export function createAdminStore() {
admin.update(store => { admin.update(store => {
store.checklist = json store.checklist = json
store.onboardingProgress = (stepsComplete / onboardingSteps.length) * 100 store.onboardingProgress =
(stepsComplete / onboardingSteps.length) * 100
return store return store
}) })
await multiTenancyEnabled() await multiTenancyEnabled()
} catch (err) { } catch (err) {
admin.update( store => { admin.update(store => {
store.checklist = null store.checklist = null
return store return store
}) })

View File

@ -14,7 +14,9 @@ export function createOidcStore() {
async function init() { async function init() {
const tenantId = get(auth).tenantId const tenantId = get(auth).tenantId
const res = await api.get(`/api/admin/configs/public/oidc?tenantId=${tenantId}`) const res = await api.get(
`/api/admin/configs/public/oidc?tenantId=${tenantId}`
)
const json = await res.json() const json = await res.json()
if (json.status === 400 || Object.keys(json).length === 0) { if (json.status === 400 || Object.keys(json).length === 0) {

View File

@ -1,4 +1,6 @@
const env = require("../../../environment") const env = require("../../../environment")
const CouchDB = require("../../../db")
const { StaticDatabases } = require("@budibase/auth/db")
exports.multiTenancyEnabled = async ctx => { exports.multiTenancyEnabled = async ctx => {
ctx.body = { ctx.body = {
@ -7,9 +9,32 @@ exports.multiTenancyEnabled = async ctx => {
} }
exports.exists = async ctx => { exports.exists = async ctx => {
const tenantId = ctx.request.params
const db = new CouchDB(StaticDatabases.PLATFORM_INFO.name)
let exists = false
try {
const tenantsDoc = await db.get(StaticDatabases.PLATFORM_INFO.docs.tenants)
if (tenantsDoc) {
exists = tenantsDoc.tenantIds.indexOf(tenantId) !== -1
}
} catch (err) {
// if error it doesn't exist
}
ctx.body = {
exists,
}
} }
exports.fetch = async ctx => { exports.fetch = async ctx => {
const db = new CouchDB(StaticDatabases.PLATFORM_INFO.name)
let tenants = []
try {
const tenantsDoc = await db.get(StaticDatabases.PLATFORM_INFO.docs.tenants)
if (tenantsDoc) {
tenants = tenantsDoc.tenantIds
}
} catch (err) {
// if error it doesn't exist
}
ctx.body = tenants
} }

View File

@ -45,7 +45,11 @@ async function doesTenantExist(tenantId) {
// if theres an error the doc doesn't exist, no tenants exist // if theres an error the doc doesn't exist, no tenants exist
return false return false
} }
return tenants && Array.isArray(tenants.tenantIds) && tenants.tenantIds.indexOf(tenantId) !== -1 return (
tenants &&
Array.isArray(tenants.tenantIds) &&
tenants.tenantIds.indexOf(tenantId) !== -1
)
} }
async function allUsers(ctx) { async function allUsers(ctx) {

View File

@ -47,7 +47,10 @@ router
.post("/api/admin/auth/logout", authController.logout) .post("/api/admin/auth/logout", authController.logout)
.get("/api/admin/auth/:tenantId/google", authController.googlePreAuth) .get("/api/admin/auth/:tenantId/google", authController.googlePreAuth)
.get("/api/admin/auth/:tenantId/google/callback", authController.googleAuth) .get("/api/admin/auth/:tenantId/google/callback", authController.googleAuth)
.get("/api/admin/auth/:tenantId/oidc/configs/:configId", authController.oidcPreAuth) .get(
"/api/admin/auth/:tenantId/oidc/configs/:configId",
authController.oidcPreAuth
)
.get("/api/admin/auth/:tenantId/oidc/callback", authController.oidcAuth) .get("/api/admin/auth/:tenantId/oidc/callback", authController.oidcAuth)
module.exports = router module.exports = router