forked from baron/baron-sso
연동 해지 api 앤드포인트 구현
This commit is contained in:
@@ -535,6 +535,7 @@ func main() {
|
|||||||
user.Post("/me/send-code", authHandler.SendUpdateCode)
|
user.Post("/me/send-code", authHandler.SendUpdateCode)
|
||||||
user.Post("/me/verify-code", authHandler.VerifyUpdateCode)
|
user.Post("/me/verify-code", authHandler.VerifyUpdateCode)
|
||||||
user.Get("/rp/linked", authHandler.ListLinkedRps)
|
user.Get("/rp/linked", authHandler.ListLinkedRps)
|
||||||
|
user.Delete("/rp/linked/:id", authHandler.RevokeLinkedRp)
|
||||||
|
|
||||||
// Admin Routes
|
// Admin Routes
|
||||||
admin := api.Group("/admin")
|
admin := api.Group("/admin")
|
||||||
|
|||||||
@@ -3306,6 +3306,35 @@ func (h *AuthHandler) ListLinkedRps(c *fiber.Ctx) error {
|
|||||||
return c.JSON(linkedRpListResponse{Items: items})
|
return c.JSON(linkedRpListResponse{Items: items})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *AuthHandler) RevokeLinkedRp(c *fiber.Ctx) error {
|
||||||
|
clientID := c.Params("id")
|
||||||
|
if clientID == "" {
|
||||||
|
return fiber.NewError(fiber.StatusBadRequest, "client_id is required")
|
||||||
|
}
|
||||||
|
|
||||||
|
subject, err := h.resolveConsentSubject(c)
|
||||||
|
if err != nil || subject == "" {
|
||||||
|
return fiber.NewError(fiber.StatusUnauthorized, "Authentication required")
|
||||||
|
}
|
||||||
|
|
||||||
|
slog.Info("RevokeLinkedRp called", "subject", subject, "client_id", clientID)
|
||||||
|
|
||||||
|
if h.Hydra == nil {
|
||||||
|
return fiber.NewError(fiber.StatusServiceUnavailable, "hydra admin unavailable")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hydra에서 해당 사용자와 클라이언트의 모든 동의 세션을 삭제
|
||||||
|
if err := h.Hydra.RevokeConsentSessions(c.Context(), subject, clientID); err != nil {
|
||||||
|
slog.Error("failed to revoke hydra consent sessions", "error", err)
|
||||||
|
return fiber.NewError(fiber.StatusInternalServerError, "Failed to revoke link")
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.Status(fiber.StatusOK).JSON(fiber.Map{
|
||||||
|
"status": "success",
|
||||||
|
"message": "Link revoked successfully",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (h *AuthHandler) GetConsentRequest(c *fiber.Ctx) error {
|
func (h *AuthHandler) GetConsentRequest(c *fiber.Ctx) error {
|
||||||
challenge := c.Query("consent_challenge")
|
challenge := c.Query("consent_challenge")
|
||||||
if challenge == "" {
|
if challenge == "" {
|
||||||
|
|||||||
Reference in New Issue
Block a user