aboutsummaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-07-18 18:38:57 +0530
committerBobby <[email protected]>2025-07-18 18:38:57 +0530
commit1d582861feab127bdd588430d4d8374cf1d54fd5 (patch)
treeeaf151e2555964370971ce404e912ae9271eea1a /models
parent7feec60d6ec8b2bb5eaa34dc59c15de38a647e12 (diff)
downloadimageboard-1d582861feab127bdd588430d4d8374cf1d54fd5.tar.xz
imageboard-1d582861feab127bdd588430d4d8374cf1d54fd5.zip
edit posts page prep
Diffstat (limited to 'models')
-rw-r--r--models/user.go22
1 files changed, 11 insertions, 11 deletions
diff --git a/models/user.go b/models/user.go
index d918db7..6ed3270 100644
--- a/models/user.go
+++ b/models/user.go
@@ -45,7 +45,16 @@ func (u *User) BeforeCreate(tx *gorm.DB) error {
return fmt.Errorf("email cannot be empty")
}
- if len(u.Username) < 3 {
+ var userCount int64
+ if err := tx.Model(&User{}).Where("is_deleted = ?", false).Count(&userCount).Error; err != nil {
+ return fmt.Errorf("failed to count existing users: %v", err)
+ }
+
+ if userCount == 0 {
+ u.Level = config.UserLevelSuperAdmin // First user becomes Super Admin
+ }
+
+ if len(u.Username) < 3 && u.Level < config.UserLevelSuperAdmin {
return fmt.Errorf("username must be at least 3 characters long")
}
@@ -57,7 +66,7 @@ func (u *User) BeforeCreate(tx *gorm.DB) error {
return fmt.Errorf("username can only contain letters, numbers, underscores, and hyphens")
}
- if validators.IsReservedUsername(u.Username) {
+ if validators.IsReservedUsername(u.Username) && u.Level < config.UserLevelSuperAdmin {
return fmt.Errorf("username '%s' is reserved and cannot be used", u.Username)
}
@@ -71,15 +80,6 @@ func (u *User) BeforeCreate(tx *gorm.DB) error {
return fmt.Errorf("username '%s' is already taken", u.Username)
}
- var userCount int64
- if err := tx.Model(&User{}).Where("is_deleted = ?", false).Count(&userCount).Error; err != nil {
- return fmt.Errorf("failed to count existing users: %v", err)
- }
-
- if userCount == 0 {
- u.Level = config.UserLevelSuperAdmin // First user becomes Super Admin
- }
-
if len(u.Password) < config.Server.MinPasswordLength {
return fmt.Errorf("password must be at least %d characters long", config.Server.MinPasswordLength)
}