rename API files

This commit is contained in:
araemer 2025-11-13 21:34:06 +01:00
parent c8b8435b69
commit c3998ca039
11 changed files with 46 additions and 36 deletions

View file

@ -1,7 +1,7 @@
/** /**
* DTO for changing user password * DTO for changing user password
*/ */
export class ChangeUserPasswordRequestDto { export class ChangeUserPasswordRequest {
userId?: string; userId?: string;
password?: string; password?: string;
} }

View file

@ -3,7 +3,7 @@ import { UserDto } from "./UserDto.js";
/** /**
* DTO used for user creation * DTO used for user creation
*/ */
export class CreateUserRequestDto { export class CreateUserRequest {
userData?: UserDto; userData?: UserDto;
password?: string; password?: string;
} }

View file

@ -0,0 +1,5 @@
import { UserDto } from "./UserDto.js";
export class CreateUserResponse{
userData?: UserDto;
}

View file

@ -1,7 +1,7 @@
/** /**
* Defines a login request * Defines a login request
*/ */
export class LoginRequestDto { export class LoginRequest {
userName?: string; userName?: string;
password?: string; password?: string;
} }

View file

@ -0,0 +1,10 @@
import {UserDto} from "./UserDto.js";
/**
* Response to a successful login
*/
export class LoginResponse {
userData?: UserDto;
token?: string;
expiryDate?: Date;
}

View file

@ -1,10 +0,0 @@
import { UserDto } from "./UserDto.js";
/**
* Response to a successful login
*/
export class LoginResponseDto {
userData?: UserDto;
token?: string;
expiryDate? : Date;
}

View file

@ -1,5 +1,5 @@
import type { LoginRequestDto } from "../dtos/LoginRequestDto"; import type {LoginRequest} from "../dtos/LoginRequest.ts";
import type { LoginResponseDto } from "../dtos/LoginResponseDto"; import type {LoginResponse} from "../dtos/LoginResponse.ts";
import {postJson} from "../utils/requests"; import {postJson} from "../utils/requests";
@ -16,11 +16,11 @@ const AUTH_URL = `${BASE_URL}/auth`
/** /**
* Create new Recipe * Login to recipe app
* @param recipe Recipe to create * @param loginRequest Login Requets
* @returns Saved recipe * @returns LoginResponse
*/ */
export async function login(requestDto: LoginRequestDto): Promise<LoginResponseDto> { export async function login(loginRequest: LoginRequest): Promise<LoginResponse> {
const res = await postJson(`${AUTH_URL}/login`, JSON.stringify(requestDto), false); const res = await postJson(`${AUTH_URL}/login`, JSON.stringify(loginRequest), false);
return res.json(); return res.json();
} }

View file

@ -1,7 +1,8 @@
import {apiClient} from "../apiClient"; import {apiClient} from "../apiClient";
import type {UserDto} from "../dtos/UserDto"; import type {UserDto} from "../dtos/UserDto";
import type {CreateUserRequestDto} from "../dtos/CreateUserRequestDto"; import type {CreateUserRequest} from "../dtos/CreateUserRequest.ts";
import type {ChangeUserPasswordRequestDto} from "../dtos/ChangeUserPasswordRequestDto"; import type {ChangeUserPasswordRequest} from "../dtos/ChangeUserPasswordRequest.ts";
import type {CreateUserResponse} from "../dtos/CreateUserResponse.ts";
export async function fetchCurrentUser(): Promise<UserDto> { export async function fetchCurrentUser(): Promise<UserDto> {
return apiClient.get("/user/me"); return apiClient.get("/user/me");
@ -11,7 +12,7 @@ export async function fetchAllUsers(): Promise<UserDto[]> {
return apiClient.get("/user/list"); return apiClient.get("/user/list");
} }
export async function createUser(dto: CreateUserRequestDto): Promise<UserDto> { export async function createUser(dto: CreateUserRequest): Promise<CreateUserResponse> {
return apiClient.post("/user/create", dto); return apiClient.post("/user/create", dto);
} }
@ -19,6 +20,6 @@ export async function updateUser(dto: UserDto): Promise<UserDto> {
return apiClient.post("/user/update", dto); return apiClient.post("/user/update", dto);
} }
export async function changePassword(dto: ChangeUserPasswordRequestDto) { export async function changePassword(dto: ChangeUserPasswordRequest) {
return apiClient.post("/user/change-password", dto); return apiClient.post("/user/change-password", dto);
} }

