Registration completed

This commit is contained in:
2024-07-30 23:25:47 +02:00
parent f2600a3012
commit edf23bdbaa
12 changed files with 191 additions and 73 deletions

View File

@@ -6,49 +6,91 @@ export interface Auth
{
id: Ref<number>;
data: Ref<Record<string, any>>;
token: Ref<string>;
session_id: Ref<number>;
sessionId: Ref<string>;
status: Ref<AuthStatus>;
lastRefresh: Ref<Date>;
register: (username: string, email: string, password: string, data?: Record<string, any>) => AuthStatus;
login: (usernameOrEmail: string, password: string) => AuthStatus;
logout: () => AuthStatus;
register: (username: string, email: string, password: string, data?: Record<string, any>) => Promise<any>;
login: (usernameOrEmail: string, password: string) => Promise<void>;
logout: () => Promise<void>;
refresh: () => AuthStatus;
refresh: () => Promise<void>;
}
const id = useState<number>("auth:id", () => 0);
const data = useState<any>("auth:data", () => {});
const token = useState<string>("auth:token", () => '');
const session_id = useState<number>("auth:session_id", () => 0);
const status = useState<AuthStatus>("auth:status", () => 0);
const lastRefresh = useState<Date>("auth:date", () => new Date());
async function register(username: string, email: string, password: string, additionalData?: Record<string, any>): Promise<any>
{
const id = useState<number>("auth:id");
const data = useState<any>("auth:data");
const sessionId = useState<string>("auth:sessionId");
const status = useState<AuthStatus>("auth:status");
const lastRefresh = useState<Date>("auth:date");
status.value = AuthStatus.loading;
function register(username: string, email: string, password: string, data?: Record<string, any>): AuthStatus
{
return AuthStatus.disconnected;
try
{
const result = await $fetch("/api/auth/register", {
method: 'POST',
body: { username, email, password, additionalData },
ignoreResponseError: true,
});
if(result.success)
{
id.value = result.id!;
data.value = { ...additionalData, username: username, email: email };
sessionId.value = result.sessionId!;
status.value = AuthStatus.connected;
lastRefresh.value = new Date();
return;
}
else if(result.error)
{
status.value = AuthStatus.disconnected;
return result.error;
}
else
{
status.value = AuthStatus.disconnected;
return;
}
}
catch(e) {
console.log(JSON.stringify(e));
status.value = AuthStatus.disconnected;
}
}
function login(usernameOrEmail: string, password: string): AuthStatus
async function login(usernameOrEmail: string, password: string): Promise<void>
{
return AuthStatus.disconnected;
const status = useState<AuthStatus>("auth:status");
status.value = AuthStatus.disconnected;
}
function logout(): AuthStatus
async function logout(): Promise<void>
{
return AuthStatus.disconnected;
const status = useState<AuthStatus>("auth:status");
status.value = AuthStatus.disconnected;
}
function refresh(): AuthStatus
async function refresh(): Promise<void>
{
return AuthStatus.disconnected;
const status = useState<AuthStatus>("auth:status");
status.value = AuthStatus.disconnected;
}
export default function useAuth(): Auth {
const id = useState<number>("auth:id", () => 0);
const data = useState<any>("auth:data", () => { });
const sessionId = useState<string>("auth:sessionId", () => '');
const status = useState<AuthStatus>("auth:status", () => AuthStatus.disconnected);
const lastRefresh = useState<Date>("auth:date", () => new Date());
return {
id, data, token, session_id, status, lastRefresh,
id, data, sessionId, status, lastRefresh,
register, login, logout, refresh
};
}