@coko/server
Version:
Reusable server for use by Coko's projects
70 lines • 3.19 kB
JavaScript
;
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