create_token.mjs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import minimist from 'minimist'
  2. import { db } from '../../app/src/infrastructure/mongodb.js'
  3. import { hashSecret } from '../../modules/oauth2-server/app/src/SecretsHelper.js'
  4. async function main() {
  5. const opts = parseArgs()
  6. if (opts.accessToken == null) {
  7. console.error('Missing --token option')
  8. process.exit(1)
  9. }
  10. if (opts.refreshToken == null) {
  11. console.error('Missing --refresh-token option')
  12. process.exit(1)
  13. }
  14. if (opts.oauthApplication_id == null) {
  15. console.error('Missing --application-id option')
  16. process.exit(1)
  17. }
  18. if (opts.user_id == null) {
  19. console.error('Missing --user-id option')
  20. process.exit(1)
  21. }
  22. if (opts.scope == null) {
  23. console.error('Missing --scope option')
  24. process.exit(1)
  25. }
  26. if (opts.accessTokenExpiresAt == null) {
  27. console.error('Missing --expiry-date option')
  28. process.exit(1)
  29. }
  30. await insertToken(opts)
  31. }
  32. async function insertToken(opts) {
  33. const token = {
  34. ...opts,
  35. accessToken: hashSecret(opts.accessToken),
  36. refreshToken: hashSecret(opts.refreshToken),
  37. accessTokenExpiresAt: new Date(opts.accessTokenExpiresAt),
  38. createdAt: new Date(),
  39. }
  40. await db.oauthAccessTokens.insertOne(token)
  41. }
  42. function parseArgs() {
  43. const args = minimist(process.argv.slice(2), {
  44. boolean: ['help'],
  45. })
  46. if (args.help) {
  47. usage()
  48. process.exit(0)
  49. }
  50. if (args._.length !== 0) {
  51. usage()
  52. process.exit(1)
  53. }
  54. return {
  55. accessToken: args.token,
  56. oauthApplication_id: args['application-id'],
  57. refreshToken: args['refresh-token'],
  58. user_id: args['user-id'],
  59. scope: args.scope,
  60. accessTokenExpiresAt: args['expiry-date'],
  61. }
  62. }
  63. function usage() {
  64. console.error(`Usage: create_token.js [OPTS...]
  65. Creates an OAuth access token
  66. Options:
  67. --application-id ID for the OAuth application
  68. --user-id ID of the user this token belongs to
  69. --token Access token
  70. --refresh-token Refresh token
  71. --scope Accepted scope
  72. --expiry-date Token expiry date
  73. `)
  74. }
  75. try {
  76. await main()
  77. process.exit(0)
  78. } catch (error) {
  79. console.error(error)
  80. process.exit(1)
  81. }