42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import { Request, Router } from "express";
|
|
import { GetUserMiddleware } from "../middlewares/user";
|
|
import { HttpStatusCode } from "../../helper/request_error";
|
|
import promiseMiddleware from "../../helper/promiseMiddleware";
|
|
import User from "../../models/user";
|
|
import Mail from "../../models/mail";
|
|
import RefreshToken from "../../models/refresh_token";
|
|
import LoginToken from "../../models/login_token";
|
|
|
|
const UserRoute: Router = Router();
|
|
UserRoute.use(GetUserMiddleware(true, true), (req: Request, res, next) => {
|
|
if (!req.isAdmin) res.sendStatus(HttpStatusCode.FORBIDDEN)
|
|
else next()
|
|
})
|
|
|
|
UserRoute.route("/")
|
|
.get(promiseMiddleware(async (req, res) => {
|
|
let users = await User.find({});
|
|
res.json(users);
|
|
}))
|
|
.delete(promiseMiddleware(async (req, res) => {
|
|
let { id } = req.query;
|
|
let user = await User.findById(id);
|
|
|
|
await Promise.all([
|
|
user.mails.map(mail => Mail.delete(mail)),
|
|
[
|
|
RefreshToken.deleteFilter({ user: user._id }),
|
|
LoginToken.deleteFilter({ user: user._id })
|
|
]
|
|
])
|
|
|
|
await User.delete(user);
|
|
res.json({ success: true });
|
|
})).put(promiseMiddleware(async (req, res) => {
|
|
let { id } = req.query;
|
|
let user = await User.findById(id);
|
|
user.admin = !user.admin;
|
|
await User.save(user);
|
|
res.json({ success: true })
|
|
}))
|
|
export default UserRoute; |