DeleteUser from Keycloak by user ID.
(ctx context.Context, userID string)
| 317 | |
| 318 | // DeleteUser from Keycloak by user ID. |
| 319 | func (km *KeycloakManager) DeleteUser(ctx context.Context, userID string) error { |
| 320 | jwtToken, err := km.credentials.Authenticate(ctx) |
| 321 | if err != nil { |
| 322 | return err |
| 323 | } |
| 324 | |
| 325 | reqURL := fmt.Sprintf("%s/users/%s", km.adminEndpoint, url.QueryEscape(userID)) |
| 326 | req, err := http.NewRequest(http.MethodDelete, reqURL, nil) |
| 327 | if err != nil { |
| 328 | return err |
| 329 | } |
| 330 | req.Header.Add("authorization", "Bearer "+jwtToken.AccessToken) |
| 331 | req.Header.Add("content-type", "application/json") |
| 332 | |
| 333 | if km.appMetrics != nil { |
| 334 | km.appMetrics.IDPMetrics().CountDeleteUser() |
| 335 | } |
| 336 | |
| 337 | resp, err := km.httpClient.Do(req) |
| 338 | if err != nil { |
| 339 | if km.appMetrics != nil { |
| 340 | km.appMetrics.IDPMetrics().CountRequestError() |
| 341 | } |
| 342 | return err |
| 343 | } |
| 344 | defer resp.Body.Close() // nolint |
| 345 | |
| 346 | // In the docs, they specified 200, but in the endpoints, they return 204 |
| 347 | if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusNoContent { |
| 348 | if km.appMetrics != nil { |
| 349 | km.appMetrics.IDPMetrics().CountRequestStatusError() |
| 350 | } |
| 351 | |
| 352 | return fmt.Errorf("unable to delete user, statusCode %d", resp.StatusCode) |
| 353 | } |
| 354 | |
| 355 | return nil |
| 356 | } |
| 357 | |
| 358 | func (km *KeycloakManager) fetchAllUserProfiles(ctx context.Context) ([]keycloakProfile, error) { |
| 359 | totalUsers, err := km.totalUsersCount(ctx) |
nothing calls this directly
no test coverage detected