mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
[web] Issue Oauth2 access tokens (#12788)
* [web] Issue Oauth2 access tokens * [web] Add partial index for `oauthAccessTokens.user_id` for Personal Access Tokens * [web] script to create personal access tokens GitOrigin-RevId: 796e8d23a6799a87ac6096c686139c6290668b83
This commit is contained in:
parent
77da9fd0cd
commit
d2172e5179
3 changed files with 58 additions and 0 deletions
|
@ -6,13 +6,17 @@ const { ObjectId } = Schema
|
|||
const OauthAccessTokenSchema = new Schema(
|
||||
{
|
||||
accessToken: String,
|
||||
accessTokenPartial: String,
|
||||
type: String,
|
||||
accessTokenExpiresAt: Date,
|
||||
oauthApplication_id: { type: ObjectId, ref: 'OauthApplication' },
|
||||
refreshToken: String,
|
||||
refreshTokenExpiresAt: Date,
|
||||
scope: String,
|
||||
user_id: { type: ObjectId, ref: 'User' },
|
||||
createdAt: { type: Date },
|
||||
expiresAt: Date,
|
||||
lastUsedAt: Date,
|
||||
},
|
||||
{
|
||||
collection: 'oauthAccessTokens',
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
const Helpers = require('./lib/helpers')
|
||||
|
||||
exports.tags = ['server-ce', 'server-pro', 'saas']
|
||||
|
||||
const indexes = [
|
||||
{
|
||||
key: { user_id: 1 },
|
||||
name: 'pat_user_id_1',
|
||||
partialFilterExpression: { type: 'pat' },
|
||||
},
|
||||
]
|
||||
|
||||
exports.migrate = async client => {
|
||||
const { db } = client
|
||||
await Helpers.addIndexesToCollection(db.oauthAccessTokens, indexes)
|
||||
}
|
||||
|
||||
exports.rollback = async client => {
|
||||
const { db } = client
|
||||
await Helpers.dropIndexesFromCollection(db.oauthAccessTokens, indexes)
|
||||
}
|
33
services/web/scripts/create_oauth_personal_access_token.js
Normal file
33
services/web/scripts/create_oauth_personal_access_token.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
// Script to create a Personal Access Token for a given user
|
||||
// Example:
|
||||
// node scripts/create_oauth_personal_access_token.js --user-id=643e5b240dc50c83b5bf1127
|
||||
|
||||
const parseArgs = require('minimist')
|
||||
const { waitForDb } = require('../app/src/infrastructure/mongodb')
|
||||
const OAuthPersonalAccessTokenManager = require('../modules/oauth2-server/app/src/OAuthPersonalAccessTokenManager')
|
||||
|
||||
const argv = parseArgs(process.argv.slice(2), {
|
||||
string: ['user-id'],
|
||||
})
|
||||
|
||||
const userId = argv['user-id']
|
||||
|
||||
if (!userId) {
|
||||
console.error('Missing --user-id argument')
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
async function createPersonalAccessToken() {
|
||||
await waitForDb()
|
||||
const accessToken = await OAuthPersonalAccessTokenManager.createToken(userId)
|
||||
console.log('Personal Access Token: ' + accessToken)
|
||||
}
|
||||
|
||||
createPersonalAccessToken()
|
||||
.then(() => {
|
||||
process.exit()
|
||||
})
|
||||
.catch(err => {
|
||||
console.error(err)
|
||||
process.exit(1)
|
||||
})
|
Loading…
Reference in a new issue