fix(auth): prevent admin users from deleting the root account

This commit is contained in:
mikiher 2026-07-15 20:34:02 +03:00
parent 6f03467f35
commit 3c016314e6
3 changed files with 192 additions and 3 deletions

View file

@ -363,7 +363,13 @@ class UserController {
* @param {Response} res
*/
async delete(req, res) {
if (req.params.id === 'root') {
const user = req.reqUser
if (user.isRoot && !req.user.isRoot) {
Logger.error(`[UserController] Admin user "${req.user.username}" attempted to delete root user`)
return res.sendStatus(403)
}
if (user.isRoot) {
Logger.error('[UserController] Attempt to delete root user. Root user cannot be deleted')
return res.sendStatus(400)
}
@ -371,7 +377,6 @@ class UserController {
Logger.error(`[UserController] User ${req.user.username} is attempting to delete self`)
return res.sendStatus(400)
}
const user = req.reqUser
// Todo: check if user is logged in and cancel streams

View file

@ -530,7 +530,14 @@ class User extends Model {
},
{
sequelize,
modelName: 'user'
modelName: 'user',
hooks: {
beforeDestroy(user) {
if (user.type === 'root') {
throw new Error('Root user cannot be deleted')
}
}
}
}
)
}