Files
abuse-registration-api-golang/internal/handlers/users.go
T

36 lines
1.2 KiB
Go

package handlers
import (
"log"
"net/http"
"abuse_registration_poc/internal/models"
"abuse_registration_poc/internal/utils"
)
// Login mirrors the original API login handler shape: validate user credentials,
// generate a JWT, and return {message, token}.
func (h *Handler) Login(writer http.ResponseWriter, request *http.Request) {
var user models.ValidateUser
if err := DecodeJSON(request, &user); err != nil {
log.Printf("Error parsing request data: %v", err)
WriteJSON(writer, http.StatusBadRequest, map[string]string{"message": "Could not parse request data."})
return
}
if err := h.users.ValidateCredentials(&user); err != nil {
log.Printf("Error validating credentials: %v", err)
WriteJSON(writer, http.StatusUnauthorized, map[string]string{"message": "Could not authenticate user."})
return
}
token, err := utils.GenerateToken(user.UserName, user.ID, user.Role)
if err != nil {
log.Printf("Error generating token: %v", err)
WriteJSON(writer, http.StatusInternalServerError, map[string]string{"message": "Could not authenticate user."})
return
}
WriteJSON(writer, http.StatusOK, map[string]string{"message": "Login successful!", "token": token})
}