UNPKG

northwind-rest-api

Version:

Local REST API Exposing Northwind Database.

73 lines (60 loc) 2.12 kB
const express = require("express"); const User = require("../models/user"); const Credentials = require("../models/credentials"); const authLogic = require("../business-logic/auth-logic"); const verifyToken = require("../middleware/verify-token"); const jwt = require("jsonwebtoken"); const router = express.Router(); // Register: router.post("/register", async (request, response) => { try { // Data: const user = new User(request.body); // Validation: const errors = user.validate(); if (errors) return response.status(400).send(errors); if(await authLogic.isEmailTaken(user.email)) return response.status(400).send(`Email "${user.email}" already taken.`); // Logic: const token = await authLogic.register(user); // Success: response.status(201).json(token); } catch (err) { response.status(500).send(err.message); } }); // Login: router.post("/login", async (request, response) => { try { // Data: const credentials = new Credentials(request.body); // Validation: const errors = credentials.validate(); if (errors) return response.status(400).send(errors); // Logic: const token = await authLogic.login(credentials); if (!token) return response.status(401).send("Incorrect email or password."); // Success: response.json(token); } catch (err) { response.status(500).send(err.message); } }); // Refresh token: router.post("/refresh-token", verifyToken, async (request, response) => { try { // Data: const oldToken = request.headers.authorization.substring(7); // Bearer the-token const payload = jwt.decode(oldToken); const user = payload.user; // Logic: const newToken = authLogic.refreshToken(user); // Success: response.json(newToken); } catch (err) { response.status(500).send(err.message); } }); module.exports = router;