The frontend/UI server, written in JS using the MarkoJS library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
951 B

  1. const jwt = require("jsonwebtoken")
  2. const express = require("express")
  3. const router = express.Router()
  4. const common = require("./common")
  5. const config = require("../../config")
  6. const {storyApi} = require("../../rpdata/api/Story")
  7. const listTemplate = require("../../marko/page/story/list.marko")
  8. router.get("/", common, async(req, res) => {
  9. if (!res.locals.user.loggedIn) {
  10. return res.status(401).end("You are not logged in")
  11. }
  12. try {
  13. await res.markoAsync(listTemplate, {
  14. stories: storyApi.list({unlisted: true, author: res.locals.user.name}, {token: generateToken(res.locals.user.name)}),
  15. selected: {unlisted: true},
  16. })
  17. } catch(err) {
  18. console.error(err)
  19. }
  20. })
  21. /**
  22. * @param {string} user
  23. */
  24. function generateToken(user) {
  25. return jwt.sign({user, permissions: ["member"], exp: Math.floor((Date.now() / 1000) + 1200)}, config.backend.secret, {header: {kid: config.backend.kid}})
  26. }
  27. module.exports = router