a bit timeout
This commit is contained in:
Vendored
+68
@@ -0,0 +1,68 @@
|
||||
"use strict";
|
||||
var __rest = (this && this.__rest) || function (s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||||
t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||||
t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.authRouter = void 0;
|
||||
const express_1 = require("express");
|
||||
const pbkdf2_password_1 = __importDefault(require("pbkdf2-password"));
|
||||
const uuid_1 = require("uuid");
|
||||
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
||||
const express_jwt_1 = __importDefault(require("express-jwt"));
|
||||
const makeHash = (0, pbkdf2_password_1.default)();
|
||||
exports.authRouter = (0, express_1.Router)();
|
||||
const requiredFields = (fields) => (req, res, next) => {
|
||||
for (const fieldName of fields) {
|
||||
if (!req.body[fieldName]) {
|
||||
throw new Error(`Field ${fieldName} does\'t set`);
|
||||
}
|
||||
}
|
||||
next();
|
||||
};
|
||||
const users = [];
|
||||
exports.authRouter.get('/users', (0, express_jwt_1.default)({ secret: process.env.JWT_SECRET_STRING, algorithms: ['HS256'] }), (req, res) => {
|
||||
res.send(users);
|
||||
});
|
||||
exports.authRouter.post('/sign-in', requiredFields(['password', 'login']), (req, res) => {
|
||||
const { password, login } = req.body;
|
||||
const user = users.find(u => u.login === login);
|
||||
if (!user) {
|
||||
res.status(400).send({ error: 'Login or password does\'t match' });
|
||||
return;
|
||||
}
|
||||
makeHash({ password, salt: user.salt }, (err, pass, salt, hash) => {
|
||||
if (err)
|
||||
throw err;
|
||||
if (user.hash === hash) {
|
||||
const { hash: _hash, salt: _salt } = user, cleanUser = __rest(user, ["hash", "salt"]);
|
||||
req.session.user = cleanUser;
|
||||
const token = jsonwebtoken_1.default.sign(cleanUser, process.env.JWT_SECRET_STRING, {});
|
||||
return res.send({ token, user: cleanUser });
|
||||
}
|
||||
res.status(400).send({ error: 'Login or password does\'t match' });
|
||||
});
|
||||
});
|
||||
exports.authRouter.post('/sign-up', requiredFields(['password', 'login', 'email']), (req, res, next) => {
|
||||
const _a = req.body, { password, login } = _a, rest = __rest(_a, ["password", "login"]);
|
||||
makeHash({ password }, function (err, pass, salt, hash) {
|
||||
if (err)
|
||||
throw err;
|
||||
const newUser = Object.assign(Object.assign({ id: (0, uuid_1.v4)() }, rest), { login,
|
||||
salt,
|
||||
hash });
|
||||
users.push(newUser);
|
||||
const { hash: _hash, salt: _salt } = newUser, cleanUser = __rest(newUser, ["hash", "salt"]);
|
||||
res.send(cleanUser);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user