Compare commits

...

3 Commits

Author SHA1 Message Date
4d00d4b936
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.
2024-06-11 16:59:02 +02:00
2c333d9c00
feat(component): update user data references from name to firstName
The changes replace the "name" property references with "firstName" in the account-info component. The user interface buttons' labels and input field placeholders now utilize "firstName" for user data. This adjustment provides clearer and more accurate data presentation to the users.
2024-06-11 16:58:43 +02:00
697dcbf4b8
feat(services): update baseUrl in apiRequest
This commit updates the baseUrl value in the apiRequest service. It now uses the API_URL from the environment variables, or defaults to "http://localhost:3333" if the environment variable is not set.
2024-06-11 16:55:45 +02:00
3 changed files with 45 additions and 4 deletions

View File

@ -23,7 +23,7 @@ export function AccountInfo({userData}: {userData: IUserData}) {
<SheetTrigger asChild> <SheetTrigger asChild>
<Button variant="outline" className={"gap-1"}> <Button variant="outline" className={"gap-1"}>
<User /> <User />
{userData?.name || "?"} {userData?.firstName || "?"}
</Button> </Button>
</SheetTrigger> </SheetTrigger>
<SheetContent> <SheetContent>
@ -38,7 +38,7 @@ export function AccountInfo({userData}: {userData: IUserData}) {
<Label htmlFor="name" className="text-right"> <Label htmlFor="name" className="text-right">
Name Name
</Label> </Label>
<Input id="name" placeholder={userData.name} className="col-span-3" onChange={(event)=>{console.log(event.target.value)}} /> <Input id="name" placeholder={userData.firstName} className="col-span-3" onChange={(event)=>{console.log(event.target.value)}} />
</div> </div>
<div className="grid grid-cols-4 items-center gap-4"> <div className="grid grid-cols-4 items-center gap-4">
<Label htmlFor="username" className="text-right"> <Label htmlFor="username" className="text-right">

View File

@ -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

View File

@ -2,7 +2,7 @@
import axios, {type AxiosResponse} from "axios"; import axios, {type AxiosResponse} from "axios";
const baseUrl = "" const baseUrl = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3333'
const AxiosConfigs = { const AxiosConfigs = {
authenticated: { authenticated: {