added login and register

This commit is contained in:
lusixing
2026-01-27 19:52:36 -08:00
parent b8c241c1a0
commit 4d94888bb8
10 changed files with 960 additions and 151 deletions

View File

@@ -0,0 +1,80 @@
import { LoginRequest, LoginResponse, RegisterRequest, User } from '../types';
const PLATFORM_URL = 'http://192.168.56.103:8000';
const no_backend_mode = true;
const MOCK_USER: User = {
id: 999,
username: 'MockCaptain',
public_key: 'mock_public_key',
is_admin: true,
guale: false,
tier: 'premium',
tier_expires_at: '2026-12-31T23:59:59Z',
last_active_at: new Date().toISOString(),
};
export const authService = {
async login(credentials: LoginRequest): Promise<LoginResponse> {
if (no_backend_mode) {
console.log('No-Backend Mode: Simulating login...');
return new Promise((resolve) => {
setTimeout(() => {
resolve({
access_token: 'mock_access_token',
token_type: 'bearer',
user: { ...MOCK_USER, username: credentials.username },
});
}, 200);
});
}
try {
const response = await fetch(`${PLATFORM_URL}/login`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(credentials),
});
if (!response.ok) {
throw new Error('Login failed');
}
return await response.json();
} catch (error) {
console.error('Login error:', error);
throw error;
}
},
async register(data: RegisterRequest): Promise<User> {
if (no_backend_mode) {
console.log('No-Backend Mode: Simulating registration...');
return new Promise((resolve) => {
setTimeout(() => {
resolve({ ...MOCK_USER, username: data.username });
}, 200);
});
}
try {
const response = await fetch(`${PLATFORM_URL}/register`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
});
if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
throw new Error(errorData.detail?.[0]?.msg || 'Registration failed');
}
return await response.json();
} catch (error) {
console.error('Registration error:', error);
throw error;
}
},
};