| return res.send('Token ' + req.body.token + ' invalidated!') | return res.send('Token ' + req.body.token + ' invalidated!') | ||||
| } | } | ||||
| module.exports = { loginUser, logout } | |||||
| const refreshUserToken = async (req, res) => { | |||||
| const form = { | |||||
| token: req.body.token | |||||
| } | |||||
| const result = await Token.refreshAuthToken(form.token) | |||||
| if(!result) { | |||||
| return res.status(404).send('Token not valid!') | |||||
| } | |||||
| return res.send('Token ' + result + ' refreshed successfully!') | |||||
| } | |||||
| module.exports = { loginUser, logout, refreshUserToken } |
| const {Router} = require("express") | const {Router} = require("express") | ||||
| const User = require("../models/user") | const User = require("../models/user") | ||||
| const getAll = async (res) => { | |||||
| const getUsers = async (res) => { | |||||
| try { | try { | ||||
| const allUsers = await User.find({}) | const allUsers = await User.find({}) | ||||
| return res.status(200).send(allUsers) | return res.status(200).send(allUsers) | ||||
| } | } | ||||
| } | } | ||||
| const getById = async (res, id) => { | |||||
| const getUser = async (res, id) => { | |||||
| try { | try { | ||||
| if (!id) { | if (!id) { | ||||
| return res.status(400).send('Bad request') | return res.status(400).send('Bad request') | ||||
| } | } | ||||
| } | } | ||||
| const create = async (res, userModel) => { | |||||
| const createUser = async (res, userModel) => { | |||||
| try { | try { | ||||
| if (Object.entries(userModel).length === 0) { | if (Object.entries(userModel).length === 0) { | ||||
| return res.status(400).send('Object cant be empty') | return res.status(400).send('Object cant be empty') | ||||
| } | } | ||||
| } | } | ||||
| module.exports = {getAll, getById, create, updateUser, updateUserContacts, deleteUser} | |||||
| module.exports = {getUsers, getUser, createUser, updateUser, updateUserContacts, deleteUser} |
| return token | return token | ||||
| } | } | ||||
| tokenSchema.statics.refreshAuthToken = async function(token, refreshOptions) { | |||||
| const payload = jwt.verify(token, 'ovoJeSecret', refreshOptions.verify) | |||||
| delete payload.iat | |||||
| delete payload.exp | |||||
| delete payload.nbf | |||||
| delete payload.jti | |||||
| const jwtSignOptions = Object.assign({ }, this.options, { jwtid: refreshOptions.jwtid }) | |||||
| return jwt.sign(payload, 'ovoJeSecret', jwtSignOptions) | |||||
| tokenSchema.statics.refreshAuthToken = async function(token) { | |||||
| console.log(token) | |||||
| try { | |||||
| const payload = jwt.verify(token, 'ovoJeSecret') | |||||
| console.log(payload) | |||||
| delete payload.iat | |||||
| delete payload.exp | |||||
| delete payload.nbf | |||||
| delete payload.jti | |||||
| return jwt.sign(payload, 'ovoJeSecret', { expiresIn: 60 * 20 }) | |||||
| } catch(e) { | |||||
| return null | |||||
| } | |||||
| } | } | ||||
| tokenSchema.statics.destroyToken = async function(token) { | tokenSchema.statics.destroyToken = async function(token) { |
| const express = require('express') | const express = require('express') | ||||
| const Token = require('../models/token') | |||||
| const User = require('../models/user') | |||||
| const jwt = require('jsonwebtoken') | |||||
| const bcrypt = require('bcryptjs') | |||||
| const router = new express.Router() | const router = new express.Router() | ||||
| const auth = require('../middleware/auth') | |||||
| const endpoints = require('../endpoints/token') | const endpoints = require('../endpoints/token') | ||||
| /** | /** | ||||
| return await endpoints.logout(req, res) | return await endpoints.logout(req, res) | ||||
| }) | }) | ||||
| /** | |||||
| * @openapi | |||||
| * /auth/refresh/: | |||||
| * put: | |||||
| * description: Refresh user token | |||||
| * tags: [Token] | |||||
| * responses: | |||||
| * 200: | |||||
| * description: Token refreshed successfully! | |||||
| * 404: | |||||
| * description: Token not valid! | |||||
| * 500: | |||||
| * description: Internal server error. | |||||
| */ | |||||
| router.post('/auth/refresh', async(req, res) => { | |||||
| return await endpoints.refreshUserToken(req, res) | |||||
| }) | |||||
| module.exports = router | module.exports = router |
| const endpoints = require('../endpoints/user') | const endpoints = require('../endpoints/user') | ||||
| const router = new express.Router() | const router = new express.Router() | ||||
| const app = express() | const app = express() | ||||
| const auth = require('../middleware/auth') | |||||
| router.get('/users', async (req, res) => { | router.get('/users', async (req, res) => { | ||||
| return await endpoints.getAll(res) | |||||
| return await endpoints.getUsers(res) | |||||
| }) | }) | ||||
| /** | /** | ||||
| * description: Internal server error. | * description: Internal server error. | ||||
| */ | */ | ||||
| router.get('/users/:id', async (req, res) => { | router.get('/users/:id', async (req, res) => { | ||||
| return await endpoints.getById(res, req.params.id) | |||||
| return await endpoints.getUser(res, req.params.id) | |||||
| }) | }) | ||||
| /** | /** | ||||
| * description: Internal server error. | * description: Internal server error. | ||||
| */ | */ | ||||
| router.post('/users', async (req, res) => { | router.post('/users', async (req, res) => { | ||||
| return await endpoints.create(res, req.body) | |||||
| return await endpoints.createUser(res, req.body) | |||||
| }) | }) | ||||
| /** | /** |