feat: add support for SCIM provisioning (#1182)

This commit is contained in:
Elias Schneider
2026-01-02 17:54:20 +01:00
committed by GitHub
parent e4a8ca476c
commit 579cfdc678
37 changed files with 1963 additions and 34 deletions
@@ -10,6 +10,7 @@ import type {
OidcClientWithAllowedUserGroupsCount,
OidcDeviceCodeInfo
} from '$lib/types/oidc.type';
import type { ScimServiceProvider } from '$lib/types/scim.type';
import { cachedOidcClientLogo } from '$lib/utils/cached-image-util';
import APIService from './api-service';
@@ -127,6 +128,11 @@ class OidcService extends APIService {
revokeOwnAuthorizedClient = async (clientId: string) => {
await this.api.delete(`/oidc/users/me/authorized-clients/${clientId}`);
};
getScimResourceProvider = async (clientId: string) => {
const res = await this.api.get(`/oidc/clients/${clientId}/scim-service-provider`);
return res.data as ScimServiceProvider;
};
}
export default OidcService;
+27
View File
@@ -0,0 +1,27 @@
import type { ScimServiceProvider, ScimServiceProviderCreate } from '$lib/types/scim.type';
import APIService from './api-service';
class ScimService extends APIService {
syncServiceProvider = async (serviceProviderId: string) => {
return await this.api.post(`/scim/service-provider/${serviceProviderId}/sync`);
};
createServiceProvider = async (serviceProvider: ScimServiceProviderCreate) => {
return (await this.api.post('/scim/service-provider', serviceProvider))
.data as ScimServiceProvider;
};
updateServiceProvider = async (
serviceProviderId: string,
serviceProvider: ScimServiceProviderCreate
) => {
return (await this.api.put(`/scim/service-provider/${serviceProviderId}`, serviceProvider))
.data as ScimServiceProvider;
};
deleteServiceProvider = async (serviceProviderId: string) => {
await this.api.delete(`/scim/service-provider/${serviceProviderId}`);
};
}
export default ScimService;