UNPKG

@vvkgaming/colyseussocialcustom

Version:

Authentication and Social features for Colyseus

36 lines (35 loc) 1.49 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var jsonwebtoken_1 = __importDefault(require("jsonwebtoken")); var crypto_1 = __importDefault(require("crypto")); var env_1 = require("./env"); function hashPassword(password) { // creating a unique salt for a particular user var salt = crypto_1.default.randomBytes(16).toString('hex'); // hashing user's salt and password with 1000 iterations, 32 length and sha512 digest var hash = crypto_1.default.pbkdf2Sync(password, salt, 1000, 32, "sha512").toString("hex"); return { salt: salt, hash: hash }; } exports.hashPassword = hashPassword; function isValidPassword(user, password) { var hash = crypto_1.default.pbkdf2Sync(password, user.passwordSalt, 1000, 32, "sha512").toString("hex"); return user.password === hash; } exports.isValidPassword = isValidPassword; function createToken(user) { return { token: jsonwebtoken_1.default.sign({ _id: user._id }, env_1.JWT_SECRET) }; // const expiresIn = 60 * 60; // an hour // const data = { _id: user._id }; // return { // expiresIn, // token: jwt.sign(data, JWT_SECRET, { expiresIn }) // }; } exports.createToken = createToken; function verifyToken(token) { return jsonwebtoken_1.default.verify(token, env_1.JWT_SECRET); } exports.verifyToken = verifyToken;