set hash after profile image change

This commit is contained in:
Paul Paffe
2023-07-06 14:29:16 -04:00
parent 5874fc73ff
commit 041a8ad1d1
2 changed files with 7 additions and 7 deletions
+4 -5
View File
@@ -120,17 +120,16 @@ export class UserCore {
if (!user.profileImageHash) { if (!user.profileImageHash) {
throw new NotFoundException('User does not have a profile image'); throw new NotFoundException('User does not have a profile image');
} }
return user.profileImageHash; return user.profileImageHash;
}
async getList(filter?: UserListFilter): Promise<UserEntity[]> { async getList(filter?: UserListFilter): Promise<UserEntity[]> {
return this.userRepository.getList(filter); return this.userRepository.getList(filter);
} }
async createProfileImage(authUser: AuthUserDto, filePath: string): Promise<UserEntity> { async createProfileImage(authUser: AuthUserDto, filePath: string, hash: string): Promise<UserEntity> {
try { try {
return this.userRepository.update(authUser.id, { profileImagePath: filePath }); return this.userRepository.update(authUser.id, { profileImagePath: filePath, profileImageHash: hash });
} catch (e) { } catch (e) {
Logger.error(e, 'Create User Profile Image'); Logger.error(e, 'Create User Profile Image');
throw new InternalServerErrorException('Failed to create new user profile image'); throw new InternalServerErrorException('Failed to create new user profile image');
+3 -2
View File
@@ -1,6 +1,6 @@
import { UserEntity } from '@app/infra/entities'; import { UserEntity } from '@app/infra/entities';
import { BadRequestException, Inject, Injectable, Logger, NotFoundException } from '@nestjs/common'; import { BadRequestException, Inject, Injectable, Logger, NotFoundException } from '@nestjs/common';
import { randomBytes } from 'crypto'; import { createHash, randomBytes } from 'crypto';
import { ReadStream } from 'fs'; import { ReadStream } from 'fs';
import { IAlbumRepository } from '../album/album.repository'; import { IAlbumRepository } from '../album/album.repository';
import { IAssetRepository } from '../asset/asset.repository'; import { IAssetRepository } from '../asset/asset.repository';
@@ -108,7 +108,8 @@ export class UserService {
authUser: AuthUserDto, authUser: AuthUserDto,
fileInfo: Express.Multer.File, fileInfo: Express.Multer.File,
): Promise<CreateProfileImageResponseDto> { ): Promise<CreateProfileImageResponseDto> {
const updatedUser = await this.userCore.createProfileImage(authUser, fileInfo.path); const hash = createHash('md5').update(fileInfo.buffer).digest('hex');
const updatedUser = await this.userCore.createProfileImage(authUser, fileInfo.path, hash);
return mapCreateProfileImageResponse(updatedUser.id, updatedUser.profileImagePath); return mapCreateProfileImageResponse(updatedUser.id, updatedUser.profileImagePath);
} }