From 32bdad1608d08d24494318cd81295e72c72f0cb5 Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Sat, 8 Apr 2023 22:28:30 +0000 Subject: [PATCH] added admin controller --- .../endpoints/resetPassword.js | 36 +++++++++++++++++++ .../src/controllers/AdminController/index.js | 9 +++++ packages/server/src/controllers/index.js | 4 ++- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 packages/server/src/controllers/AdminController/endpoints/resetPassword.js create mode 100644 packages/server/src/controllers/AdminController/index.js diff --git a/packages/server/src/controllers/AdminController/endpoints/resetPassword.js b/packages/server/src/controllers/AdminController/endpoints/resetPassword.js new file mode 100644 index 00000000..fb63df1b --- /dev/null +++ b/packages/server/src/controllers/AdminController/endpoints/resetPassword.js @@ -0,0 +1,36 @@ +import { User } from "@models" + +import bcrypt from "bcrypt" + +export default { + method: "POST", + route: "/update_password/:user_id", + middlewares: ["withAuthentication", "onlyAdmin"], + fn: async (req, res) => { + const { password } = req.body + + if (!password) { + return res.status(400).json({ message: "Missing password" }) + } + + const { user_id } = req.params + + const user = await User.findById(user_id).select("+password") + + if (!user) { + return res.status(404).json({ message: "User not found" }) + } + + // hash the password + const hash = bcrypt.hashSync(password, parseInt(process.env.BCRYPT_ROUNDS ?? 3)) + + user.password = hash + + await user.save() + + return res.status(200).json({ + status: "ok", + message: "Password updated successfully", + }) + } +} \ No newline at end of file diff --git a/packages/server/src/controllers/AdminController/index.js b/packages/server/src/controllers/AdminController/index.js new file mode 100644 index 00000000..8ad46ce0 --- /dev/null +++ b/packages/server/src/controllers/AdminController/index.js @@ -0,0 +1,9 @@ +import { Controller } from "linebridge/dist/server" +import generateEndpointsFromDir from "linebridge/dist/server/lib/generateEndpointsFromDir" + +export default class AdminController extends Controller { + static refName = "AdminController" + static useRoute = "/admin" + + httpEndpoints = generateEndpointsFromDir(__dirname + "/endpoints") +} \ No newline at end of file diff --git a/packages/server/src/controllers/index.js b/packages/server/src/controllers/index.js index c9afcf3c..076abde2 100755 --- a/packages/server/src/controllers/index.js +++ b/packages/server/src/controllers/index.js @@ -23,4 +23,6 @@ export { default as SearchController } from "./SearchController" // Needs to mig export { default as ModerationController } from "./ModerationController" -export { default as TracksController } from "./TracksController" \ No newline at end of file +export { default as TracksController } from "./TracksController" + +export { default as AdminController } from "./AdminController" \ No newline at end of file