fix user login and register

This commit is contained in:
Fran Jurmanović
2023-10-07 01:05:44 +02:00
parent cc622c2670
commit 48cffcbcfe
4 changed files with 29 additions and 7 deletions

View File

@@ -51,6 +51,14 @@ func (rc *UserController) PostLogin(c *gin.Context) {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
if body.Email == "" {
c.JSON(400, "Email cannot be empty!")
return
}
if body.Password == "" {
c.JSON(400, "Password cannot be empty!")
return
}
returnedUser, exceptionReturn := rc.service.Login(c, body)
if exceptionReturn.Message != "" {

View File

@@ -5,6 +5,7 @@ import "wallet-api/pkg/model"
type UserFilter struct {
model.Params
BaseFilter
Email string
}
func NewUserFilter(params model.Params) *UserFilter {

View File

@@ -42,6 +42,7 @@ Gets row from transaction table by id.
func (us *UserRepository) Get(ctx context.Context, flt *filter.UserFilter, tx *pg.Tx) (*model.User, error) {
wm := new(model.User)
wm.Id = flt.Id
wm.Email = flt.Email
commit := false
if tx == nil {
@@ -52,7 +53,16 @@ func (us *UserRepository) Get(ctx context.Context, flt *filter.UserFilter, tx *p
}
qry := tx.Model(wm)
err := common.GenerateEmbed(qry, flt.Embed).WherePK().Select()
var query = common.GenerateEmbed(qry, flt.Embed)
if wm.Id != "" {
query.WherePK()
}
if wm.Email != "" {
query.Where("? = ?", pg.Ident("email"), wm.Email)
}
err := query.Select()
if err != nil {
return nil, err
}
@@ -116,7 +126,7 @@ Inserts new row to users table.
*model.User: User object from database
*model.Exception
*/
func (us *UserRepository) Check(ctx context.Context, tx *pg.Tx, checkBody *model.User) (*model.User, error) {
func (us *UserRepository) Check(ctx context.Context, tx *pg.Tx, checkBody *model.User) (bool, error) {
check := new(model.User)
commit := false
@@ -127,14 +137,14 @@ func (us *UserRepository) Check(ctx context.Context, tx *pg.Tx, checkBody *model
defer tx.Rollback()
}
err := tx.Model(check).Where("? = ?", pg.Ident("username"), checkBody.Username).WhereOr("? = ?", pg.Ident("email"), checkBody.Email).Select()
exists, err := tx.Model(check).Where("? = ?", pg.Ident("username"), checkBody.Username).WhereOr("? = ?", pg.Ident("email"), checkBody.Email).Exists()
if err != nil {
return nil, err
return false, err
}
if commit {
tx.Commit()
}
return check, nil
return exists, nil
}
/*

View File

@@ -50,7 +50,7 @@ func (us *UserService) Create(ctx context.Context, registerBody *model.User) (*m
return nil, exceptionReturn
}
if check.Username != "" || check.Email != "" {
if check {
exceptionReturn.Message = "User already exists"
exceptionReturn.ErrorCode = "400101"
exceptionReturn.StatusCode = 400
@@ -94,10 +94,13 @@ func (us *UserService) Login(ctx context.Context, body *model.Login) (*model.Tok
loginBody.Email = body.Email
loginBody.Username = body.Email
flt := filter.NewUserFilter(model.Params{})
flt.Email = body.Email
tx, _ := us.repository.CreateTx(ctx)
defer tx.Rollback()
check, err := us.repository.Check(ctx, tx, loginBody)
check, err := us.repository.Get(ctx, flt, tx)
if err != nil {
exceptionReturn.Message = "Error checking user"
exceptionReturn.ErrorCode = "400139"