aboutsummaryrefslogtreecommitdiff
path: root/models/user.go
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-07-13 14:22:20 +0530
committerBobby <[email protected]>2025-07-13 14:22:20 +0530
commit3d7f8602d45583f25e2428bf6f8123453646dc08 (patch)
treeecd707d298099ae9fda55efc3f0d1daf48f7b6e9 /models/user.go
parentbf112649d039f8f02e2135a74d8b506f7c31c784 (diff)
downloadimageboard-3d7f8602d45583f25e2428bf6f8123453646dc08.tar.xz
imageboard-3d7f8602d45583f25e2428bf6f8123453646dc08.zip
registration controllers and email sending support
Diffstat (limited to 'models/user.go')
-rw-r--r--models/user.go19
1 files changed, 15 insertions, 4 deletions
diff --git a/models/user.go b/models/user.go
index 5607e68..3b92077 100644
--- a/models/user.go
+++ b/models/user.go
@@ -72,13 +72,27 @@ func (u *User) BeforeCreate(tx *gorm.DB) error {
var userCount int64
if err := tx.Model(&User{}).Where("is_deleted = ?", false).Count(&userCount).Error; err != nil {
- return err
+ return fmt.Errorf("failed to count existing users: %v", err)
}
if userCount == 0 {
u.Level = 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)
+ }
+ if len(u.Password) > 255 {
+ return fmt.Errorf("password must not exceed 255 characters")
+ }
+
+ hashedPassword, err := bcrypt.GenerateFromPassword([]byte(u.Password), bcrypt.DefaultCost)
+ if err != nil {
+ return err
+ }
+
+ u.Password = string(hashedPassword)
+
return nil
}
@@ -93,16 +107,13 @@ func (u *User) SetPassword(password string) error {
if len(password) < config.Server.MinPasswordLength {
return fmt.Errorf("password must be at least %d characters long", config.Server.MinPasswordLength)
}
-
if len(password) > 255 {
return fmt.Errorf("password must not exceed 255 characters")
}
-
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if err != nil {
return err
}
-
u.Password = string(hashedPassword)
return nil
}