View file

@ -1,7 +1,7 @@
import {useState} from "react"; import {useState} from "react";
import Button from "./basics/Button"; import Button from "./basics/Button";
import type {LoginRequestDto} from "../api/dtos/LoginRequestDto"; import type {LoginRequest} from "../api/dtos/LoginRequest.ts";
import type {LoginResponseDto} from "../api/dtos/LoginResponseDto"; import type {LoginResponse} from "../api/dtos/LoginResponse.ts";
import {login} from "../api/points/AuthPoint"; import {login} from "../api/points/AuthPoint";
import {getRecipeListUrl} from "../routes"; import {getRecipeListUrl} from "../routes";
import {useNavigate} from "react-router-dom"; import {useNavigate} from "react-router-dom";
@ -20,14 +20,14 @@ export default function LoginPage() {
* Login * Login
*/ */
const executeLogin = async () => { const executeLogin = async () => {
const dto: LoginRequestDto = { const dto: LoginRequest = {
userName, userName,
password, password,
}; };
try { try {
console.log("Trying to log in with " + dto.userName); console.log("Trying to log in with " + dto.userName);
const loginResponse: LoginResponseDto = await login(dto); const loginResponse: LoginResponse = await login(dto);
localStorage.setItem("session", JSON.stringify(loginResponse)); localStorage.setItem("session", JSON.stringify(loginResponse));
console.log("Successfully logged in as " + loginResponse.userData?.userName); console.log("Successfully logged in as " + loginResponse.userData?.userName);
setErrorMessage(null); setErrorMessage(null);

View file

@ -1,7 +1,7 @@
// src/components/basics/SettingsMenu.tsx // src/components/basics/SettingsMenu.tsx
import {X} from "lucide-react"; import {X} from "lucide-react";
import {useNavigate} from "react-router-dom"; import {useNavigate} from "react-router-dom";
import type {LoginResponseDto} from "../api/dtos/LoginResponseDto"; import type {LoginResponse} from "../api/dtos/LoginResponse.ts";
import {getUserUrl} from "../routes.ts"; import {getUserUrl} from "../routes.ts";
/** /**
@ -15,7 +15,7 @@ type SettingsMenuProps = {
export function SettingsMenu({onClose}: SettingsMenuProps) { export function SettingsMenu({onClose}: SettingsMenuProps) {
const navigate = useNavigate(); const navigate = useNavigate();
const storedSession = localStorage.getItem("session"); const storedSession = localStorage.getItem("session");
const loginData: LoginResponseDto | null = storedSession const loginData: LoginResponse | null = storedSession
? JSON.parse(storedSession) ? JSON.parse(storedSession)
: null; : null;
const user = loginData?.userData; const user = loginData?.userData;

View file

@ -16,6 +16,7 @@ import ButtonLink from "../basics/ButtonLink.tsx";
import {getRecipeListUrl} from "../../routes.ts"; import {getRecipeListUrl} from "../../routes.ts";
import TextLinkButton from "../basics/TextLinkButton.tsx"; import TextLinkButton from "../basics/TextLinkButton.tsx";
import SelectField from "../basics/SelectField.tsx"; import SelectField from "../basics/SelectField.tsx";
import type {CreateUserResponse} from "../../api/dtos/CreateUserResponse.ts";
/** /**
* UserManagementPage * UserManagementPage
@ -70,9 +71,12 @@ export default function UserManagementPage() {
try { try {
if (!selectedUser.id) { if (!selectedUser.id) {
//@todo check passwords! //@todo check passwords!
const created = await createUser({userData: selectedUser, password}); const response: CreateUserResponse = await createUser({userData: selectedUser, password});
setUsers([...users, created]); const userDto = response.userData;
setSelectedUser(created); if (userDto) {
setUsers([...users, userDto]);
setSelectedUser(userDto);
}
} else { } else {
const updated = await updateUser(selectedUser); const updated = await updateUser(selectedUser);
setUsers(users.map(u => (u.id === updated.id ? updated : u))); setUsers(users.map(u => (u.id === updated.id ? updated : u)));