profile avatar
This commit is contained in:
+14
-14
@@ -39,6 +39,7 @@ export interface AuthTokensResponse {
|
|||||||
lastName: string;
|
lastName: string;
|
||||||
mobile: string;
|
mobile: string;
|
||||||
role: UserRole;
|
role: UserRole;
|
||||||
|
avatarUrl: string | null;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -403,13 +404,7 @@ export class AuthService {
|
|||||||
const user = await this.usersService.findOne(authUser.id);
|
const user = await this.usersService.findOne(authUser.id);
|
||||||
|
|
||||||
const response: MeResponse = {
|
const response: MeResponse = {
|
||||||
user: {
|
user: this.toAuthUserResponse(user),
|
||||||
id: user.id,
|
|
||||||
firstName: user.firstName,
|
|
||||||
lastName: user.lastName,
|
|
||||||
mobile: user.mobile,
|
|
||||||
role: user.role,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (user.role === UserRole.SALON) {
|
if (user.role === UserRole.SALON) {
|
||||||
@@ -477,13 +472,18 @@ export class AuthService {
|
|||||||
return {
|
return {
|
||||||
accessToken,
|
accessToken,
|
||||||
refreshToken,
|
refreshToken,
|
||||||
user: {
|
user: this.toAuthUserResponse(user),
|
||||||
id: user.id,
|
};
|
||||||
firstName: user.firstName,
|
}
|
||||||
lastName: user.lastName,
|
|
||||||
mobile: user.mobile,
|
private toAuthUserResponse(user: User): AuthTokensResponse['user'] {
|
||||||
role: user.role,
|
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 })
|
@ApiProperty({ enum: UserRole })
|
||||||
role: UserRole;
|
role: UserRole;
|
||||||
|
|
||||||
|
@ApiProperty({ nullable: true, required: false })
|
||||||
|
avatarUrl?: string | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class AuthTokensResponseDto {
|
export class AuthTokensResponseDto {
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ class MeUserResponseDto {
|
|||||||
|
|
||||||
@ApiProperty({ enum: UserRole })
|
@ApiProperty({ enum: UserRole })
|
||||||
role: UserRole;
|
role: UserRole;
|
||||||
|
|
||||||
|
@ApiPropertyOptional({ nullable: true })
|
||||||
|
avatarUrl?: string | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class MeResponseDto {
|
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';
|
import { UserRole } from '../enums/user-role.enum';
|
||||||
|
|
||||||
export class UpdateUserDto {
|
export class UpdateUserDto {
|
||||||
@@ -19,4 +27,10 @@ export class UpdateUserDto {
|
|||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsEnum(UserRole)
|
@IsEnum(UserRole)
|
||||||
role?: 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 })
|
@Column({ type: 'enum', enum: UserRole, default: UserRole.CUSTOMER })
|
||||||
role: UserRole;
|
role: UserRole;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 500, nullable: true })
|
||||||
|
avatarUrl: string | null;
|
||||||
|
|
||||||
@CreateDateColumn()
|
@CreateDateColumn()
|
||||||
createdAt: Date;
|
createdAt: Date;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user