| @@ -30,4 +30,16 @@ const logout = async (req, res) => { | |||
| 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 } | |||
| @@ -2,7 +2,7 @@ const bcrypt = require("bcryptjs/dist/bcrypt") | |||
| const {Router} = require("express") | |||
| const User = require("../models/user") | |||
| const getAll = async (res) => { | |||
| const getUsers = async (res) => { | |||
| try { | |||
| const allUsers = await User.find({}) | |||
| return res.status(200).send(allUsers) | |||
| @@ -11,7 +11,7 @@ const getAll = async (res) => { | |||
| } | |||
| } | |||
| const getById = async (res, id) => { | |||
| const getUser = async (res, id) => { | |||
| try { | |||
| if (!id) { | |||
| return res.status(400).send('Bad request') | |||
| @@ -28,7 +28,7 @@ const getById = async (res, id) => { | |||
| } | |||
| } | |||
| const create = async (res, userModel) => { | |||
| const createUser = async (res, userModel) => { | |||
| try { | |||
| if (Object.entries(userModel).length === 0) { | |||
| return res.status(400).send('Object cant be empty') | |||
| @@ -110,4 +110,4 @@ const deleteUser = async (res, id) => { | |||
| } | |||
| } | |||
| module.exports = {getAll, getById, create, updateUser, updateUserContacts, deleteUser} | |||
| module.exports = {getUsers, getUser, createUser, updateUser, updateUserContacts, deleteUser} | |||
| @@ -39,15 +39,19 @@ tokenSchema.statics.generateAuthToken = async function(userArg) { | |||
| 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) { | |||
| @@ -1,10 +1,5 @@ | |||
| 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 auth = require('../middleware/auth') | |||
| const endpoints = require('../endpoints/token') | |||
| /** | |||
| @@ -43,4 +38,22 @@ router.post('/auth/logout', async (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 | |||
| @@ -3,10 +3,9 @@ const User = require('../models/user') | |||
| const endpoints = require('../endpoints/user') | |||
| const router = new express.Router() | |||
| const app = express() | |||
| const auth = require('../middleware/auth') | |||
| router.get('/users', async (req, res) => { | |||
| return await endpoints.getAll(res) | |||
| return await endpoints.getUsers(res) | |||
| }) | |||
| /** | |||
| @@ -24,7 +23,7 @@ router.get('/users', async (req, res) => { | |||
| * description: Internal server error. | |||
| */ | |||
| router.get('/users/:id', async (req, res) => { | |||
| return await endpoints.getById(res, req.params.id) | |||
| return await endpoints.getUser(res, req.params.id) | |||
| }) | |||
| /** | |||
| @@ -42,7 +41,7 @@ router.get('/users/:id', async (req, res) => { | |||
| * description: Internal server error. | |||
| */ | |||
| router.post('/users', async (req, res) => { | |||
| return await endpoints.create(res, req.body) | |||
| return await endpoints.createUser(res, req.body) | |||
| }) | |||
| /** | |||