Skip to content

Commit a260bd5

Browse files
committed
feat: Add user management page, including client-side logic, new server routes for database and file operations, and shared UI components.
1 parent 8a93de7 commit a260bd5

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

src/server/routes/database.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import express, { Request, Response } from 'express';
22
import { sendSuccess } from '../utils/response.js';
33
import { Database } from '../utils/database.js';
4+
import { jwtAuthMiddleware, requireRoles } from '../middlewares/auth.js';
45

56
const router = express.Router();
67

78
/**
89
* Get all files from database
910
* @method GET /api/database/files
1011
*/
11-
router.get('/files', async (req: Request, res: Response) => {
12+
router.get('/files', jwtAuthMiddleware, async (req: Request, res: Response) => {
1213
try {
1314
const files = await Database.getAllFiles();
1415
sendSuccess(res, files, 'Files retrieved from database', 200);
@@ -21,7 +22,7 @@ router.get('/files', async (req: Request, res: Response) => {
2122
* Get database statistics
2223
* @method GET /api/database/stats
2324
*/
24-
router.get('/stats', async (req: Request, res: Response) => {
25+
router.get('/stats', jwtAuthMiddleware, async (req: Request, res: Response) => {
2526
try {
2627
const stats = await Database.getStats();
2728
sendSuccess(res, stats, 'Database statistics retrieved', 200);
@@ -34,7 +35,7 @@ router.get('/stats', async (req: Request, res: Response) => {
3435
* Search files in database
3536
* @method GET /api/database/search?q=query&type=type
3637
*/
37-
router.get('/search', async (req: Request, res: Response) => {
38+
router.get('/search', jwtAuthMiddleware, async (req: Request, res: Response) => {
3839
try {
3940
const { q, type } = req.query;
4041
if (!q) {
@@ -52,7 +53,7 @@ router.get('/search', async (req: Request, res: Response) => {
5253
* Backup database
5354
* @method POST /api/database/backup
5455
*/
55-
router.post('/backup', async (req: Request, res: Response) => {
56+
router.post('/backup', jwtAuthMiddleware, requireRoles('admin'), async (req: Request, res: Response) => {
5657
try {
5758
const backupPath = await Database.backup();
5859
sendSuccess(res, { backupPath }, 'Database backed up successfully', 200);

src/server/routes/file.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import express, { Request, Response } from 'express';
22
import { FilesController, uploadFiles } from '../controllers/files.controller.js';
33
import { PreviewController } from '../controllers/preview.controller.js';
44
import { fileUploadRateLimiter } from '../middlewares/rate-limit.js';
5-
import { jwtAuthMiddleware } from '../middlewares/auth.js';
5+
import { jwtAuthMiddleware, requireRoles } from '../middlewares/auth.js';
66

77
const router = express.Router();
88

@@ -75,28 +75,28 @@ router.post('/upload', jwtAuthMiddleware, fileUploadRateLimiter, (req, res) => {
7575
* - q: Name of the file to search
7676
* - type: {image, office} Type of files to search (optional)
7777
*/
78-
router.get('/search', FilesController.searchFileByName);
78+
router.get('/search', jwtAuthMiddleware, FilesController.searchFileByName);
7979

8080
/**
8181
* Move file to directory endpoint
8282
*
8383
* @method PUT /api/file/move/:filename
8484
*/
85-
router.put('/move/:filename', FilesController.moveFileToDir);
85+
router.put('/move/:filename', jwtAuthMiddleware, requireRoles('admin', 'user'), FilesController.moveFileToDir);
8686

8787
/**
8888
* File delete endpoint
8989
*
9090
* @method DELETE /api/file/delete/:filename
9191
*/
92-
router.delete('/delete/:filename', FilesController.deleteFile);
92+
router.delete('/delete/:filename', jwtAuthMiddleware, requireRoles('admin', 'user'), FilesController.deleteFile);
9393

9494
/**
9595
* File download endpoint
9696
*
9797
* @method GET /api/file/download/:filename
9898
*/
99-
router.get('/download/:filename', FilesController.downloadFile);
99+
router.get('/download/:filename', jwtAuthMiddleware, FilesController.downloadFile);
100100

101101
/**
102102
* File preview endpoint

0 commit comments

Comments
 (0)