1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00
pigallery2/backend/model/sql/UserManager.ts

71 lines
2.2 KiB
TypeScript
Raw Normal View History

2018-03-31 03:30:30 +08:00
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';
2017-07-10 04:36:25 +08:00
2016-12-27 23:09:47 +08:00
export class UserManager implements IUserManager {
2017-07-04 01:17:49 +08:00
constructor() {
}
2016-12-27 23:09:47 +08:00
2017-07-04 01:17:49 +08:00
public async findOne(filter: any) {
const connection = await SQLConnection.getConnection();
2017-07-10 04:36:25 +08:00
let pass = filter.password;
delete filter.password;
2017-07-04 01:17:49 +08:00
const user = (await connection.getRepository(UserEntity).findOne(filter));
2017-07-10 04:36:25 +08:00
2017-07-04 01:17:49 +08:00
if (user.permissions && user.permissions != null) {
user.permissions = <any>JSON.parse(<any>user.permissions);
2016-12-27 23:09:47 +08:00
}
2017-07-10 04:36:25 +08:00
if (pass && !PasswordHelper.comparePassword(pass, user.password)) {
2018-03-31 03:30:30 +08:00
throw 'No entry found';
2017-07-10 04:36:25 +08:00
}
2017-07-04 01:17:49 +08:00
return user;
};
public async find(filter: any) {
const connection = await SQLConnection.getConnection();
2017-07-04 01:17:49 +08:00
return (await connection.getRepository(UserEntity).find(filter)).map(user => {
if (user.permissions && user.permissions != null) {
user.permissions = <any>JSON.parse(<any>user.permissions);
}
return user;
});
}
public async createUser(user: UserDTO) {
const connection = await SQLConnection.getConnection();
2017-07-04 01:17:49 +08:00
if (user.permissions && user.permissions != null) {
user.permissions = <any>JSON.stringify(<any>user.permissions);
2016-12-27 23:09:47 +08:00
}
2017-07-11 15:01:59 +08:00
user.password = PasswordHelper.cryptPassword(user.password);
2017-10-20 00:08:07 +08:00
return await connection.getRepository(UserEntity).save(user);
2017-07-04 01:17:49 +08:00
}
2016-12-27 23:09:47 +08:00
2017-07-04 01:17:49 +08:00
public async deleteUser(id: number) {
const connection = await SQLConnection.getConnection();
2017-07-04 01:17:49 +08:00
const user = await connection.getRepository(UserEntity).findOne({id: id});
return await connection.getRepository(UserEntity).remove(user);
}
2016-12-27 23:09:47 +08:00
2017-07-04 01:17:49 +08:00
public async changeRole(id: number, newRole: UserRoles) {
2016-12-27 23:09:47 +08:00
const connection = await SQLConnection.getConnection();
2017-07-04 01:17:49 +08:00
let userRepository = connection.getRepository(UserEntity);
const user = await userRepository.findOne({id: id});
user.role = newRole;
2017-10-20 00:08:07 +08:00
return await userRepository.save(user);
2016-12-27 23:09:47 +08:00
2017-07-04 01:17:49 +08:00
}
2016-12-27 23:09:47 +08:00
2017-07-04 01:17:49 +08:00
public async changePassword(request: any) {
2018-03-31 03:30:30 +08:00
throw new Error('not implemented'); //TODO: implement
2017-07-04 01:17:49 +08:00
}
2016-12-27 23:09:47 +08:00
2017-07-04 01:17:49 +08:00
}