feat: added resetting upload tokens via API

pull/190/head
tycrek 1 year ago
parent 93d6cfd930
commit a84bbe12e5
No known key found for this signature in database
GPG Key ID: FF8A54DCE404885A

@ -266,6 +266,30 @@ export const setUsername = (unid: string, username: string): Promise<User> => ne
.catch(reject);
});
/**
* Resets a token
* @since v0.14.1
*/
export const resetToken = (unid: string): Promise<User> => new Promise((resolve, reject) => {
// Find the user
const user = users.find((user) => user.unid === unid);
if (!user) return reject(new Error('User not found'));
// Reset the token
user.token = nanoid(32);
// Save the new user to auth.json
const authPath = path('auth.json');
const authData = fs.readJsonSync(authPath) as Users;
const userIndex = authData.users.findIndex((user) => user.unid === unid);
authData.users[userIndex] = user;
fs.writeJson(authPath, authData, { spaces: '\t' })
.then(() => log.info('Reset token for', user.unid))
.then(() => resolve(user))
.catch(reject);
});
/**
* Called by ass.ts on startup
* @since v0.14.0

@ -5,7 +5,7 @@
*/
import { Router, Request, Response, NextFunction } from 'express';
import { findFromToken, setUserPassword, users, createNewUser, deleteUser, setUserMeta, deleteUserMeta, setUsername, verifyCliKey } from '../auth';
import { findFromToken, setUserPassword, users, createNewUser, deleteUser, setUserMeta, deleteUserMeta, setUsername, resetToken, verifyCliKey } from '../auth';
import { log } from '../utils';
import { data } from '../data';
import { User } from '../types/auth';
@ -133,6 +133,20 @@ function buildUserRouter() {
.catch((err) => errorHandler(res, err));
});
// Delete a user meta key
// Admin only
userRouter.delete('/meta/:id', adminAuthMiddleware, (req: Request, res: Response) => {
const id = req.params.id;
const key: string | undefined = req.body.key;
if (key == null || key.length === 0)
return res.sendStatus(400);
deleteUserMeta(id, key)
.then(() => res.sendStatus(200))
.catch((err) => errorHandler(res, err));
});
// Sets a username
// Admin only
userRouter.put('/username/:id', adminAuthMiddleware, (req: Request, res: Response) => {
@ -147,16 +161,12 @@ function buildUserRouter() {
.catch((err) => errorHandler(res, err));
});
// Delete a user meta key
// Resets a token
// Admin only
userRouter.delete('/meta/:id', adminAuthMiddleware, (req: Request, res: Response) => {
userRouter.put('/token/:id', adminAuthMiddleware, (req: Request, res: Response) => {
const id = req.params.id;
const key: string | undefined = req.body.key;
if (key == null || key.length === 0)
return res.sendStatus(400);
deleteUserMeta(id, key)
resetToken(id)
.then(() => res.sendStatus(200))
.catch((err) => errorHandler(res, err));
});

Loading…
Cancel
Save