security.mjs 1014 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import util from 'node:util'
  2. import crypto from 'node:crypto'
  3. import passportJWT from 'passport-jwt'
  4. const randomBytes = util.promisify(crypto.randomBytes)
  5. export function sanitizeCommitUser (user) {
  6. // let wlist = new RegExp('[^a-zA-Z0-9-_.\',& ' + appdata.regex.cjk + appdata.regex.arabic + ']', 'g')
  7. // return {
  8. // name: _.chain(user.name).replace(wlist, '').trim().value(),
  9. // email: appconfig.git.showUserEmail ? user.email : appconfig.git.serverEmail
  10. // }
  11. }
  12. /**
  13. * Generate a random token
  14. *
  15. * @param {any} length
  16. * @returns
  17. */
  18. export async function generateToken (length) {
  19. return (await randomBytes(length)).toString('hex')
  20. }
  21. export const extractJWT = passportJWT.ExtractJwt.fromExtractors([
  22. passportJWT.ExtractJwt.fromAuthHeaderAsBearerToken(),
  23. (req) => {
  24. let token = null
  25. if (req && req.cookies) {
  26. token = req.cookies['jwt']
  27. }
  28. // Force uploads to use Auth headers
  29. if (req.path.toLowerCase() === '/u') {
  30. return null
  31. }
  32. return token
  33. }
  34. ])