const crypto = require('crypto'); const uuid = require('uuid/v4'); const hash = Symbol(); const sha256 = text => crypto.createHash('sha256').update(text).digest('base64'); class User { constructor(login = '', password = '') { this._id = uuid(); this.login = login; this[hash] = sha256(password); } static fromDB(dbUser) { let user = new User(); user._id = dbUser._id; user.login = dbUser.login; user[hash] = dbUser.hash; return user; } toDB() { let user = new User(); user._id = this._id; user.login = this.login; user.hash = this[hash]; return user; } checkPassword(password) { return this[hash] == sha256(password); } } module.exports = User;