UNPKG

event-driven

Version:

makes building event-driven-architecture easy

74 lines (73 loc) 3.65 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; 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 = __importDefault(require("express")); const models_1 = require("../models"); const bcryptjs_1 = require("bcryptjs"); const jsonwebtoken_1 = require("jsonwebtoken"); const authRouter = () => { const router = express_1.default.Router(); router.post('/register', (req, res) => __awaiter(void 0, void 0, void 0, function* () { try { const { username, password } = req.body; if (username.trim().length < 3) throw new Error('Username must be at least 3 characters long'); if (password.length < 8) throw new Error('Password must be at least 7 characters long'); const user = yield models_1.User.findOne({ username: req.body.username }); if (user) throw new Error('This username is already used'); const hashedPassword = yield bcryptjs_1.hash(req.body.password, 10); const newUser = yield models_1.createUser({ username, hashedPassword }); const accessToken = createAccessToken(newUser); return res.send({ id: newUser.id, username, accessToken }); } catch (err) { if (err instanceof Error) res.status(500).json(err.message); else res.status(500).json('something went wrong'); } })); router.post('/signin', (req, res) => __awaiter(void 0, void 0, void 0, function* () { try { const { username, password } = req.body; if (username.trim().length < 3) throw new Error('Username must be at least 3 characters long'); if (password.length < 8) throw new Error('Password must be at least 7 characters long'); const user = yield models_1.User.findOne({ username: req.body.username }); if (!user) throw new Error('This user does not exist.'); if (!(yield bcryptjs_1.compare(password, user.hashedPassword))) throw new Error('Password/username is incorrect'); const accessToken = createAccessToken(user); return res.send({ id: user.id, username, accessToken }); } catch (err) { if (err instanceof Error) res.status(500).json(err.message); else res.status(500).json('something went wrong'); } })); return router; }; exports.authRouter = authRouter; const createAccessToken = (admin) => { const tokenBody = { admin: { id: admin.id, authorized: admin.authorized } }; const accessToken = jsonwebtoken_1.sign(tokenBody, process.env.ACCESS_TOKEN_SECRET, { expiresIn: '12h' }); return accessToken; };