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;