-
Notifications
You must be signed in to change notification settings - Fork 249
Expand file tree
/
Copy pathmainOAuth.svelte
More file actions
83 lines (75 loc) · 2.86 KB
/
Copy pathmainOAuth.svelte
File metadata and controls
83 lines (75 loc) · 2.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<script lang="ts">
import { page } from '$app/state';
import { CopyInput, Modal } from '$lib/components';
import { Button, InputPassword, InputSwitch, InputText } from '$lib/elements/forms';
import { onMount } from 'svelte';
import { updateOAuth } from '../updateOAuth';
import type { Models } from '@appwrite.io/console';
import { oAuthProviders, Provider } from '$lib/stores/oauth-providers';
import { Link, Alert } from '@appwrite.io/pink-svelte';
import { getApiEndpoint } from '$lib/stores/sdk';
const projectId = page.params.project;
export let provider: Models.AuthProvider;
export let show = false;
let enabled: boolean = null;
let appId: string = null;
let secret: string = null;
let oAuthProvider: Provider;
onMount(() => {
enabled ??= provider.enabled;
appId ??= provider.appId;
secret ??= provider.secret;
oAuthProvider = oAuthProviders[provider.key];
});
let error: string;
const update = async () => {
const result = await updateOAuth({ projectId, provider, secret, appId, enabled });
if (result.status === 'error') {
error = result.message;
} else {
provider = null;
}
};
</script>
<Modal {error} bind:show onSubmit={update} on:close title={`${provider.name} OAuth2 settings`}>
<p slot="description">
To use {provider.name} authentication in your application, first fill in this form. For more info
you can
<Link.Anchor
class="link"
href={oAuthProvider?.docs}
target="_blank"
rel="noopener noreferrer">visit the docs.</Link.Anchor>
</p>
<InputSwitch id="state" bind:value={enabled} label={enabled ? 'Enabled' : 'Disabled'} />
<InputText
id="appID"
label={provider.key === 'github' || provider.key === 'githubenterprise' ? 'Client ID' : 'App ID'}
autofocus={true}
placeholder="Enter ID"
bind:value={appId}
required />
<InputPassword
id="secret"
label="App Secret"
placeholder="Enter App Secret"
minlength={0}
bind:value={secret}
required />
<Alert.Inline status="info">
To complete set up, add this OAuth2 redirect URI to your {provider.name} app configuration.
</Alert.Inline>
<CopyInput
label="URI"
value={`${getApiEndpoint(page.params.region)}/account/sessions/oauth2/callback/${provider.key}/${projectId}`} />
<svelte:fragment slot="footer">
<Button secondary on:click={() => (provider = null)}>Cancel</Button>
<Button
disabled={!appId ||
!secret ||
(secret === provider.secret &&
enabled === provider.enabled &&
appId === provider.appId)}
submit>Update</Button>
</svelte:fragment>
</Modal>