UNPKG

@coko/server

Version:

Reusable server for use by Coko's projects

70 lines 3.19 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultJobQueues = void 0; const dayjs_1 = __importDefault(require("dayjs")); const utc_1 = __importDefault(require("dayjs/plugin/utc")); const identity_model_1 = __importDefault(require("../models/identity/identity.model")); const user_model_1 = __importDefault(require("../models/user/user.model")); const constants_1 = require("../models/user/constants"); const pubsub_1 = __importDefault(require("../graphql/pubsub")); const defaultJobQueueNames_1 = __importDefault(require("./defaultJobQueueNames")); dayjs_1.default.extend(utc_1.default); const { USER_UPDATED } = constants_1.subscriptions; const defaultJobQueues = [ // { // name: defaultJobQueueNames.RENEW_AUTH_TOKENS_JOB, // handler: async job => { // const bufferTime = 24 * 3600 // const { userId, providerLabel } = job.data // try { // await renewAuthTokens(userId, providerLabel) // job.done() // } catch (e) { // logger.error(`Job ${defaultJobQueueNames.RENEW_AUTH_TOKENS_JOB}: callback error:`, e) // throw e // } // // Schedule auth renewal // const { oauthRefreshTokenExpiration } = await Identity.findOne({ // userId, // provider: providerLabel, // }) // const expiresIn = (oauthRefreshTokenExpiration - dayjs().utc()) / 1000 // const renewAfter = expiresIn - bufferTime // if (renewAfter < 0) { // throw new Error('"renewAfter" is less than 0') // } // await jobManager.sendToQueue(defaultJobQueueNames.RENEW_AUTH_TOKENS_JOB, { userId, providerLabel }, { startAfter: renewAfter }) // }, // }, /** * Triggers the user updated subscription when the user's refresh token has * expired. (refresh token being for a social identity) */ { name: defaultJobQueueNames_1.default.REFRESH_TOKEN_EXPIRED, handler: async (job) => { const { userId, providerLabel } = job.data; const user = await user_model_1.default.findById(userId); const providerUserIdentity = await identity_model_1.default.findOne({ userId, provider: providerLabel, }); if (!providerUserIdentity) { throw new Error(`Refresh token expired job: Identity for user with id ${userId} does not exist for provider ${providerLabel}`); } const { oauthRefreshTokenExpiration } = providerUserIdentity; const UTCNowTimestamp = (0, dayjs_1.default)().utc().valueOf(); const refreshTokenExpired = oauthRefreshTokenExpiration.getTime() < UTCNowTimestamp; if (refreshTokenExpired) { pubsub_1.default.publish(USER_UPDATED, { userUpdated: user, }); } }, }, ]; exports.defaultJobQueues = defaultJobQueues; //# sourceMappingURL=defaultJobQueues.js.map