Add missing properties to first name and last name user schema
This commit is contained in:
parent
1c84cacc59
commit
2cc37e196d
|
@ -1,43 +0,0 @@
|
||||||
<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>
|
|
Before Width: | Height: | Size: 1.5 KiB |
|
@ -1,115 +0,0 @@
|
||||||
<script>
|
|
||||||
import GoogleLogo from "./_logos/Google.svelte"
|
|
||||||
import {
|
|
||||||
Button,
|
|
||||||
Heading,
|
|
||||||
Divider,
|
|
||||||
Label,
|
|
||||||
notifications,
|
|
||||||
Layout,
|
|
||||||
Input,
|
|
||||||
Body,
|
|
||||||
Page,
|
|
||||||
} 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>
|
|
||||||
|
|
||||||
<Page>
|
|
||||||
<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}
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<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>
|
|
|
@ -1,43 +0,0 @@
|
||||||
<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>
|
|
Before Width: | Height: | Size: 1.5 KiB |
|
@ -1,114 +0,0 @@
|
||||||
<script>
|
|
||||||
import GoogleLogo from "./_logos/Google.svelte"
|
|
||||||
import {
|
|
||||||
Button,
|
|
||||||
Page,
|
|
||||||
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>
|
|
||||||
|
|
||||||
<Page>
|
|
||||||
<Layout noPadding>
|
|
||||||
<div>
|
|
||||||
<Heading size="M">OAuth</Heading>
|
|
||||||
<Body>
|
|
||||||
Every budibase app comes with basic authentication (email/password)
|
|
||||||
included. You can add additional authentication methods from the options
|
|
||||||
below.
|
|
||||||
</Body>
|
|
||||||
</div>
|
|
||||||
<Divider />
|
|
||||||
{#if google}
|
|
||||||
<div>
|
|
||||||
<Heading size="S">
|
|
||||||
<span>
|
|
||||||
<GoogleLogo />
|
|
||||||
Google
|
|
||||||
</span>
|
|
||||||
</Heading>
|
|
||||||
<Body>
|
|
||||||
To allow users to authenticate using their Google accounts, fill out
|
|
||||||
the fields below.
|
|
||||||
</Body>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{#each ConfigFields.Google as field}
|
|
||||||
<div class="form-row">
|
|
||||||
<Label size="L">{field}</Label>
|
|
||||||
<Input bind:value={google.config[field]} />
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
<div>
|
|
||||||
<Button cta on:click={() => save(google)}>Save</Button>
|
|
||||||
</div>
|
|
||||||
<Divider />
|
|
||||||
{/if}
|
|
||||||
</Layout>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.form-row {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 20% 1fr;
|
|
||||||
grid-gap: var(--spacing-l);
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: var(--spacing-s);
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -50,6 +50,24 @@ exports.USERS_TABLE_SCHEMA = {
|
||||||
fieldName: "email",
|
fieldName: "email",
|
||||||
name: "email",
|
name: "email",
|
||||||
},
|
},
|
||||||
|
firstName: {
|
||||||
|
name: "firstName",
|
||||||
|
fieldName: "firstName",
|
||||||
|
type: exports.FieldTypes.STRING,
|
||||||
|
constraints: {
|
||||||
|
type: exports.FieldTypes.STRING,
|
||||||
|
presence: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lastName: {
|
||||||
|
name: "lastName",
|
||||||
|
fieldName: "lastName",
|
||||||
|
type: exports.FieldTypes.STRING,
|
||||||
|
constraints: {
|
||||||
|
type: exports.FieldTypes.STRING,
|
||||||
|
presence: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
roleId: {
|
roleId: {
|
||||||
fieldName: "roleId",
|
fieldName: "roleId",
|
||||||
name: "roleId",
|
name: "roleId",
|
||||||
|
|
Loading…
Reference in New Issue