From b23ee59a9187c40cb150cfa60d7597e9dc06dcc0 Mon Sep 17 00:00:00 2001 From: Janos Dobronszki Date: Wed, 23 Jun 2021 14:39:17 +0100 Subject: [PATCH] user service: check for email or user name existence when creating (#172) --- user/handler/handler.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/user/handler/handler.go b/user/handler/handler.go index e3cbab0..6010c5e 100644 --- a/user/handler/handler.go +++ b/user/handler/handler.go @@ -52,6 +52,21 @@ func (s *User) Create(ctx context.Context, req *pb.CreateRequest, rsp *pb.Create } req.Username = strings.ToLower(req.Username) req.Email = strings.ToLower(req.Email) + usernames, err := s.domain.Search(ctx, req.Username, "") + if err != nil { + return err + } + if len(usernames) > 0 { + return errors.BadRequest("create.username-check", "username already exists") + } + + emails, err := s.domain.Search(ctx, "", req.Email) + if err != nil { + return err + } + if len(emails) > 0 { + return errors.BadRequest("create.email-check", "email already exists") + } salt := random(16) h, err := bcrypt.GenerateFromPassword([]byte(x+salt+req.Password), 10)