add auth and user handling

This commit is contained in:
Anika Raemer 2025-09-21 19:49:54 +02:00
parent db057ce342
commit 1fce467571
19 changed files with 356 additions and 32 deletions

View file

@ -0,0 +1,31 @@
import { AbstractDto } from "../dtos/AbstractDto";
import { AbstractEntity } from "../entities/AbstractEntity";
export abstract class AbstractDtoEntityMapper<
E extends AbstractEntity,
D extends AbstractDto
> {
/**
* Map base entity fields (id, createdAt, updatedAt) to DTO.
*/
protected mapBaseEntityToDto(entity: E, dto: D): D {
dto.id = entity.id;
dto.createdAt = entity.createdAt;
dto.updatedAt = entity.updatedAt;
return dto;
}
/**
* Map base DTO fields to entity.
*/
protected mapBaseDtoToEntity(dto: D, entity: E): E {
entity.id = dto.id;
entity.createdAt = dto.createdAt;
entity.updatedAt = dto.updatedAt;
return entity;
}
// Abstract methods to be implemented by subclasses
abstract toDto(entity: E): D;
abstract toEntity(dto: D): E;
}

View file

@ -0,0 +1,32 @@
import { AbstractDtoEntityMapper } from "./AbstractDtoEntityMapper";
import { UserEntity } from "../entities/UserEntity";
import { UserDto } from "../dtos/UserDto";
export class UserDtoEntityMapper extends AbstractDtoEntityMapper<UserEntity, UserDto> {
toDto(entity: UserEntity): UserDto {
const dto = new UserDto();
this.mapBaseEntityToDto(entity, dto);
dto.userName = entity.userName;
dto.email = entity.email;
dto.firstName = entity.firstName;
dto.lastName = entity.lastName;
dto.role = entity.role;
return dto;
}
toEntity(dto: UserDto): UserEntity {
const entity = new UserEntity();
this.mapBaseDtoToEntity(dto, entity);
entity.userName = dto.userName;
entity.email = dto.email;
// ⚠️ Dont forget password handling — usually set elsewhere, not exposed in DTO
entity.firstName = dto.firstName;
entity.lastName = dto.lastName;
entity.role = dto.role;
return entity;
}
}