auth.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /* global WIKI */
  2. const express = require('express')
  3. const router = express.Router()
  4. const moment = require('moment')
  5. /**
  6. * Login form
  7. */
  8. router.get('/login', function (req, res, next) {
  9. res.render('login')
  10. })
  11. /**
  12. * Logout
  13. */
  14. router.get('/logout', function (req, res) {
  15. req.logout()
  16. res.redirect('/')
  17. })
  18. /**
  19. * Register form
  20. */
  21. router.get('/register', async (req, res, next) => {
  22. const localStrg = await WIKI.models.authentication.getStrategy('local')
  23. if (localStrg.selfRegistration) {
  24. res.render('register')
  25. } else {
  26. next(new WIKI.Error.AuthRegistrationDisabled())
  27. }
  28. })
  29. /**
  30. * Verify
  31. */
  32. router.get('/verify/:token', async (req, res, next) => {
  33. const usr = await WIKI.models.userKeys.validateToken({ kind: 'verify', token: req.params.token })
  34. await WIKI.models.users.query().patch({ isVerified: true }).where('id', usr.id)
  35. const result = await WIKI.models.users.refreshToken(usr)
  36. res.cookie('jwt', result.token, { expires: moment().add(1, 'years').toDate() })
  37. res.redirect('/')
  38. })
  39. /**
  40. * JWT Public Endpoints
  41. */
  42. router.get('/.well-known/jwk.json', function (req, res, next) {
  43. res.json(WIKI.config.certs.jwk)
  44. })
  45. router.get('/.well-known/jwk.pem', function (req, res, next) {
  46. res.send(WIKI.config.certs.public)
  47. })
  48. module.exports = router