mirror of
https://github.com/DerTyp7/f1r3wave-website.git
synced 2025-10-29 13:02:09 +01:00
36 lines
821 B
TypeScript
36 lines
821 B
TypeScript
'use server';
|
|
|
|
import { signIn, signOut } from '@/auth';
|
|
import { AuthError } from 'next-auth';
|
|
import { redirect } from 'next/navigation';
|
|
|
|
export async function authenticate(_prevState: string | undefined, formData: FormData): Promise<string> {
|
|
try {
|
|
const result = await signIn('credentials', {
|
|
redirect: false,
|
|
token: formData.get('token'),
|
|
});
|
|
|
|
if (result?.error) {
|
|
return 'Invalid token';
|
|
}
|
|
|
|
redirect('/admin');
|
|
} catch (error) {
|
|
if (error instanceof AuthError) {
|
|
switch (error.type) {
|
|
case 'CredentialsSignin':
|
|
return 'Invalid token';
|
|
default:
|
|
return 'Something went wrong';
|
|
}
|
|
}
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
export async function performLogout() {
|
|
await signOut({ redirectTo: '/', redirect: true });
|
|
redirect('/');
|
|
}
|