mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
902ae750dc
Migrate scripts folder to esm 2/x GitOrigin-RevId: 1698bc4f13e026fa281d37a4914a2f997849c761
98 lines
2.1 KiB
JavaScript
98 lines
2.1 KiB
JavaScript
import minimist from 'minimist'
|
|
import { waitForDb, db } from '../../app/src/infrastructure/mongodb.js'
|
|
import { hashSecret } from '../../modules/oauth2-server/app/src/SecretsHelper.js'
|
|
|
|
async function main() {
|
|
const opts = parseArgs()
|
|
await waitForDb()
|
|
|
|
if (opts.accessToken == null) {
|
|
console.error('Missing --token option')
|
|
process.exit(1)
|
|
}
|
|
|
|
if (opts.refreshToken == null) {
|
|
console.error('Missing --refresh-token option')
|
|
process.exit(1)
|
|
}
|
|
|
|
if (opts.oauthApplication_id == null) {
|
|
console.error('Missing --application-id option')
|
|
process.exit(1)
|
|
}
|
|
|
|
if (opts.user_id == null) {
|
|
console.error('Missing --user-id option')
|
|
process.exit(1)
|
|
}
|
|
|
|
if (opts.scope == null) {
|
|
console.error('Missing --scope option')
|
|
process.exit(1)
|
|
}
|
|
|
|
if (opts.accessTokenExpiresAt == null) {
|
|
console.error('Missing --expiry-date option')
|
|
process.exit(1)
|
|
}
|
|
|
|
await insertToken(opts)
|
|
}
|
|
|
|
async function insertToken(opts) {
|
|
const token = {
|
|
...opts,
|
|
accessToken: hashSecret(opts.accessToken),
|
|
refreshToken: hashSecret(opts.refreshToken),
|
|
accessTokenExpiresAt: new Date(opts.accessTokenExpiresAt),
|
|
createdAt: new Date(),
|
|
}
|
|
|
|
await db.oauthAccessTokens.insertOne(token)
|
|
}
|
|
|
|
function parseArgs() {
|
|
const args = minimist(process.argv.slice(2), {
|
|
boolean: ['help'],
|
|
})
|
|
if (args.help) {
|
|
usage()
|
|
process.exit(0)
|
|
}
|
|
if (args._.length !== 0) {
|
|
usage()
|
|
process.exit(1)
|
|
}
|
|
|
|
return {
|
|
accessToken: args.token,
|
|
oauthApplication_id: args['application-id'],
|
|
refreshToken: args['refresh-token'],
|
|
user_id: args['user-id'],
|
|
scope: args.scope,
|
|
accessTokenExpiresAt: args['expiry-date'],
|
|
}
|
|
}
|
|
|
|
function usage() {
|
|
console.error(`Usage: create_token.js [OPTS...]
|
|
|
|
Creates an OAuth access token
|
|
|
|
Options:
|
|
--application-id ID for the OAuth application
|
|
--user-id ID of the user this token belongs to
|
|
--token Access token
|
|
--refresh-token Refresh token
|
|
--scope Accepted scope
|
|
--expiry-date Token expiry date
|
|
`)
|
|
}
|
|
|
|
try {
|
|
await main()
|
|
process.exit(0)
|
|
} catch (error) {
|
|
console.error(error)
|
|
process.exit(1)
|
|
}
|