diff options
| author | Bobby <[email protected]> | 2025-07-18 18:38:57 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-07-18 18:38:57 +0530 |
| commit | 1d582861feab127bdd588430d4d8374cf1d54fd5 (patch) | |
| tree | eaf151e2555964370971ce404e912ae9271eea1a /models | |
| parent | 7feec60d6ec8b2bb5eaa34dc59c15de38a647e12 (diff) | |
| download | imageboard-1d582861feab127bdd588430d4d8374cf1d54fd5.tar.xz imageboard-1d582861feab127bdd588430d4d8374cf1d54fd5.zip | |
edit posts page prep
Diffstat (limited to 'models')
| -rw-r--r-- | models/user.go | 22 |
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) } |
