package api import ( "context" authz_repo "github.com/caos/zitadel/internal/authz/repository/eventsourcing" "github.com/caos/zitadel/internal/config/systemdefaults" "github.com/caos/oidc/pkg/op" auth_util "github.com/caos/zitadel/internal/api/auth" grpc_util "github.com/caos/zitadel/internal/api/grpc" "github.com/caos/zitadel/internal/api/grpc/server" "github.com/caos/zitadel/internal/auth/repository" "github.com/caos/zitadel/pkg/auth/api/grpc" "github.com/caos/zitadel/pkg/auth/api/oidc" ) type Config struct { GRPC grpc_util.Config OIDC oidc.OPHandlerConfig } func Start(ctx context.Context, conf Config, authZRepo *authz_repo.EsRepository, authZ auth_util.Config, defaults systemdefaults.SystemDefaults, authRepo repository.Repository) { grpcServer := grpc.StartServer(conf.GRPC.ToServerConfig(), authZRepo, authZ, authRepo) grpcGateway := grpc.StartGateway(conf.GRPC.ToGatewayConfig()) oidcHandler := oidc.NewProvider(ctx, conf.OIDC, authRepo) server.StartServer(ctx, grpcServer, defaults) server.StartGateway(ctx, grpcGateway) op.Start(ctx, oidcHandler) }