mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-12 11:47:34 +00:00
domain is defined
This commit is contained in:
@@ -1,5 +1,61 @@
|
||||
package domain
|
||||
|
||||
import "github.com/zitadel/zitadel/backend/v3/storage/database"
|
||||
|
||||
type DomainVerificationType string
|
||||
|
||||
const (
|
||||
DomainVerificationTypeDNS DomainVerificationType = "dns"
|
||||
DomainVerificationTypeHTTP DomainVerificationType = "http"
|
||||
)
|
||||
|
||||
type domainColumns interface {
|
||||
// InstanceIDColumn returns the column for the instance id field.
|
||||
InstanceIDColumn() database.Column
|
||||
// DomainColumn returns the column for the domain field.
|
||||
DomainColumn() database.Column
|
||||
// IsVerifiedColumn returns the column for the is verified field.
|
||||
IsVerifiedColumn() database.Column
|
||||
// IsPrimaryColumn returns the column for the is primary field.
|
||||
IsPrimaryColumn() database.Column
|
||||
// VerificationTypeColumn returns the column for the verification type field.
|
||||
VerificationTypeColumn() database.Column
|
||||
// CreatedAtColumn returns the column for the created at field.
|
||||
CreatedAtColumn() database.Column
|
||||
// UpdatedAtColumn returns the column for the updated at field.
|
||||
UpdatedAtColumn() database.Column
|
||||
}
|
||||
|
||||
type domainConditions interface {
|
||||
// InstanceIDCondition returns a filter on the instance id field.
|
||||
InstanceIDCondition(instanceID string) database.Condition
|
||||
// DomainCondition returns a filter on the domain field.
|
||||
DomainCondition(op database.TextOperation, domain string) database.Condition
|
||||
// IsPrimaryCondition returns a filter on the is primary field.
|
||||
IsPrimaryCondition(isPrimary bool) database.Condition
|
||||
// IsVerifiedCondition returns a filter on the is verified field.
|
||||
IsVerifiedCondition(isVerified bool) database.Condition
|
||||
}
|
||||
|
||||
type domainChanges interface {
|
||||
// SetVerified sets the is verified column to true.
|
||||
SetVerified() database.Change
|
||||
// SetPrimary sets a domain as primary based on the condition.
|
||||
// All other domains will be set to non-primary.
|
||||
//
|
||||
// An error is returned if:
|
||||
// - The condition identifies multiple domains.
|
||||
// - The condition does not identify any domain.
|
||||
//
|
||||
// This is a no-op if:
|
||||
// - The domain is already primary.
|
||||
// - No domain matches the condition.
|
||||
SetPrimary() database.Change
|
||||
// SetVerificationType sets the verification type column.
|
||||
// If the domain is already verified, this is a no-op.
|
||||
SetVerificationType(verificationType DomainVerificationType) database.Change
|
||||
}
|
||||
|
||||
// import (
|
||||
// "math/rand/v2"
|
||||
// "strconv"
|
||||
|
@@ -92,6 +92,8 @@ type InstanceRepository interface {
|
||||
Create(ctx context.Context, instance *Instance) error
|
||||
Update(ctx context.Context, id string, changes ...database.Change) (int64, error)
|
||||
Delete(ctx context.Context, id string) (int64, error)
|
||||
|
||||
Domains() InstanceDomainRepository
|
||||
}
|
||||
|
||||
type CreateInstance struct {
|
||||
|
53
backend/v3/domain/instance_domain.go
Normal file
53
backend/v3/domain/instance_domain.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package domain
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/zitadel/zitadel/backend/v3/storage/database"
|
||||
)
|
||||
|
||||
type InstanceDomain struct {
|
||||
InstanceID string `json:"instanceId,omitempty" db:"instance_id"`
|
||||
Domain string `json:"domain,omitempty" db:"domain"`
|
||||
IsVerified bool `json:"isVerified,omitempty" db:"is_verified"`
|
||||
IsPrimary bool `json:"isPrimary,omitempty" db:"is_primary"`
|
||||
VerificationType DomainVerificationType `json:"verificationType,omitempty" db:"verification_type"`
|
||||
|
||||
CreatedAt string `json:"createdAt,omitempty" db:"created_at"`
|
||||
UpdatedAt string `json:"updatedAt,omitempty" db:"updated_at"`
|
||||
}
|
||||
|
||||
type AddInstanceDomain struct {
|
||||
InstanceID string `json:"instanceId,omitempty" db:"instance_id"`
|
||||
Domain string `json:"domain,omitempty" db:"domain"`
|
||||
IsVerified bool `json:"isVerified,omitempty" db:"is_verified"`
|
||||
IsPrimary bool `json:"isPrimary,omitempty" db:"is_primary"`
|
||||
VerificationType DomainVerificationType `json:"verificationType,omitempty" db:"verification_type"`
|
||||
}
|
||||
|
||||
type instanceDomainColumns interface {
|
||||
domainColumns
|
||||
// IsGeneratedColumn returns the column for the is generated field.
|
||||
IsGeneratedColumn() database.Column
|
||||
}
|
||||
|
||||
type instanceDomainConditions interface {
|
||||
domainConditions
|
||||
}
|
||||
|
||||
type instanceDomainChanges interface {
|
||||
domainChanges
|
||||
}
|
||||
|
||||
type InstanceDomainRepository interface {
|
||||
instanceDomainColumns
|
||||
instanceDomainConditions
|
||||
instanceDomainChanges
|
||||
|
||||
// Add adds a new domain to the instance.
|
||||
Add(ctx context.Context, domain *AddInstanceDomain) error
|
||||
// Update updates an existing domain in the instance.
|
||||
Update(ctx context.Context, condition database.Condition, changes ...database.Change) error
|
||||
// Remove removes a domain from the instance.
|
||||
Remove(ctx context.Context, condition database.Condition) error
|
||||
}
|
@@ -20,14 +20,14 @@ type Organization struct {
|
||||
Name string `json:"name,omitempty" db:"name"`
|
||||
InstanceID string `json:"instanceId,omitempty" db:"instance_id"`
|
||||
State string `json:"state,omitempty" db:"state"`
|
||||
CreatedAt time.Time `json:"createdAt,omitempty" db:"created_at"`
|
||||
UpdatedAt time.Time `json:"updatedAt,omitempty" db:"updated_at"`
|
||||
CreatedAt time.Time `json:"createdAt,omitzero" db:"created_at"`
|
||||
UpdatedAt time.Time `json:"updatedAt,omitzero" db:"updated_at"`
|
||||
DeletedAt *time.Time `json:"deletedAt,omitempty" db:"deleted_at"`
|
||||
}
|
||||
|
||||
// OrgIdentifierCondition is used to help specify a single Organization,
|
||||
// it will either be used as the organization ID or organization name,
|
||||
// as organizations can be identified either using (instnaceID + ID) OR (instanceID + name)
|
||||
// as organizations can be identified either using (instanceID + ID) OR (instanceID + name)
|
||||
type OrgIdentifierCondition interface {
|
||||
database.Condition
|
||||
}
|
||||
@@ -82,6 +82,9 @@ type OrganizationRepository interface {
|
||||
Create(ctx context.Context, instance *Organization) error
|
||||
Update(ctx context.Context, id OrgIdentifierCondition, instance_id string, changes ...database.Change) (int64, error)
|
||||
Delete(ctx context.Context, id OrgIdentifierCondition, instance_id string) (int64, error)
|
||||
|
||||
// Domains returns the domain sub repository for the organization.
|
||||
Domains() OrganizationDomainRepository
|
||||
}
|
||||
|
||||
type CreateOrganization struct {
|
||||
|
57
backend/v3/domain/organization_domain.go
Normal file
57
backend/v3/domain/organization_domain.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package domain
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/zitadel/zitadel/backend/v3/storage/database"
|
||||
)
|
||||
|
||||
type OrganizationDomain struct {
|
||||
InstanceID string `json:"instanceId,omitempty" db:"instance_id"`
|
||||
OrgID string `json:"orgId,omitempty" db:"org_id"`
|
||||
Domain string `json:"domain,omitempty" db:"domain"`
|
||||
IsVerified bool `json:"isVerified,omitempty" db:"is_verified"`
|
||||
IsPrimary bool `json:"isPrimary,omitempty" db:"is_primary"`
|
||||
VerificationType DomainVerificationType `json:"verificationType,omitempty" db:"verification_type"`
|
||||
|
||||
CreatedAt string `json:"createdAt,omitempty" db:"created_at"`
|
||||
UpdatedAt string `json:"updatedAt,omitempty" db:"updated_at"`
|
||||
}
|
||||
|
||||
type AddOrganizationDomain struct {
|
||||
InstanceID string `json:"instanceId,omitempty" db:"instance_id"`
|
||||
OrgID string `json:"orgId,omitempty" db:"org_id"`
|
||||
Domain string `json:"domain,omitempty" db:"domain"`
|
||||
IsVerified bool `json:"isVerified,omitempty" db:"is_verified"`
|
||||
IsPrimary bool `json:"isPrimary,omitempty" db:"is_primary"`
|
||||
VerificationType DomainVerificationType `json:"verificationType,omitempty" db:"verification_type"`
|
||||
}
|
||||
|
||||
type organizationDomainColumns interface {
|
||||
domainColumns
|
||||
// OrgIDColumn returns the column for the org id field.
|
||||
OrgIDColumn() database.Column
|
||||
}
|
||||
|
||||
type organizationDomainConditions interface {
|
||||
domainConditions
|
||||
// OrgIDCondition returns a filter on the org id field.
|
||||
OrgIDCondition(orgID string) database.Condition
|
||||
}
|
||||
|
||||
type organizationDomainChanges interface {
|
||||
domainChanges
|
||||
}
|
||||
|
||||
type OrganizationDomainRepository interface {
|
||||
organizationDomainColumns
|
||||
organizationDomainConditions
|
||||
organizationDomainChanges
|
||||
|
||||
// Add adds a new domain to the organization.
|
||||
Add(ctx context.Context, domain *AddOrganizationDomain) error
|
||||
// Update updates an existing domain in the organization.
|
||||
Update(ctx context.Context, condition database.Condition, changes ...database.Change) error
|
||||
// Remove removes a domain from the organization.
|
||||
Remove(ctx context.Context, condition database.Condition) error
|
||||
}
|
Reference in New Issue
Block a user