8cb202eb29
* Add JavaScript admin client to repository * Apply review feedback Co-authored-by: Stian Thorgersen <stian@redhat.com> --------- Co-authored-by: Stian Thorgersen <stian@redhat.com>
60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import type { KeycloakAdminClient } from "../client.js";
|
|
import type SynchronizationResultRepresentation from "../defs/synchronizationResultRepresentation.js";
|
|
import Resource from "./resource.js";
|
|
|
|
type ActionType = "triggerFullSync" | "triggerChangedUsersSync";
|
|
export type DirectionType = "fedToKeycloak" | "keycloakToFed";
|
|
type NameResponse = {
|
|
id: string;
|
|
name: string;
|
|
};
|
|
|
|
export class UserStorageProvider extends Resource<{ realm?: string }> {
|
|
public name = this.makeRequest<{ id: string }, NameResponse>({
|
|
method: "GET",
|
|
path: "/{id}/name",
|
|
urlParamKeys: ["id"],
|
|
});
|
|
|
|
public removeImportedUsers = this.makeRequest<{ id: string }, void>({
|
|
method: "POST",
|
|
path: "/{id}/remove-imported-users",
|
|
urlParamKeys: ["id"],
|
|
});
|
|
|
|
public sync = this.makeRequest<
|
|
{ id: string; action?: ActionType },
|
|
SynchronizationResultRepresentation
|
|
>({
|
|
method: "POST",
|
|
path: "/{id}/sync",
|
|
urlParamKeys: ["id"],
|
|
queryParamKeys: ["action"],
|
|
});
|
|
|
|
public unlinkUsers = this.makeRequest<{ id: string }, void>({
|
|
method: "POST",
|
|
path: "/{id}/unlink-users",
|
|
urlParamKeys: ["id"],
|
|
});
|
|
|
|
public mappersSync = this.makeRequest<
|
|
{ id: string; parentId: string; direction?: DirectionType },
|
|
SynchronizationResultRepresentation
|
|
>({
|
|
method: "POST",
|
|
path: "/{parentId}/mappers/{id}/sync",
|
|
urlParamKeys: ["id", "parentId"],
|
|
queryParamKeys: ["direction"],
|
|
});
|
|
|
|
constructor(client: KeycloakAdminClient) {
|
|
super(client, {
|
|
path: "/admin/realms/{realm}/user-storage",
|
|
getUrlParams: () => ({
|
|
realm: client.realmName,
|
|
}),
|
|
getBaseUrl: () => client.baseUrl,
|
|
});
|
|
}
|
|
}
|