in controllers/keycloakclient/chain/process_policy.go [103:136]
func (h *ProcessPolicy) toPolicyRepresentation(ctx context.Context, policy *keycloakApi.Policy, clientID, realm string) (*gocloak.PolicyRepresentation, error) {
keycloakPolicy := getBasePolicyRepresentation(policy)
switch policy.Type {
case keycloakApi.PolicyTypeAggregate:
if err := h.toAggregatePolicyRepresentation(ctx, policy, clientID, realm, keycloakPolicy); err != nil {
return nil, err
}
case "client":
if err := h.toClientPolicyRepresentation(ctx, policy, realm, keycloakPolicy); err != nil {
return nil, err
}
case keycloakApi.PolicyTypeGroup:
if err := h.toGroupPolicyRepresentation(ctx, policy, realm, keycloakPolicy); err != nil {
return nil, err
}
case keycloakApi.PolicyTypeRole:
if err := h.toRolePolicyRepresentation(ctx, policy, realm, keycloakPolicy); err != nil {
return nil, err
}
case keycloakApi.PolicyTypeTime:
if err := h.toTimePolicyRepresentation(ctx, policy, keycloakPolicy); err != nil {
return nil, err
}
case keycloakApi.PolicyTypeUser:
if err := h.toUserPolicyRepresentation(ctx, policy, realm, keycloakPolicy); err != nil {
return nil, err
}
default:
return nil, fmt.Errorf("unsupported policy type %s", policy.Type)
}
return keycloakPolicy, nil
}