wip: skeleton for users page
This commit is contained in:
parent
b0dc278880
commit
555cdcd5c4
|
@ -0,0 +1,7 @@
|
||||||
|
<script>
|
||||||
|
import { Page } from "@budibase/bbui"
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<Page>
|
||||||
|
<slot />
|
||||||
|
</Page>
|
|
@ -0,0 +1,114 @@
|
||||||
|
<script>
|
||||||
|
import GoogleLogo from "./logos/Google.svelte"
|
||||||
|
import {
|
||||||
|
Button,
|
||||||
|
Heading,
|
||||||
|
Divider,
|
||||||
|
Label,
|
||||||
|
notifications,
|
||||||
|
Layout,
|
||||||
|
Input,
|
||||||
|
Body,
|
||||||
|
} from "@budibase/bbui"
|
||||||
|
import { onMount } from "svelte"
|
||||||
|
import api from "builderStore/api"
|
||||||
|
|
||||||
|
const ConfigTypes = {
|
||||||
|
Google: "google",
|
||||||
|
// Github: "github",
|
||||||
|
// AzureAD: "ad",
|
||||||
|
}
|
||||||
|
|
||||||
|
const ConfigFields = {
|
||||||
|
Google: ["clientID", "clientSecret", "callbackURL"],
|
||||||
|
}
|
||||||
|
|
||||||
|
let google
|
||||||
|
|
||||||
|
async function save(doc) {
|
||||||
|
try {
|
||||||
|
// Save an oauth config
|
||||||
|
const response = await api.post(`/api/admin/configs`, doc)
|
||||||
|
const json = await response.json()
|
||||||
|
if (response.status !== 200) throw new Error(json.message)
|
||||||
|
google._rev = json._rev
|
||||||
|
google._id = json._id
|
||||||
|
|
||||||
|
notifications.success(`Settings saved.`)
|
||||||
|
} catch (err) {
|
||||||
|
notifications.error(`Failed to update OAuth settings. ${err}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMount(async () => {
|
||||||
|
// fetch the configs for oauth
|
||||||
|
const googleResponse = await api.get(
|
||||||
|
`/api/admin/configs/${ConfigTypes.Google}`
|
||||||
|
)
|
||||||
|
const googleDoc = await googleResponse.json()
|
||||||
|
|
||||||
|
if (!googleDoc._id) {
|
||||||
|
google = {
|
||||||
|
type: ConfigTypes.Google,
|
||||||
|
config: {},
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
google = googleDoc
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<header>
|
||||||
|
<Heading size="M">OAuth</Heading>
|
||||||
|
<Body size="S">
|
||||||
|
Every budibase app comes with basic authentication (email/password)
|
||||||
|
included. You can add additional authentication methods from the options
|
||||||
|
below.
|
||||||
|
</Body>
|
||||||
|
</header>
|
||||||
|
<Divider />
|
||||||
|
{#if google}
|
||||||
|
<div class="config-form">
|
||||||
|
<Layout gap="S">
|
||||||
|
<Heading size="S">
|
||||||
|
<span>
|
||||||
|
<GoogleLogo />
|
||||||
|
Google
|
||||||
|
</span>
|
||||||
|
</Heading>
|
||||||
|
{#each ConfigFields.Google as field}
|
||||||
|
<div class="form-row">
|
||||||
|
<Label>{field}</Label>
|
||||||
|
<Input bind:value={google.config[field]} />
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
</Layout>
|
||||||
|
<Button primary on:click={() => save(google)}>Save</Button>
|
||||||
|
</div>
|
||||||
|
<Divider />
|
||||||
|
{/if}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.config-form {
|
||||||
|
margin-top: 42px;
|
||||||
|
margin-bottom: 42px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-row {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 20% 1fr;
|
||||||
|
grid-gap: var(--spacing-l);
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--spacing-s);
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
margin-bottom: 42px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,43 @@
|
||||||
|
<svg
|
||||||
|
width="18"
|
||||||
|
height="18"
|
||||||
|
viewBox="0 0 268 268"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
>
|
||||||
|
<g clip-path="url(#clip0)">
|
||||||
|
<path
|
||||||
|
d="M58.8037 109.043C64.0284 93.2355 74.1116 79.4822 87.615 69.7447C101.118
|
||||||
|
60.0073 117.352 54.783 134 54.8172C152.872 54.8172 169.934 61.5172 183.334
|
||||||
|
72.4828L222.328 33.5C198.566 12.7858 168.114 0 134 0C81.1817 0 35.711
|
||||||
|
30.1277 13.8467 74.2583L58.8037 109.043Z"
|
||||||
|
fill="#EA4335"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M179.113 201.145C166.942 208.995 151.487 213.183 134 213.183C117.418
|
||||||
|
213.217 101.246 208.034 87.7727 198.369C74.2993 188.703 64.2077 175.044
|
||||||
|
58.9265 159.326L13.8132 193.574C24.8821 215.978 42.012 234.828 63.2572
|
||||||
|
247.984C84.5024 261.14 109.011 268.075 134 268C166.752 268 198.041 256.353
|
||||||
|
221.48 234.5L179.125 201.145H179.113Z"
|
||||||
|
fill="#34A853"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M221.48 234.5C245.991 211.631 261.903 177.595 261.903 134C261.903
|
||||||
|
126.072 260.686 117.552 258.866 109.634H134V161.414H205.869C202.329
|
||||||
|
178.823 192.804 192.301 179.125 201.145L221.48 234.5Z"
|
||||||
|
fill="#4A90E2"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M58.9265 159.326C56.1947 151.162 54.8068 142.609 54.8172 134C54.8172
|
||||||
|
125.268 56.213 116.882 58.8037 109.043L13.8467 74.2584C4.64957 92.825
|
||||||
|
-0.0915078 113.28 1.86708e-05 134C1.86708e-05 155.44 4.96919 175.652
|
||||||
|
13.8132 193.574L58.9265 159.326Z"
|
||||||
|
fill="#FBBC05"
|
||||||
|
/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0">
|
||||||
|
<rect width="268" height="268" fill="white" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1,60 @@
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
Heading,
|
||||||
|
Body,
|
||||||
|
Divider,
|
||||||
|
Button,
|
||||||
|
ButtonGroup,
|
||||||
|
Combobox,
|
||||||
|
Table,
|
||||||
|
Label,
|
||||||
|
Layout,
|
||||||
|
} from "@budibase/bbui"
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<div class="heading">
|
||||||
|
<Heading>Users</Heading>
|
||||||
|
<Body
|
||||||
|
>Users are the common denominator in Budibase. Each user is assigned to a
|
||||||
|
group that contains apps and permissions. In this section, you can add
|
||||||
|
users, or edit and delete an existing user.</Body
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<Divider size="S" />
|
||||||
|
|
||||||
|
<div class="users">
|
||||||
|
<Heading size="S">Users</Heading>
|
||||||
|
<div class="field">
|
||||||
|
<Label>Search / filter</Label>
|
||||||
|
<Combobox placeholder="" />
|
||||||
|
</div>
|
||||||
|
<div class="buttons">
|
||||||
|
<ButtonGroup>
|
||||||
|
<Button secondary>Import users</Button>
|
||||||
|
<Button overBackground>Add user</Button>
|
||||||
|
</ButtonGroup>
|
||||||
|
</div>
|
||||||
|
<Table schema />
|
||||||
|
</div>
|
||||||
|
</Layout>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.users {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.field {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
grid-gap: var(--spacing-m);
|
||||||
|
margin: var(--spacing-xl) 0;
|
||||||
|
}
|
||||||
|
.field > :global(*) + :global(*) {
|
||||||
|
margin-left: var(--spacing-m);
|
||||||
|
}
|
||||||
|
.buttons {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
</style>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue