profile avatar
This commit is contained in:
+14
-14
@@ -39,6 +39,7 @@ export interface AuthTokensResponse {
|
||||
lastName: string;
|
||||
mobile: string;
|
||||
role: UserRole;
|
||||
avatarUrl: string | null;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -403,13 +404,7 @@ export class AuthService {
|
||||
const user = await this.usersService.findOne(authUser.id);
|
||||
|
||||
const response: MeResponse = {
|
||||
user: {
|
||||
id: user.id,
|
||||
firstName: user.firstName,
|
||||
lastName: user.lastName,
|
||||
mobile: user.mobile,
|
||||
role: user.role,
|
||||
},
|
||||
user: this.toAuthUserResponse(user),
|
||||
};
|
||||
|
||||
if (user.role === UserRole.SALON) {
|
||||
@@ -477,13 +472,18 @@ export class AuthService {
|
||||
return {
|
||||
accessToken,
|
||||
refreshToken,
|
||||
user: {
|
||||
id: user.id,
|
||||
firstName: user.firstName,
|
||||
lastName: user.lastName,
|
||||
mobile: user.mobile,
|
||||
role: user.role,
|
||||
},
|
||||
user: this.toAuthUserResponse(user),
|
||||
};
|
||||
}
|
||||
|
||||
private toAuthUserResponse(user: User): AuthTokensResponse['user'] {
|
||||
return {
|
||||
id: user.id,
|
||||
firstName: user.firstName,
|
||||
lastName: user.lastName,
|
||||
mobile: user.mobile,
|
||||
role: user.role,
|
||||
avatarUrl: user.avatarUrl ?? null,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,9 @@ class AuthUserResponseDto {
|
||||
|
||||
@ApiProperty({ enum: UserRole })
|
||||
role: UserRole;
|
||||
|
||||
@ApiProperty({ nullable: true, required: false })
|
||||
avatarUrl?: string | null;
|
||||
}
|
||||
|
||||
export class AuthTokensResponseDto {
|
||||
|
||||
@@ -18,6 +18,9 @@ class MeUserResponseDto {
|
||||
|
||||
@ApiProperty({ enum: UserRole })
|
||||
role: UserRole;
|
||||
|
||||
@ApiPropertyOptional({ nullable: true })
|
||||
avatarUrl?: string | null;
|
||||
}
|
||||
|
||||
export class MeResponseDto {
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import { MigrationInterface, QueryRunner, TableColumn } from 'typeorm';
|
||||
|
||||
export class AddUserAvatarUrl1722200000000 implements MigrationInterface {
|
||||
name = 'AddUserAvatarUrl1722200000000';
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.addColumn(
|
||||
'users',
|
||||
new TableColumn({
|
||||
name: 'avatarUrl',
|
||||
type: 'varchar',
|
||||
length: '500',
|
||||
isNullable: true,
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.dropColumn('users', 'avatarUrl');
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,12 @@
|
||||
import { IsEnum, IsOptional, IsString, Length, Matches } from 'class-validator';
|
||||
import {
|
||||
IsEnum,
|
||||
IsOptional,
|
||||
IsString,
|
||||
IsUrl,
|
||||
Length,
|
||||
Matches,
|
||||
ValidateIf,
|
||||
} from 'class-validator';
|
||||
import { UserRole } from '../enums/user-role.enum';
|
||||
|
||||
export class UpdateUserDto {
|
||||
@@ -19,4 +27,10 @@ export class UpdateUserDto {
|
||||
@IsOptional()
|
||||
@IsEnum(UserRole)
|
||||
role?: UserRole;
|
||||
|
||||
@IsOptional()
|
||||
@ValidateIf((_, value) => value !== null)
|
||||
@IsString()
|
||||
@IsUrl()
|
||||
avatarUrl?: string | null;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@ export class User {
|
||||
@Column({ type: 'enum', enum: UserRole, default: UserRole.CUSTOMER })
|
||||
role: UserRole;
|
||||
|
||||
@Column({ type: 'varchar', length: 500, nullable: true })
|
||||
avatarUrl: string | null;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user