Files
overleaf-cep/services/history-v1/api/routes/projects.js
Jakob Ackermann 5a6c066847 [web] allow admins to clone projects with ranges and entire history (#32739)
* [web] add consistent aria-label to editing/reviewing toggle

* [docstore] add endpoint for getting all docs with ranges

* [history-v1] fix schema of chunkId when deleting old history chunk

* [web] skip duplicate project lookup for resolving rootDocPath

* [web] ignore new limits for root doc path when making debug copy

* [web] allow admins to clone projects with ranges and entire history

* [web] fix tests

* [history-v1] re-order params for cloning project

* [web] fix duplicate import of logger after merge

* [project-history] re-order params for cloning project history metadata

GitOrigin-RevId: 7fa35b4f90885dd453150a348d491ba0ec8de412
2026-04-15 08:05:49 +00:00

126 lines
2.4 KiB
JavaScript

'use strict'
const express = require('express')
const router = express.Router()
const { getAuthHandlers } = require('../middleware/security')
const projectsController = require('../controllers/projects')
const {
basic: handleBasicAuth,
jwt: handleJWTAuth,
token: handleTokenAuth,
either: handleJWTOrTokenAuth,
} = getAuthHandlers()
router.post('/projects', handleBasicAuth, projectsController.initializeProject)
router.post(
'/projects/:project_id/clone',
handleBasicAuth,
projectsController.cloneProject
)
router.post(
'/projects/blob-stats',
handleBasicAuth,
projectsController.getProjectBlobsStats
)
router.post(
'/projects/:project_id/blob-stats',
handleBasicAuth,
projectsController.getBlobStats
)
router.delete(
'/projects/:project_id',
handleBasicAuth,
projectsController.deleteProject
)
router.get(
'/projects/:project_id/blobs/:hash',
handleJWTOrTokenAuth,
projectsController.getProjectBlob
)
router.put(
'/projects/:project_id/blobs/:hash',
handleJWTAuth,
projectsController.createProjectBlob
)
router.post(
'/projects/:project_id/blobs/:hash',
handleJWTAuth,
projectsController.copyProjectBlob
)
router.get(
'/projects/:project_id/latest/content',
handleJWTAuth,
projectsController.getLatestContent
)
router.get(
'/projects/:project_id/latest/hashed_content',
handleBasicAuth,
projectsController.getLatestHashedContent
)
router.get(
'/projects/:project_id/latest/history',
handleJWTAuth,
projectsController.getLatestHistory
)
router.get(
'/projects/:project_id/latest/history/raw',
handleJWTAuth,
projectsController.getLatestHistoryRaw
)
router.get(
'/projects/:project_id/latest/persistedHistory',
handleJWTAuth,
projectsController.getLatestPersistedHistory
)
router.get(
'/projects/:project_id/versions/:version/history',
handleJWTAuth,
projectsController.getHistory
)
router.get(
'/projects/:project_id/versions/:version/content',
handleJWTAuth,
projectsController.getContentAtVersion
)
router.get(
'/projects/:project_id/timestamp/:timestamp/history',
handleJWTAuth,
projectsController.getHistoryBefore
)
router.get(
'/projects/:project_id/version/:version/zip',
handleTokenAuth,
projectsController.getZip
)
router.post(
'/projects/:project_id/version/:version/zip',
handleBasicAuth,
projectsController.createZip
)
router.get(
'/projects/:project_id/changes',
handleBasicAuth,
projectsController.getChanges
)
module.exports = router