import { IsArray, IsBoolean, IsOptional, IsString } from "class-validator"; import { Permission } from '../entities/Permission'; import { User } from '../entities/User'; import { UserGroup } from '../entities/UserGroup'; import { ResponsePrincipal } from './ResponsePrincipal'; /** * Defines the user response. */ export class ResponseUser extends ResponsePrincipal { /** * The user's first name. */ @IsString() firstname: string; /** * The user's middle name. */ @IsString() middlename?: string; /** * The user's last name. */ @IsString() lastname: string; /** * The user's phone number. */ @IsString() phone?: string; /** * The user's e-mail address. */ @IsString() email?: string; /** * The user's username. */ @IsString() username?: string; /** * Is user enabled? */ @IsBoolean() enabled: boolean = true; /** * The user's profile pic. */ @IsString() @IsOptional() profilePic?: string; /** * The groups that the user is a part of. */ @IsArray() @IsOptional() groups: UserGroup[]; /** * The user's permissions. */ @IsArray() @IsOptional() permissions: Permission[]; /** * Creates a ResponseUser object from a user. * @param user The user the response shall be build for. */ public constructor(user: User) { super(user); this.firstname = user.firstname; this.middlename = user.middlename; this.lastname = user.lastname; this.phone = user.phone; this.email = user.email; this.username = user.username; this.enabled = user.enabled; this.profilePic = user.profilePic; this.groups = user.groups; this.permissions = user.permissions; } }