39 lines
768 B
JavaScript
39 lines
768 B
JavaScript
import { createHash } from 'crypto';
|
|
import { v4 as uuidv4 } from 'uuid';
|
|
|
|
const hash = Symbol();
|
|
const sha256 = text => createHash('sha256').update(text).digest('base64');
|
|
|
|
class User {
|
|
constructor(email = '', password = '') {
|
|
this._id = uuidv4();
|
|
this.email = email;
|
|
this[hash] = sha256(password);
|
|
}
|
|
|
|
static fromDB(dbUser) {
|
|
let user = new User();
|
|
user._id = dbUser._id;
|
|
user.email = dbUser.email;
|
|
user[hash] = dbUser.hash;
|
|
user.permissions = dbUser.permissions;
|
|
|
|
return user;
|
|
}
|
|
|
|
toDB() {
|
|
let user = new User();
|
|
user._id = this._id;
|
|
user.email = this.email;
|
|
user.hash = this[hash];
|
|
user.permissions = this.permissions;
|
|
return user;
|
|
}
|
|
|
|
checkPassword(password) {
|
|
return this[hash] == sha256(password);
|
|
}
|
|
}
|
|
|
|
export default User;
|