From 3e807ad63eadf268e69bf90de4397700acede69a Mon Sep 17 00:00:00 2001 From: Philippe Pittoli Date: Mon, 12 Jun 2023 20:54:04 +0200 Subject: [PATCH] Fix ModUser logic. --- src/requests/admin.cr | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/requests/admin.cr b/src/requests/admin.cr index 469a0ca..494d028 100644 --- a/src/requests/admin.cr +++ b/src/requests/admin.cr @@ -50,8 +50,8 @@ class AuthD::Request AuthD.requests << AddUser IPC::JSON.message ModUser, 5 do - property user : UserID - property admin : Bool = false + property user : UserID | Nil = nil + property admin : Bool? = nil property password : String? = nil property email : String? = nil property phone : String? = nil @@ -63,14 +63,18 @@ class AuthD::Request logged_user = authd.get_logged_user_full? fd return Response::Error.new "you must be logged" if logged_user.nil? - user = authd.user? @user + user = if u = @user + logged_user.assert_permission("authd", "*", User::PermissionLevel::Edit) + authd.user? u + else + logged_user + end return Response::Error.new "user not found" if user.nil? - # Only an admin can uprank someone. - if @admin + # Only an admin can uprank or downrank someone. + if admin = @admin logged_user.assert_permission("authd", "*", User::PermissionLevel::Admin) - else - logged_user.assert_permission("authd", "*", User::PermissionLevel::Edit) + user.admin = admin end @password.try do |s|