From 1f5f77ec2f2aa2c609ec160a8a675a3517c79442 Mon Sep 17 00:00:00 2001 From: Jens Ehlers Date: Thu, 26 Sep 2019 13:45:05 +0200 Subject: [PATCH] Email should be case insensitive --- account-api.go | 4 ++-- service.go | 16 ++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/account-api.go b/account-api.go index d3a082f..f7d4436 100644 --- a/account-api.go +++ b/account-api.go @@ -45,10 +45,10 @@ func getApp(w http.ResponseWriter, r *http.Request) { } func updateEmail(w http.ResponseWriter, r *http.Request) { - key := chi.URLParam(r, "EMAIL") + email := chi.URLParam(r, "EMAIL") s := GetEnv(r).Service - err := s.UpdateEmail(key) + err := s.UpdateEmail(email) if err != nil { _ = render.Render(w, r, ErrInvalidRequest(err)) return diff --git a/service.go b/service.go index 132972c..4e5c2e6 100644 --- a/service.go +++ b/service.go @@ -2,6 +2,7 @@ package main import ( "log" + "strings" "time" "github.com/amborle/featmap/lexorank" @@ -159,7 +160,7 @@ func (s *service) Register(workspaceName string, name string, email string, pass workspaceName = govalidator.Trim(workspaceName, "") name = govalidator.Trim(name, "") - email = govalidator.Trim(email, "") + email = strings.ToLower(govalidator.Trim(email, "")) if !govalidator.IsEmail(email) { return nil, nil, nil, errors.New("email_invalid") @@ -283,7 +284,7 @@ func (s *service) DeleteAccount() error { func (s *service) Login(email string, password string) (*Account, error) { - acc, err := s.r.GetAccountByEmail(email) + acc, err := s.r.GetAccountByEmail(strings.ToLower(email)) if acc == nil { return nil, errors.Wrap(err, "email not found") } @@ -585,7 +586,7 @@ func (s *service) ChangeAllowExternalSharing(value bool) error { func (s *service) CreateInvite(email string, level string) (*Invite, error) { - email = govalidator.Trim(email, "") + email = strings.ToLower(govalidator.Trim(email, "")) if !govalidator.IsEmail(email) { return nil, errors.New("email invalid") @@ -1612,14 +1613,17 @@ func (s *service) ConfirmEmail(key string) error { } func (s *service) UpdateEmail(email string) error { - dupacc, _ := s.r.GetAccountByEmail(email) + + em := strings.ToLower(email) + + dupacc, _ := s.r.GetAccountByEmail(em) if dupacc != nil { return errors.New("email_taken") } a := s.Acc - a.EmailConfirmationSentTo = email + a.EmailConfirmationSentTo = em a.EmailConfirmationKey = uuid.Must(uuid.NewV4(), nil).String() a.EmailConfirmationPending = true @@ -1630,7 +1634,7 @@ func (s *service) UpdateEmail(email string) error { log.Println(err) } - err = s.SendEmail(s.config.SMTPServer, s.config.SMTPPort, s.config.SMTPUser, s.config.SMTPPass, s.config.EmailFrom, email, "Welcome to Featmap!", body) + err = s.SendEmail(s.config.SMTPServer, s.config.SMTPPort, s.config.SMTPUser, s.config.SMTPPass, s.config.EmailFrom, em, "Welcome to Featmap!", body) if err != nil { log.Println("error sending mail") }