]>
Commit | Line | Data |
---|---|---|
1 | import express from 'express' | |
2 | import { ServerConfigManager } from '@server/lib/server-config-manager' | |
3 | import { ActorCustomPageModel } from '@server/models/account/actor-custom-page' | |
4 | import { HttpStatusCode, UserRight } from '@shared/models' | |
5 | import { apiRateLimiter, asyncMiddleware, authenticate, ensureUserHasRight } from '../../middlewares' | |
6 | ||
7 | const customPageRouter = express.Router() | |
8 | ||
9 | customPageRouter.use(apiRateLimiter) | |
10 | ||
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() | |
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 | ||
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 | ||
47 | return res.status(HttpStatusCode.NO_CONTENT_204).end() | |
48 | } |