normalize login email (#992)
transform email to lower case before user creating, updating, authorization
This commit is contained in:
parent
58b16c2ada
commit
425ac45d89
@ -25,7 +25,6 @@ var (
|
|||||||
mon = monkit.Package()
|
mon = monkit.Package()
|
||||||
)
|
)
|
||||||
|
|
||||||
// maxLimit specifies the limit for all paged queries
|
|
||||||
const (
|
const (
|
||||||
// maxLimit specifies the limit for all paged queries
|
// maxLimit specifies the limit for all paged queries
|
||||||
maxLimit = 50
|
maxLimit = 50
|
||||||
@ -63,13 +62,17 @@ func (s *Service) CreateUser(ctx context.Context, user CreateUser) (u *User, err
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: store original email input in the db,
|
||||||
|
// add normalization
|
||||||
|
email := normalizeEmail(user.Email)
|
||||||
|
|
||||||
hash, err := bcrypt.GenerateFromPassword([]byte(user.Password), bcrypt.DefaultCost)
|
hash, err := bcrypt.GenerateFromPassword([]byte(user.Password), bcrypt.DefaultCost)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
//passwordHash := sha256.Sum256()
|
|
||||||
return s.store.Users().Insert(ctx, &User{
|
return s.store.Users().Insert(ctx, &User{
|
||||||
Email: user.Email,
|
Email: email,
|
||||||
FirstName: user.FirstName,
|
FirstName: user.FirstName,
|
||||||
LastName: user.LastName,
|
LastName: user.LastName,
|
||||||
PasswordHash: hash,
|
PasswordHash: hash,
|
||||||
@ -79,6 +82,9 @@ func (s *Service) CreateUser(ctx context.Context, user CreateUser) (u *User, err
|
|||||||
// Token authenticates User by credentials and returns auth token
|
// Token authenticates User by credentials and returns auth token
|
||||||
func (s *Service) Token(ctx context.Context, email, password string) (token string, err error) {
|
func (s *Service) Token(ctx context.Context, email, password string) (token string, err error) {
|
||||||
defer mon.Task()(&ctx)(&err)
|
defer mon.Task()(&ctx)(&err)
|
||||||
|
|
||||||
|
email = normalizeEmail(email)
|
||||||
|
|
||||||
user, err := s.store.Users().GetByEmail(ctx, email)
|
user, err := s.store.Users().GetByEmail(ctx, email)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -127,11 +133,15 @@ func (s *Service) UpdateAccount(ctx context.Context, info UserInfo) (err error)
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: store original email input in the db,
|
||||||
|
// add normalization
|
||||||
|
email := normalizeEmail(info.Email)
|
||||||
|
|
||||||
return s.store.Users().Update(ctx, &User{
|
return s.store.Users().Update(ctx, &User{
|
||||||
ID: auth.User.ID,
|
ID: auth.User.ID,
|
||||||
FirstName: info.FirstName,
|
FirstName: info.FirstName,
|
||||||
LastName: info.LastName,
|
LastName: info.LastName,
|
||||||
Email: info.Email,
|
Email: email,
|
||||||
PasswordHash: nil,
|
PasswordHash: nil,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
package satellite
|
package satellite
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strings"
|
||||||
"unicode"
|
"unicode"
|
||||||
|
|
||||||
"github.com/zeebo/errs"
|
"github.com/zeebo/errs"
|
||||||
@ -80,3 +81,9 @@ func validatePassword(pass string) error {
|
|||||||
|
|
||||||
return errs.Combine()
|
return errs.Combine()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// normalizeEmail converts emails with different casing into equal strings
|
||||||
|
// Note: won't work with µıſͅςϐϑϕϖϰϱϵᲀᲁᲂᲃᲄᲅᲆᲇᲈẛι
|
||||||
|
func normalizeEmail(s string) string {
|
||||||
|
return strings.ToLower(s)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user