Skip to content

Commit d93b954

Browse files
authored
Merge pull request #241 from OpenFactorioServerManager/single-admin-delete
Single admin delete
2 parents c75c4e7 + b826be3 commit d93b954

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/api/auth.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package api
22

33
import (
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

104105
func (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)

0 commit comments

Comments
 (0)