Compare commits
3 commits
daa90869cf
...
e65b56028e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e65b56028e | ||
|
|
7b1df7bce1 | ||
|
|
3fec9d794d |
3 changed files with 15 additions and 3 deletions
|
|
@ -1,3 +1,4 @@
|
||||||
|
.env
|
||||||
.git
|
.git
|
||||||
.gitignore
|
.gitignore
|
||||||
README.md
|
README.md
|
||||||
|
|
|
||||||
7
main.go
7
main.go
|
|
@ -50,7 +50,12 @@ func main() {
|
||||||
MaxAge: 60 * 80 * 24 * 7, // 7 days
|
MaxAge: 60 * 80 * 24 * 7, // 7 days
|
||||||
HttpOnly: true,
|
HttpOnly: true,
|
||||||
Secure: os.Getenv("ENV") == "production",
|
Secure: os.Getenv("ENV") == "production",
|
||||||
SameSite: http.SameSiteLaxMode,
|
SameSite: func() http.SameSite {
|
||||||
|
if os.Getenv("CORS_ORIGINS") != "" {
|
||||||
|
return http.SameSiteNoneMode
|
||||||
|
}
|
||||||
|
return http.SameSiteLaxMode
|
||||||
|
}(),
|
||||||
})
|
})
|
||||||
r.Use(sessions.Sessions("rideaware-session", store))
|
r.Use(sessions.Sessions("rideaware-session", store))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@ func NewUserService(db *gorm.DB) *UserService {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *UserService) CreateUser(username, email, password string) (*models.User, error) {
|
func (s *UserService) CreateUser(username, email, password string) (*models.User, error) {
|
||||||
|
username = strings.TrimSpace(username)
|
||||||
|
email = strings.ToLower(strings.TrimSpace(email))
|
||||||
if username == "" || email == "" || password == "" {
|
if username == "" || email == "" || password == "" {
|
||||||
return nil, errors.New("username, email, and password are required")
|
return nil, errors.New("username, email, and password are required")
|
||||||
}
|
}
|
||||||
|
|
@ -36,12 +38,15 @@ func (s *UserService) CreateUser(username, email, password string) (*models.User
|
||||||
var existingUser models.User
|
var existingUser models.User
|
||||||
if err := s.db.Where("username = ? OR email = ?", username, email).First(&existingUser).Error; err == nil {
|
if err := s.db.Where("username = ? OR email = ?", username, email).First(&existingUser).Error; err == nil {
|
||||||
return nil, errors.New("user with this username or email already exists")
|
return nil, errors.New("user with this username or email already exists")
|
||||||
|
} else if !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
log.Printf("Error checking existing users: %v", err)
|
||||||
|
return nil, errors.New("could not create user")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create new user
|
// Create new user
|
||||||
user := models.User{
|
user := models.User{
|
||||||
Username: username,
|
Username: username,
|
||||||
Email: email,
|
Email: strings.ToLower(email),
|
||||||
}
|
}
|
||||||
if err := user.SetPassword(password); err != nil {
|
if err := user.SetPassword(password); err != nil {
|
||||||
log.Printf("Error hashing password: %v", err)
|
log.Printf("Error hashing password: %v", err)
|
||||||
|
|
@ -59,7 +64,8 @@ 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
|
||||||
identifier := strings.TrimSpace(username)
|
identifier := strings.TrimSpace(username)
|
||||||
if err := s.db.Where("username = ? OR email = ?", identifier, strings.ToLower(identifier)).First(&user).Error; err != nil {
|
lid := strings.ToLower(identifier)
|
||||||
|
if err := s.db.Where("username = ? OR LOWER(email) = ?", identifier, lid).First(&user).Error; err != nil {
|
||||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
return nil, errors.New("invalid username or password")
|
return nil, errors.New("invalid username or password")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue