Skip to content

Commit 829aefc

Browse files
committed
Add auth to Settings and Maintenance routes; document security in Swagger
- Require super_admin (requireSuperAdmin) for all Settings and Maintenance endpoints except GET /health - Use apiHandler for consistent error handling on protected routes - Swagger: add security: [{ cookieAuth: [] }] and 'Superadmin only' descriptions for Settings and Maintenance
1 parent e89afb8 commit 829aefc

File tree

3 files changed

+171
-218
lines changed

3 files changed

+171
-218
lines changed

config/swagger.ts

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ export const openApiDocument = {
5959
{ name: 'Contact', description: 'Contact messages and replies' },
6060
{ name: 'Admin', description: 'Library admin dashboard and content' },
6161
{ name: 'Superadmin', description: 'Moderation and global admin' },
62-
{ name: 'Settings', description: 'Platform settings' },
63-
{ name: 'Maintenance', description: 'Health, maintenance mode, backups' },
62+
{ name: 'Settings', description: 'Platform settings (superadmin only; cookieAuth)' },
63+
{ name: 'Maintenance', description: 'Health (public), maintenance mode, backups (superadmin only; cookieAuth)' },
6464
],
6565
paths: {
6666
[`${apiPath}/auth/login`]: {
@@ -1224,7 +1224,8 @@ export const openApiDocument = {
12241224
get: {
12251225
tags: ['Settings'],
12261226
summary: 'Get platform settings',
1227-
description: 'Returns general, security, email, content, appearance, notifications settings.',
1227+
description: 'Returns general, security, email, content, appearance, notifications settings. **Superadmin only.**',
1228+
security: [{ cookieAuth: [] }],
12281229
responses: {
12291230
'200': {
12301231
description: 'Platform settings object',
@@ -1240,7 +1241,8 @@ export const openApiDocument = {
12401241
post: {
12411242
tags: ['Settings'],
12421243
summary: 'Update platform settings',
1243-
description: 'Merges provided updates with existing settings (in-memory; prefer DB in production).',
1244+
description: 'Merges provided updates with existing settings (in-memory; prefer DB in production). **Superadmin only.**',
1245+
security: [{ cookieAuth: [] }],
12441246
requestBody: {
12451247
content: {
12461248
'application/json': {
@@ -1268,7 +1270,8 @@ export const openApiDocument = {
12681270
post: {
12691271
tags: ['Settings'],
12701272
summary: 'Test email configuration',
1271-
description: 'Sends a test email to verify SMTP/email setup.',
1273+
description: 'Sends a test email to verify SMTP/email setup. **Superadmin only.**',
1274+
security: [{ cookieAuth: [] }],
12721275
responses: {
12731276
'200': {
12741277
description: 'Test email sent',
@@ -1289,7 +1292,7 @@ export const openApiDocument = {
12891292
get: {
12901293
tags: ['Maintenance'],
12911294
summary: 'Health check',
1292-
description: 'Verifies database connectivity. Returns system healthy/unhealthy.',
1295+
description: 'Verifies database connectivity. Returns system healthy/unhealthy. Public (no auth).',
12931296
responses: {
12941297
'200': {
12951298
description: 'System healthy',
@@ -1327,7 +1330,8 @@ export const openApiDocument = {
13271330
get: {
13281331
tags: ['Maintenance'],
13291332
summary: 'Maintenance status',
1330-
description: 'Returns maintenance mode, system health, metrics, windows, backup history.',
1333+
description: 'Returns maintenance mode, system health, metrics, windows, backup history. **Superadmin only.**',
1334+
security: [{ cookieAuth: [] }],
13311335
responses: {
13321336
'200': {
13331337
description: 'Maintenance status',
@@ -1345,6 +1349,8 @@ export const openApiDocument = {
13451349
post: {
13461350
tags: ['Maintenance'],
13471351
summary: 'Toggle maintenance mode',
1352+
description: '**Superadmin only.**',
1353+
security: [{ cookieAuth: [] }],
13481354
requestBody: {
13491355
required: true,
13501356
content: {
@@ -1383,6 +1389,8 @@ export const openApiDocument = {
13831389
post: {
13841390
tags: ['Maintenance'],
13851391
summary: 'Schedule maintenance window',
1392+
description: '**Superadmin only.**',
1393+
security: [{ cookieAuth: [] }],
13861394
requestBody: {
13871395
required: true,
13881396
content: {
@@ -1431,6 +1439,8 @@ export const openApiDocument = {
14311439
post: {
14321440
tags: ['Maintenance'],
14331441
summary: 'Create backup',
1442+
description: '**Superadmin only.**',
1443+
security: [{ cookieAuth: [] }],
14341444
requestBody: {
14351445
required: true,
14361446
content: {
@@ -1472,6 +1482,8 @@ export const openApiDocument = {
14721482
get: {
14731483
tags: ['Maintenance'],
14741484
summary: 'List backup history',
1485+
description: '**Superadmin only.**',
1486+
security: [{ cookieAuth: [] }],
14751487
responses: {
14761488
'200': {
14771489
description: 'Backup history',
@@ -1501,7 +1513,8 @@ export const openApiDocument = {
15011513
post: {
15021514
tags: ['Maintenance'],
15031515
summary: 'Refresh system status',
1504-
description: 'Re-checks system health for all services.',
1516+
description: 'Re-checks system health for all services. **Superadmin only.**',
1517+
security: [{ cookieAuth: [] }],
15051518
responses: {
15061519
'200': {
15071520
description: 'Updated system health',

0 commit comments

Comments
 (0)