From 8d6df09ee777628b09808c71e25fe987a91b0a87 Mon Sep 17 00:00:00 2001 From: "arashi.li" Date: Thu, 25 Jun 2026 23:45:03 +0800 Subject: [PATCH] feat(keycloak): add Helper.DeleteUser passthrough Expose user deletion on the keycloak Helper and its Client interface so callers can remove a Keycloak user by ID, mirroring the existing CreateUser/UpdateUser wrappers. Needed by the FET new-order activation rollback, which recycles a freshly-created user when provisioning fails. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0132hfdR8ydwnt5ifKJsphHa --- pkg/keycloak/keycloak.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/keycloak/keycloak.go b/pkg/keycloak/keycloak.go index 72bbab9..981791e 100644 --- a/pkg/keycloak/keycloak.go +++ b/pkg/keycloak/keycloak.go @@ -29,6 +29,7 @@ type Client interface { CreateUser(context.Context, string, string, gocloak.User) (string, error) SetPassword(context.Context, string, string, string, string, bool) error UpdateUser(context.Context, string, string, gocloak.User) error + DeleteUser(context.Context, string, string, string) error GetClientRole(ctx context.Context, token string, realm string, idOfClient string, roleName string) (*gocloak.Role, error) AddClientRolesToUser(ctx context.Context, token string, realm string, idOfClient string, userID string, roles []gocloak.Role) error GetGroups(ctx context.Context, token string, realm string, params gocloak.GetGroupsParams) ([]*gocloak.Group, error) @@ -208,6 +209,12 @@ func (h *Helper) SetPassword(realm, userID, password string) error { return h.Client.SetPassword(ctx, h.Token, userID, realm, password, false) } +func (h *Helper) DeleteUser(realm, userID string) error { + ctx, cancel := context.WithTimeout(wait.CtxSeconds(10)) + defer cancel() + return h.Client.DeleteUser(ctx, h.Token, realm, userID) +} + func (h *Helper) UpdateUser(realm string, user gocloak.User) error { ctx, cancel := context.WithTimeout(wait.CtxSeconds(10)) defer cancel()