diff --git a/client/src/services/userService.js b/client/src/services/userService.js index 0fd4d128..32c5746d 100644 --- a/client/src/services/userService.js +++ b/client/src/services/userService.js @@ -170,9 +170,9 @@ export default { return await authClient().post("/announcement", { subject, announcement }); }, - async setAdmin(email) { + async setAdmin(email, admin) { await this.refresh_token(); - return await authClient().put("/set_admin", { email }); + return await authClient().put("/set_admin", { email, admin }); }, // notifications diff --git a/client/src/views/Admin.vue b/client/src/views/Admin.vue index f81f12f7..023c778c 100644 --- a/client/src/views/Admin.vue +++ b/client/src/views/Admin.vue @@ -342,7 +342,7 @@ export default { const setAdmin = (user) => { userService - .setAdmin(user.email) + .setAdmin(user.email, true) .then((response) => { toast.value.toast(response.data.msg, "#388E3C"); }) diff --git a/server/app/admin_handler.go b/server/app/admin_handler.go index 9aaf8f5f..ed88c35d 100644 --- a/server/app/admin_handler.go +++ b/server/app/admin_handler.go @@ -30,6 +30,7 @@ type UpdateMaintenanceInput struct { // SetAdminInput struct for setting users as admins type SetAdminInput struct { Email string `json:"email" binding:"required"` + Admin bool `json:"admin" binding:"required"` } // GetAllUsersHandler returns all users @@ -293,17 +294,23 @@ func (a *App) SetAdmin(req *http.Request) (interface{}, Response) { return nil, InternalServerError(errors.New(internalServerErrorMsg)) } - if user.Admin { + if user.Admin && input.Admin { return ResponseMsg{ Message: "User is already an admin", }, Ok() } + if !user.Admin && !input.Admin { + return ResponseMsg{ + Message: "User is not already an admin", + }, Ok() + } + err = a.db.UpdateUserByID( models.User{ ID: user.ID, Email: input.Email, - Admin: true, + Admin: input.Admin, UpdatedAt: time.Now(), }, )