shelfy-v2/internal/controllers/authController.go

55 lines
1.3 KiB
Go
Raw Normal View History

2025-07-27 14:26:30 +00:00
package controllers
import (
"canguidev/shelfy/internal/models"
"fmt"
"net/http"
"time"
"github.com/gin-gonic/gin"
"github.com/golang-jwt/jwt"
"golang.org/x/crypto/bcrypt"
"gorm.io/gorm"
)
func Login(db *gorm.DB) gin.HandlerFunc {
return func(c *gin.Context) {
var authInput models.User
var user =models.User{}
if err := c.ShouldBindJSON(&authInput); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
d :=db.Where("Email = ?", authInput.Email).First(&user)
if d.Error != nil {
fmt.Println("Erreur lors de la requête :", d.Error)
} else {
// Afficher les données récupérées
fmt.Printf("Utilisateur trouvé : %+v\n", user)
}
if err := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(authInput.Password)); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "failed to generate token"})
// w.WriteHeader(http.StatusUnauthorized)
return
}
generateToken := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"id": user.ID,
"exp": time.Now().Add(time.Hour * 24).Unix(),
})
token, err := generateToken.SignedString([]byte("SECRET"))
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "failed to generate token"})
}
c.JSON(200, gin.H{
"token": token,
})
}}