AutoCatBackend/models/user.js

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;