1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00
pigallery2/src/backend/model/database/sql/UserManager.ts
2020-01-07 22:17:54 +01:00

59 lines
1.8 KiB
TypeScript

import {UserDTO, UserRoles} from '../../../../common/entities/UserDTO';
import {IUserManager} from '../interfaces/IUserManager';
import {UserEntity} from './enitites/UserEntity';
import {SQLConnection} from './SQLConnection';
import {PasswordHelper} from '../../PasswordHelper';
export class UserManager implements IUserManager {
constructor() {
}
public async findOne(filter: any) {
const connection = await SQLConnection.getConnection();
const pass = filter.password;
delete filter.password;
const user = (await connection.getRepository(UserEntity).findOne(filter));
if (pass && !PasswordHelper.comparePassword(pass, user.password)) {
throw new Error('No entry found');
}
return user;
}
public async find(filter: any) {
const connection = await SQLConnection.getConnection();
return await connection.getRepository(UserEntity).find(filter);
}
public async createUser(user: UserDTO) {
const connection = await SQLConnection.getConnection();
user.password = PasswordHelper.cryptPassword(user.password);
return connection.getRepository(UserEntity).save(user);
}
public async deleteUser(id: number) {
const connection = await SQLConnection.getConnection();
const user = await connection.getRepository(UserEntity).findOne({id: id});
return await connection.getRepository(UserEntity).remove(user);
}
public async changeRole(id: number, newRole: UserRoles) {
const connection = await SQLConnection.getConnection();
const userRepository = connection.getRepository(UserEntity);
const user = await userRepository.findOne({id: id});
user.role = newRole;
return userRepository.save(user);
}
public async changePassword(request: any) {
throw new Error('not implemented'); // TODO: implement
}
}