feat: update email verification

This commit is contained in:
Cipher Vance 2025-09-18 21:04:16 -05:00
parent afd12684b6
commit daa90869cf

View file

@ -3,6 +3,7 @@ package services
import ( import (
"errors" "errors"
"log" "log"
"net/mail"
"strings" "strings"
"github.com/rideaware/rideaware-api/models" "github.com/rideaware/rideaware-api/models"
@ -27,7 +28,7 @@ func (s *UserService) CreateUser(username, email, password string) (*models.User
} }
// Basic email validation // Basic email validation
if !strings.Contains(email, "@") { if _, err := mail.ParseAddress(email); err != nil {
return nil, errors.New("invalid email format") return nil, errors.New("invalid email format")
} }
@ -57,17 +58,20 @@ func (s *UserService) CreateUser(username, email, password string) (*models.User
func (s *UserService) VerifyUser(username, password string) (*models.User, error) { func (s *UserService) VerifyUser(username, password string) (*models.User, error) {
var user models.User var user models.User
// Allow login with either username or email identifier := strings.TrimSpace(username)
if err := s.db.Where("username = ? OR email = ?", username, username).First(&user).Error; err != nil { if err := s.db.Where("username = ? OR email = ?", identifier, strings.ToLower(identifier)).First(&user).Error; err != nil {
log.Printf("User not found: %s", username) if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, errors.New("invalid username or password")
}
log.Printf("DB error during VerifyUser: %v", err)
return nil, errors.New("invalid username or password") return nil, errors.New("invalid username or password")
} }
if !user.CheckPassword(password) { if !user.CheckPassword(password) {
log.Printf("Invalid password for user: %s", username) log.Printf("Invalid credentials")
return nil, errors.New("invalid username or password") return nil, errors.New("invalid username or password")
} }
log.Printf("User verified: %s", username) log.Printf("User login succeeded")
return &user, nil return &user, nil
} }