package iam import ( "github.com/caos/zitadel/internal/eventstore/models" "github.com/caos/zitadel/internal/eventstore/v2" "github.com/caos/zitadel/internal/iam/model" "github.com/caos/zitadel/internal/v2/repository/iam" iam_repo "github.com/caos/zitadel/internal/v2/repository/iam" "github.com/caos/zitadel/internal/v2/repository/member" ) func readModelToIAM(readModel *iam_repo.ReadModel) *model.IAM { return &model.IAM{ ObjectRoot: readModelToObjectRoot(readModel.ReadModel), GlobalOrgID: readModel.GlobalOrgID, IAMProjectID: readModel.ProjectID, SetUpDone: model.Step(readModel.SetUpDone), SetUpStarted: model.Step(readModel.SetUpStarted), Members: readModelToMembers(&readModel.Members), DefaultLabelPolicy: readModelToLabelPolicy(&readModel.DefaultLabelPolicy), DefaultLoginPolicy: readModelToLoginPolicy(&readModel.DefaultLoginPolicy), DefaultOrgIAMPolicy: readModelToOrgIAMPolicy(&readModel.DefaultOrgIAMPolicy), DefaultPasswordAgePolicy: readModelToPasswordAgePolicy(&readModel.DefaultPasswordAgePolicy), DefaultPasswordComplexityPolicy: readModelToPasswordComplexityPolicy(&readModel.DefaultPasswordComplexityPolicy), DefaultPasswordLockoutPolicy: readModelToPasswordLockoutPolicy(&readModel.DefaultPasswordLockoutPolicy), // TODO: IDPs: []*model.IDPConfig, } } func readModelToMembers(readModel *iam_repo.MembersReadModel) []*model.IAMMember { members := make([]*model.IAMMember, len(readModel.Members)) for i, member := range readModel.Members { members[i] = &model.IAMMember{ ObjectRoot: readModelToObjectRoot(member.ReadModel), Roles: member.Roles, UserID: member.UserID, } } return members } func readModelToLabelPolicy(readModel *iam.LabelPolicyReadModel) *model.LabelPolicy { return &model.LabelPolicy{ ObjectRoot: readModelToObjectRoot(readModel.ReadModel), PrimaryColor: readModel.PrimaryColor, SecondaryColor: readModel.SecondaryColor, Default: true, //TODO: State: int32, } } func readModelToLoginPolicy(readModel *iam.LoginPolicyReadModel) *model.LoginPolicy { return &model.LoginPolicy{ ObjectRoot: readModelToObjectRoot(readModel.ReadModel), AllowExternalIdp: readModel.AllowExternalIDP, AllowRegister: readModel.AllowRegister, AllowUsernamePassword: readModel.AllowUserNamePassword, Default: true, //TODO: IDPProviders: []*model.IDPProvider, //TODO: State: int32, } } func readModelToOrgIAMPolicy(readModel *iam.OrgIAMPolicyReadModel) *model.OrgIAMPolicy { return &model.OrgIAMPolicy{ ObjectRoot: readModelToObjectRoot(readModel.ReadModel), UserLoginMustBeDomain: readModel.UserLoginMustBeDomain, Default: true, //TODO: State: int32, } } func readModelToPasswordAgePolicy(readModel *iam.PasswordAgePolicyReadModel) *model.PasswordAgePolicy { return &model.PasswordAgePolicy{ ObjectRoot: readModelToObjectRoot(readModel.ReadModel), ExpireWarnDays: uint64(readModel.ExpireWarnDays), MaxAgeDays: uint64(readModel.MaxAgeDays), //TODO: State: int32, } } func readModelToPasswordComplexityPolicy(readModel *iam.PasswordComplexityPolicyReadModel) *model.PasswordComplexityPolicy { return &model.PasswordComplexityPolicy{ ObjectRoot: readModelToObjectRoot(readModel.ReadModel), HasLowercase: readModel.HasLowercase, HasNumber: readModel.HasNumber, HasSymbol: readModel.HasSymbol, HasUppercase: readModel.HasUpperCase, MinLength: uint64(readModel.MinLength), //TODO: State: int32, } } func readModelToPasswordLockoutPolicy(readModel *iam.PasswordLockoutPolicyReadModel) *model.PasswordLockoutPolicy { return &model.PasswordLockoutPolicy{ ObjectRoot: readModelToObjectRoot(readModel.ReadModel), MaxAttempts: uint64(readModel.MaxAttempts), ShowLockOutFailures: readModel.ShowLockOutFailures, //TODO: State: int32, } } func readModelToObjectRoot(readModel eventstore.ReadModel) models.ObjectRoot { return models.ObjectRoot{ AggregateID: readModel.AggregateID, ChangeDate: readModel.ChangeDate, CreationDate: readModel.CreationDate, ResourceOwner: readModel.ResourceOwner, Sequence: readModel.ProcessedSequence, } } func readModelToMember(readModel *member.ReadModel) *model.IAMMember { return &model.IAMMember{ ObjectRoot: readModelToObjectRoot(readModel.ReadModel), Roles: readModel.Roles, UserID: readModel.UserID, } }