Files
overleaf-cep/services/web/modules/github-sync/index.mjs
T
yu-i-i bd5507262e Github Sync: enhance token handling and post-sync indexing
- support file-based token cipher
  - reindex references after sync
  - fix typo and clean up code
2026-09-22 02:41:43 +02:00

51 lines
1.6 KiB
JavaScript

import Settings from '@overleaf/settings'
import Modules from '../../app/src/infrastructure/Modules.mjs'
import logger from '@overleaf/logger'
let GitHubSyncModule = {}
if (process.env.GITHUB_SYNC_ENABLED?.toLowerCase() === 'true') {
logger.debug({}, 'Enabling GitHub Sync module')
const [{ default: GitHubSyncRouter },
{ default: SyncStateManager },
{ default: TokenManager }
] =
await Promise.all([
import('./app/src/GitHubSyncRouter.mjs'),
import('./app/src/SyncStateManager.mjs'),
import('./app/src/TokenManager.mjs'),
])
const siteUrl = Settings.siteUrl.replace(/\/+$/, '') || 'http://localhost'
Settings.githubSync = {
clientID: process.env.GITHUB_SYNC_CLIENT_ID,
clientSecret: process.env.GITHUB_SYNC_CLIENT_SECRET,
callbackURL: `${siteUrl}/user/github-sync/oauth2/callback`,
},
// Delete project sync state from mongo (hook 'projectExpired')
Modules.hooks.attach('projectExpired', async projectId => {
try {
await SyncStateManager.removeProjectState(projectId)
logger.debug({ projectId }, 'on project expire: removed Git sync state')
} catch (err) {
logger.warn({ projectId, err }, 'on project expire: failed to remove Git sync state')
}
})
// Delete user github token from mongo (hook 'expireDeletedUser')
Modules.hooks.attach('expireDeletedUser', async userId => {
try {
await TokenManager.removeUserToken(userId)
} catch (err) {
logger.warn({ userId, err }, 'on user expire: failed removing user token')
}
})
GitHubSyncModule = {
router: GitHubSyncRouter,
}
}
export default GitHubSyncModule