File tree Expand file tree Collapse file tree 1 file changed +16
-0
lines changed Expand file tree Collapse file tree 1 file changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ package api
22
33import (
44 "encoding/base64"
5+ "errors"
56 "log"
67 "net/http"
78
@@ -102,6 +103,21 @@ func (a *Auth) checkPassword(username, password string) error {
102103}
103104
104105func (a * Auth ) deleteUser (username string ) error {
106+ adminUsers := []User {}
107+ adminQuery := a .db .Find (& User {}).Where (& User {Role : "admin" }).Find (& adminUsers )
108+ if adminQuery .Error != nil {
109+ log .Printf ("Error retrieving admin user list from database: %s" , adminQuery .Error )
110+ return adminQuery .Error
111+ }
112+
113+ for _ , user := range adminUsers {
114+ if user .Username == username {
115+ if adminQuery .RowsAffected == 1 {
116+ return errors .New ("cannot delete single admin user" )
117+ }
118+ }
119+ }
120+
105121 result := a .db .Model (& User {}).Where (& User {Username : username }).Delete (& User {})
106122 if result .Error != nil {
107123 log .Printf ("Error deleting user from database: %s" , result .Error )
You can’t perform that action at this time.
0 commit comments