mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-23 17:19:37 +02:00
49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
import logger from '@overleaf/logger'
|
|
import Settings from '@overleaf/settings'
|
|
import { db } from '../../app/src/infrastructure/mongodb.mjs'
|
|
import Modules from '../../app/src/infrastructure/Modules.mjs'
|
|
import GitBridgeRouter from './app/src/GitBridgeRouter.mjs'
|
|
|
|
let GitBridgeModule = {}
|
|
|
|
if (process.env.GIT_BRIDGE_ENABLED === 'true') {
|
|
logger.debug({}, 'Enabling git-bridge module')
|
|
|
|
Settings.enableGitBridge = true
|
|
|
|
// Delete all user's git-bridge tokens on user expire (hook 'expireDeletedUser')
|
|
Modules.hooks.attach('expireDeletedUser', async userId => {
|
|
try {
|
|
const query = {
|
|
user_id: userId,
|
|
scope: /\bgit_bridge\b/,
|
|
type: 'personal_access_token'
|
|
}
|
|
await db.oauthAccessTokens.deleteMany(query)
|
|
} catch (err) {
|
|
logger.warn({ userId, err }, 'on user expire: failed deleting git-bridge tokens')
|
|
}
|
|
})
|
|
// Delete project from /data/git-bridge on project expire (hook 'projectExpired')
|
|
Modules.hooks.attach('projectExpired', async projectId => {
|
|
const gitBridgeApiBaseUrl = process.env.GIT_BRIDGE_API_BASE_URL ||
|
|
`http://${process.env.GIT_BRIDGE_HOST || 'git-bridge'}:${
|
|
process.env.GIT_BRIDGE_PORT || '8000'
|
|
}/api`
|
|
try {
|
|
const res = await fetch(`${gitBridgeApiBaseUrl}/projects/${projectId}`, {
|
|
method: 'DELETE',
|
|
})
|
|
if (!res.ok) throw new Error(`error status: ${res.status}`)
|
|
|
|
} catch (err) {
|
|
logger.warn({ projectId, err }, 'on project expire: failed deleting project in git-bridge')
|
|
}
|
|
})
|
|
GitBridgeModule = {
|
|
router: GitBridgeRouter,
|
|
}
|
|
}
|
|
|
|
export default GitBridgeModule
|