]>
Commit | Line | Data |
---|---|---|
41fb13c3 | 1 | import express from 'express' |
2539932e C |
2 | import { ServerConfigManager } from '@server/lib/server-config-manager' |
3 | import { ActorCustomPageModel } from '@server/models/account/actor-custom-page' | |
4c7e60bc | 4 | import { HttpStatusCode, UserRight } from '@shared/models' |
e915cde3 | 5 | import { apiRateLimiter, asyncMiddleware, authenticate, ensureUserHasRight } from '../../middlewares' |
2539932e C |
6 | |
7 | const customPageRouter = express.Router() | |
8 | ||
e915cde3 C |
9 | customPageRouter.use(apiRateLimiter) |
10 | ||
2539932e C |
11 | customPageRouter.get('/homepage/instance', |
12 | asyncMiddleware(getInstanceHomepage) | |
13 | ) | |
14 | ||
15 | customPageRouter.put('/homepage/instance', | |
16 | authenticate, | |
17 | ensureUserHasRight(UserRight.MANAGE_INSTANCE_CUSTOM_PAGE), | |
18 | asyncMiddleware(updateInstanceHomepage) | |
19 | ) | |
20 | ||
21 | // --------------------------------------------------------------------------- | |
22 | ||
23 | export { | |
24 | customPageRouter | |
25 | } | |
26 | ||
27 | // --------------------------------------------------------------------------- | |
28 | ||
29 | async function getInstanceHomepage (req: express.Request, res: express.Response) { | |
30 | const page = await ActorCustomPageModel.loadInstanceHomepage() | |
76148b27 RK |
31 | if (!page) { |
32 | return res.fail({ | |
33 | status: HttpStatusCode.NOT_FOUND_404, | |
34 | message: 'Instance homepage could not be found' | |
35 | }) | |
36 | } | |
2539932e C |
37 | |
38 | return res.json(page.toFormattedJSON()) | |
39 | } | |
40 | ||
41 | async 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 | ||
76148b27 | 47 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
2539932e | 48 | } |