package command import ( "context" caos_errs "github.com/caos/zitadel/internal/errors" iam_model "github.com/caos/zitadel/internal/iam/model" "github.com/caos/zitadel/internal/v2/domain" iam_repo "github.com/caos/zitadel/internal/v2/repository/iam" ) type Step1 struct { GlobalOrg string IAMProject string DefaultLoginPolicy LoginPolicy //*iam_model.LoginPolicy Orgs []Org Owners []string //setup *Setup //createdUsers map[string]*usr_model.User //createdOrgs map[string]*org_model.Org //createdProjects map[string]*proj_model.Project //pwComplexityPolicy *iam_model.PasswordComplexityPolicyView } type LoginPolicy struct { AllowRegister bool AllowUsernamePassword bool AllowExternalIdp bool } type User struct { FirstName string LastName string UserName string Email string Password string } type Org struct { Name string Domain string OrgIamPolicy bool Users []User Owners []string Projects []Project } type Project struct { Name string Users []User Members []string OIDCApps []OIDCApp } type OIDCApp struct { Name string RedirectUris []string ResponseTypes []string GrantTypes []string ApplicationType string AuthMethodType string PostLogoutRedirectUris []string DevMode bool } func (r *CommandSide) SetupStep1(ctx context.Context, iamID string, step1 Step1) error { iam, err := r.iamByID(ctx, iamID) if err != nil && !caos_errs.IsNotFound(err) { return err } //create default login policy iamAgg, err := r.addDefaultLoginPolicy(ctx, NewIAMLoginPolicyWriteModel(iam.AggregateID), &iam_model.LoginPolicy{ AllowUsernamePassword: step1.DefaultLoginPolicy.AllowUsernamePassword, AllowRegister: step1.DefaultLoginPolicy.AllowRegister, AllowExternalIdp: step1.DefaultLoginPolicy.AllowExternalIdp, }) if err != nil { return err } //create orgs //create projects //create applications //set iam owners //set global org //set iam project id /*aggregates: iam: default login policy iam owner org: default caos zitadel */ iamAgg.PushEvents(iam_repo.NewSetupStepDoneEvent(ctx, domain.Step1)) _, err = r.eventstore.PushAggregates(ctx, iamAgg) if err != nil { return caos_errs.ThrowPreconditionFailed(nil, "EVENT-Gr2hh", "Setup Step1 failed") } return nil }