build ok,

This commit is contained in:
louiscklaw
2025-04-14 09:26:24 +08:00
commit 6c931c1fe8
770 changed files with 63959 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
'use client';
import type { User } from '@/types/user';
function generateToken(): string {
const arr = new Uint8Array(12);
window.crypto.getRandomValues(arr);
return Array.from(arr, (v) => v.toString(16).padStart(2, '0')).join('');
}
const user = {
id: 'USR-000',
avatar: '/assets/avatar.png',
firstName: 'Sofia',
lastName: 'Rivers',
email: 'sofia@devias.io',
} satisfies User;
export interface SignUpParams {
firstName: string;
lastName: string;
email: string;
password: string;
}
export interface SignInWithOAuthParams {
provider: 'google' | 'discord';
}
export interface SignInWithPasswordParams {
email: string;
password: string;
}
export interface ResetPasswordParams {
email: string;
}
class AuthClient {
async signUp(_: SignUpParams): Promise<{ error?: string }> {
// Make API request
// We do not handle the API, so we'll just generate a token and store it in localStorage.
const token = generateToken();
localStorage.setItem('custom-auth-token', token);
return {};
}
async signInWithOAuth(_: SignInWithOAuthParams): Promise<{ error?: string }> {
return { error: 'Social authentication not implemented' };
}
async signInWithPassword(params: SignInWithPasswordParams): Promise<{ error?: string }> {
const { email, password } = params;
// Make API request
// We do not handle the API, so we'll check if the credentials match with the hardcoded ones.
if (email !== 'sofia@devias.io' || password !== 'Secret1') {
return { error: 'Invalid credentials' };
}
const token = generateToken();
localStorage.setItem('custom-auth-token', token);
return {};
}
async resetPassword(_: ResetPasswordParams): Promise<{ error?: string }> {
return { error: 'Password reset not implemented' };
}
async updatePassword(_: ResetPasswordParams): Promise<{ error?: string }> {
return { error: 'Update reset not implemented' };
}
async getUser(): Promise<{ data?: User | null; error?: string }> {
// Make API request
// We do not handle the API, so just check if we have a token in localStorage.
const token = localStorage.getItem('custom-auth-token');
if (!token) {
return { data: null };
}
return { data: user };
}
async signOut(): Promise<{ error?: string }> {
localStorage.removeItem('custom-auth-token');
return {};
}
}
export const authClient = new AuthClient();