]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/controllers/api/custom-page.ts
Bumped to version v5.2.1
[github/Chocobozzz/PeerTube.git] / server / controllers / api / custom-page.ts
... / ...
CommitLineData
1import express from 'express'
2import { ServerConfigManager } from '@server/lib/server-config-manager'
3import { ActorCustomPageModel } from '@server/models/account/actor-custom-page'
4import { HttpStatusCode, UserRight } from '@shared/models'
5import { apiRateLimiter, asyncMiddleware, authenticate, ensureUserHasRight } from '../../middlewares'
6
7const customPageRouter = express.Router()
8
9customPageRouter.use(apiRateLimiter)
10
11customPageRouter.get('/homepage/instance',
12 asyncMiddleware(getInstanceHomepage)
13)
14
15customPageRouter.put('/homepage/instance',
16 authenticate,
17 ensureUserHasRight(UserRight.MANAGE_INSTANCE_CUSTOM_PAGE),
18 asyncMiddleware(updateInstanceHomepage)
19)
20
21// ---------------------------------------------------------------------------
22
23export {
24 customPageRouter
25}
26
27// ---------------------------------------------------------------------------
28
29async function getInstanceHomepage (req: express.Request, res: express.Response) {
30 const page = await ActorCustomPageModel.loadInstanceHomepage()
31 if (!page) {
32 return res.fail({
33 status: HttpStatusCode.NOT_FOUND_404,
34 message: 'Instance homepage could not be found'
35 })
36 }
37
38 return res.json(page.toFormattedJSON())
39}
40
41async function updateInstanceHomepage (req: express.Request, res: express.Response) {
42 const content = req.body.content
43
44 await ActorCustomPageModel.updateInstanceHomepage(content)
45 ServerConfigManager.Instance.updateHomepageState(content)
46
47 return res.status(HttpStatusCode.NO_CONTENT_204).end()
48}