38 lines
1.5 KiB
Go
38 lines
1.5 KiB
Go
package controllers
|
|
|
|
import (
|
|
"git.secnex.io/secnex/masterlog"
|
|
"git.secnex.io/secnex/oauth2-api/services"
|
|
"git.secnex.io/secnex/oauth2-api/utils"
|
|
"github.com/go-playground/validator/v10"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type TokenRequest struct {
|
|
ClientID string `json:"client_id" validate:"required"`
|
|
GrantType string `json:"grant_type" validate:"required"`
|
|
Code string `json:"code" validate:"required"`
|
|
RedirectURI string `json:"redirect_uri" validate:"required"`
|
|
ClientSecret string `json:"client_secret" validate:"required"`
|
|
}
|
|
|
|
func TokenController(c *fiber.Ctx) error {
|
|
masterlog.Debug("Token request received", map[string]interface{}{"path": c.Path()})
|
|
var request TokenRequest
|
|
if err := c.BodyParser(&request); err != nil {
|
|
masterlog.Debug("Failed to parse request", map[string]interface{}{"error": err.Error()})
|
|
return utils.NewHTTPResponse(fiber.StatusBadRequest, &fiber.Map{"error": err.Error()}, "", nil, nil).Send(c)
|
|
}
|
|
|
|
if err := validator.New().Struct(request); err != nil {
|
|
masterlog.Debug("Failed to validate request", map[string]interface{}{"error": err.Error()})
|
|
return utils.NewHTTPResponse(fiber.StatusBadRequest, &fiber.Map{"error": err.Error()}, "", nil, nil).Send(c)
|
|
}
|
|
|
|
masterlog.Debug("Token request validated", map[string]interface{}{"path": c.Path(), "body": request})
|
|
|
|
response := services.Token(request.ClientID, request.GrantType, request.Code, request.RedirectURI, request.ClientSecret)
|
|
masterlog.Debug("Token response sent", map[string]interface{}{"path": c.Path()})
|
|
return response.Send(c)
|
|
}
|