create_token.js 2.2 KB

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