added admin controller

This commit is contained in:
SrGooglo 2023-04-08 22:28:30 +00:00
parent 0bc7776564
commit 32bdad1608
3 changed files with 48 additions and 1 deletions

View File

@ -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",
})
}
}

View File

@ -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")
}

View File

@ -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"
export { default as TracksController } from "./TracksController"
export { default as AdminController } from "./AdminController"