feat(#29): use magic link to sign in

This commit is contained in:
OllyNicholass
2024-09-17 21:14:39 +01:00
parent 32a3feef64
commit 6e1d38ef58
7 changed files with 65 additions and 39 deletions
+13 -15
View File
@@ -8,41 +8,39 @@ export const load: PageServerLoad = async ({ locals: { supabase, safeGetSession
redirect(303, '/');
}
const { data: profile } = await supabase
.from('profiles')
.select(`username, full_name`)
const { data: user } = await supabase
.from('users')
.select(`name`)
.eq('id', session.user.id)
.single();
return { session, profile };
return { session, user };
};
export const actions: Actions = {
update: async ({ request, locals: { supabase, safeGetSession } }) => {
const formData = await request.formData();
const fullName = formData.get('fullName') as string;
const name = formData.get('name') as string;
const { session } = await safeGetSession();
const { error } = await supabase.from('profiles').upsert({
id: session?.user.id,
full_name: fullName,
username: session?.user.email,
updated_at: new Date()
});
if (!session) {
return fail(401, { name });
}
const { error } = await supabase.from('users').update({
name: name,
}).eq('id', session?.user.id);
console.error(error);
if (error) {
return fail(500, {
fullName,
username: session?.user.email
name,
});
}
return {
fullName,
username: session?.user.email
name,
};
},
signout: async ({ locals: { supabase, safeGetSession } }) => {
+5 -10
View File
@@ -5,12 +5,12 @@
export let data;
export let form;
let { session, supabase, profile } = data;
$: ({ session, supabase, profile } = data);
let { session, supabase, user } = data;
$: ({ session, supabase, user } = data);
let profileForm: HTMLFormElement;
let loading = false;
let fullName: string = profile?.full_name ?? '';
let name: string = user?.name ?? '';
const handleSubmit: SubmitFunction = () => {
loading = true;
@@ -37,13 +37,8 @@
bind:this={profileForm}
>
<div>
<label for="email">Username</label>
<input id="email" type="text" value={session.user.email} disabled />
</div>
<div>
<label for="fullName">Full Name</label>
<input id="fullName" name="fullName" type="text" value={form?.fullName ?? fullName} />
<label for="name">Name</label>
<input id="name" name="name" type="text" value={form?.name ?? name} />
</div>
<div>