mirror of
https://github.com/overleaf/overleaf.git
synced 2024-10-31 21:21:03 -04:00
54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
|
const recurly = require('recurly')
|
||
|
const Settings = require('settings-sharelatex')
|
||
|
const logger = require('logger-sharelatex')
|
||
|
const { callbackify } = require('util')
|
||
|
const UserGetter = require('../User/UserGetter')
|
||
|
|
||
|
const recurlySettings = Settings.apis.recurly
|
||
|
const recurlyApiKey = recurlySettings ? recurlySettings.apiKey : undefined
|
||
|
|
||
|
const client = new recurly.Client(recurlyApiKey)
|
||
|
|
||
|
module.exports = {
|
||
|
errors: recurly.errors,
|
||
|
|
||
|
getAccountForUserId: callbackify(getAccountForUserId),
|
||
|
createAccountForUserId: callbackify(createAccountForUserId),
|
||
|
|
||
|
promises: {
|
||
|
getAccountForUserId,
|
||
|
createAccountForUserId
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async function getAccountForUserId(userId) {
|
||
|
try {
|
||
|
return await client.getAccount(`code-${userId}`)
|
||
|
} catch (err) {
|
||
|
if (err instanceof recurly.errors.NotFoundError) {
|
||
|
// An expected error, we don't need to handle it, just return nothing
|
||
|
logger.debug({ userId }, 'no recurly account found for user')
|
||
|
} else {
|
||
|
throw err
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async function createAccountForUserId(userId) {
|
||
|
const user = await UserGetter.promises.getUser(userId, {
|
||
|
_id: 1,
|
||
|
first_name: 1,
|
||
|
last_name: 1,
|
||
|
email: 1
|
||
|
})
|
||
|
const accountCreate = {
|
||
|
code: user._id.toString(),
|
||
|
email: user.email,
|
||
|
firstName: user.first_name,
|
||
|
lastName: user.last_name
|
||
|
}
|
||
|
const account = await client.createAccount(accountCreate)
|
||
|
logger.log({ userId, account }, 'created recurly account')
|
||
|
return account
|
||
|
}
|