2
Guys, I’m learning to code in the GO language, and I made an api with a login system.
func Authenticate(db *gorm.DB, auth models.UserAuthForm) uint {
    hasher.Write([]byte(auth.Password))
    pass_hash := hex.EncodeToString(hasher.Sum(nil))
    user := models.User{}
    db.Select("id").Where("pass_hash = ? AND email = ?", pass_hash, auth.Email).First(&user)
    hasher.Reset()
    return user.ID
}
This function is called inside a controller with POST method in login is represented by the Struct:
type UserAuthForm struct {
    Email    string `json:"email" form:"email" binding:"required"`
    Password string `json:"password" form:"password" binding:"required"`
}
that uid represents the id returned and a cookie is saved in Session
uid := crud.Authenticate(db, login)
if uid != 0 {
    sess := sessions.Default(c)
    sess.Set("user", crud.SaveCookieId(db, uid))
    sess.Save()
    c.JSON(200, gin.H{"Message": "Success!"})
    return
}
c.JSON(401, gin.H{"Error": "Failed!"})
return
My real problem is that when I try to log in, first the return is:
{
    "Message": "Success!"
}
but when he tries again, he returns:
{
    "Error": "Failed!"
}
and if I try again, it returns to be successful and so remains interspersed