Documentation
¶
Overview ¶
Package server provides the HTTP server for zitadel-rbac-mapper.
Index ¶
- func NewSyncAllHandler(logger *slog.Logger, res resolver.GroupsResolver, ...) fiber.Handler
- func NewZitadelWebhookHandler(logger *slog.Logger, res resolver.GroupsResolver, ...) fiber.Handler
- func Run(ctx context.Context, logger *slog.Logger, cfg Config, ...) error
- type Config
- type Problem
- type SyncAllResponse
- type UserLocks
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewSyncAllHandler ¶ added in v0.8.0
func NewSyncAllHandler( logger *slog.Logger, res resolver.GroupsResolver, rulesSource mapper.RulesSource, syncer *grantsync.Syncer, apiKey string, userLocks *UserLocks, ) fiber.Handler
NewSyncAllHandler returns a fiber handler for POST /sync (full reconciliation). It verifies the X-Sync-Key header, force-refreshes rules across all orgs, then iterates each org → lists users → syncs grants.
func NewZitadelWebhookHandler ¶ added in v0.2.0
func NewZitadelWebhookHandler( logger *slog.Logger, res resolver.GroupsResolver, rulesSource mapper.RulesSource, syncer *grantsync.Syncer, jwtVerifier *zitadeljwt.Verifier, userLocks *UserLocks, ) fiber.Handler
NewZitadelWebhookHandler creates a fiber handler for POST /webhook.
This handler receives Zitadel Actions V2 function payloads (preuserinfo, preaccesstoken) via a restCall target with JWT payload type. It:
- Verifies the JWT signature using the instance JWKS
- Extracts the user email from the payload
- Resolves Google Workspace groups via the groups resolver
- Maps groups to desired grants using the cached rules
- Syncs UserGrants in Zitadel (idempotent add/update/remove)
- Returns append_claims with a "groups" claim containing the group emails
Types ¶
type Problem ¶
type Problem struct {
Type string `json:"type"`
Title string `json:"title"`
Status int `json:"status"`
Detail string `json:"detail,omitempty"`
}
Problem represents an RFC 9457 Problem Details response.
type SyncAllResponse ¶ added in v0.8.0
type SyncAllResponse struct {
UsersProcessed int `json:"users_processed"`
GrantsAdded int `json:"grants_added"`
GrantsUpdated int `json:"grants_updated"`
GrantsRemoved int `json:"grants_removed"`
}
SyncAllResponse is the JSON response for POST /sync.
type UserLocks ¶ added in v0.8.0
type UserLocks struct {
// contains filtered or unexported fields
}
UserLocks provides per-user mutexes to prevent race conditions when scheduled sync-all and login webhook fire for the same user.