feat(handler): add login, registration functionality
The login and registration functionality have been implemented using the new `IApiLoginReq`, `IApiLoginRes`, `IApiRegisterReq`, `IApiRegisterRes` interfaces. These include error handling and data storing in local storage.
This commit is contained in:
parent
2c333d9c00
commit
4d00d4b936
@ -2,13 +2,54 @@
|
|||||||
|
|
||||||
import { createContext, useContext, useState } from 'react';
|
import { createContext, useContext, useState } from 'react';
|
||||||
import {IUserData} from "@/interfaces/userdata.interface";
|
import {IUserData} from "@/interfaces/userdata.interface";
|
||||||
|
import {IApiLoginReq, IApiLoginRes, IApiRegisterReq, IApiRegisterRes} from "@/interfaces/api.interface";
|
||||||
|
import ApiRequest from "@/services/apiRequest";
|
||||||
|
import {useEncodedLocalStorage} from "@/services/localStorage";
|
||||||
|
|
||||||
const UserDataContext = createContext<IUserData>({name: "Avnyr"})
|
const UserDataContext = createContext<IUserData | null>(null)
|
||||||
|
const [userData, setUserData] = useEncodedLocalStorage<IUserData | null>("user_data", null)
|
||||||
|
|
||||||
//TODO Run register task
|
//TODO Run register task
|
||||||
|
export async function doRegister(registerData: IApiRegisterReq): Promise<IApiRegisterRes | null> {
|
||||||
|
console.trace(registerData)
|
||||||
|
try {
|
||||||
|
const ReqRes = await ApiRequest.standard.post.json<IApiRegisterReq, IApiRegisterRes>("auth/signup", registerData)
|
||||||
|
console.trace(ReqRes.data)
|
||||||
|
if (ReqRes.data.user) {
|
||||||
|
setUserData(ReqRes.data.user)
|
||||||
|
}
|
||||||
|
ReqRes.data.message?.forEach((err)=> console.warn(err))
|
||||||
|
return ReqRes.data
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error during registration:', error);
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//TODO Run login task
|
//TODO Run login task
|
||||||
|
export async function doLogin(loginData: IApiLoginReq) {
|
||||||
|
try {
|
||||||
|
const ReqRes = await ApiRequest.standard.post.json<IApiLoginReq, IApiLoginRes>("auth/login", loginData)
|
||||||
|
console.trace(ReqRes.data)
|
||||||
|
//if (ReqRes.data.user) {
|
||||||
|
// setUserData(ReqRes.data.user)
|
||||||
|
//}
|
||||||
|
ReqRes.data.message?.forEach((err)=> console.warn(err))
|
||||||
|
return ReqRes.data
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Error during login:', err);
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//TODO Run disconnect task
|
//TODO Run disconnect task
|
||||||
|
export function doDisconnect() {
|
||||||
|
if (typeof window !== 'undefined') {
|
||||||
|
window.localStorage.removeItem('sub')
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
console.log('Whut ? Why trying to remove an item from the localStorage when runner in SSR ?')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
//TODO Run update user data
|
//TODO Run update user data
|
Loading…
x
Reference in New Issue
Block a user