import_oauth_applications.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* eslint-disable max-len */
  2. /**
  3. * run with: node import_oauth_applications /path/oauth_applications.csv
  4. *
  5. * where csv is generated from v1 with sql statement like:
  6. *
  7. * \copy (SELECT * FROM oauth_applications) to 'oauth_applications.csv' WITH CSV HEADER;
  8. */
  9. /* eslint-enable */
  10. 'use strict'
  11. const OauthApplication = require('../../app/src/models/OauthApplication')
  12. .OauthApplication
  13. const async = require('async')
  14. const csvParser = require('csv-parser')
  15. const fs = require('fs')
  16. const minimist = require('minimist')
  17. const argv = minimist(process.argv.slice(2))
  18. const records = []
  19. fs.createReadStream(argv._[0])
  20. .pipe(csvParser())
  21. .on('data', data => records.push(data))
  22. .on('end', () => {
  23. async.mapSeries(records, loadRecord, function(err) {
  24. if (err) console.error(err)
  25. process.exit()
  26. })
  27. })
  28. function loadRecord(record, cb) {
  29. const newRecord = {
  30. clientSecret: record.secret,
  31. id: record.uid,
  32. // doorkeeper does not define grant types so add all supported
  33. grants: ['authorization_code', 'refresh_token', 'password'],
  34. name: record.name,
  35. // redirect uris are stored new-line separated
  36. redirectUris: record.redirect_uri.split(/\r?\n/),
  37. // scopes are stored space separated
  38. scopes: record.scopes.split(/\s+/)
  39. }
  40. console.log('Creating OauthApplication ' + newRecord.name)
  41. OauthApplication.update(newRecord, newRecord, { upsert: true }, cb)
  42. }