feat: add domain verification (#560)

* feat: add domain verification

* add checks

* add and fix tests

* fix go.mod

* regenerate proto
This commit is contained in:
Livio Amstutz
2020-08-06 15:03:03 +02:00
committed by GitHub
parent f80367b49a
commit 7015b226ef
26 changed files with 15815 additions and 14883 deletions

View File

@@ -2,6 +2,8 @@ package model
import (
"encoding/json"
"github.com/caos/zitadel/internal/crypto"
"github.com/caos/zitadel/internal/errors"
es_models "github.com/caos/zitadel/internal/eventstore/models"
"github.com/caos/zitadel/internal/org/model"
@@ -10,9 +12,11 @@ import (
type OrgDomain struct {
es_models.ObjectRoot `json:"-"`
Domain string `json:"domain"`
Verified bool `json:"-"`
Primary bool `json:"-"`
Domain string `json:"domain"`
Verified bool `json:"-"`
Primary bool `json:"-"`
ValidationType int32 `json:"validationType"`
ValidationCode *crypto.CryptoValue `json:"validationCode"`
}
func GetDomain(domains []*OrgDomain, domain string) (int, *OrgDomain) {
@@ -77,6 +81,21 @@ func (o *Org) appendPrimaryDomainEvent(event *es_models.Event) error {
return nil
}
func (o *Org) appendVerificationDomainEvent(event *es_models.Event) error {
domain := new(OrgDomain)
err := domain.SetData(event)
if err != nil {
return err
}
for _, d := range o.Domains {
if d.Domain == domain.Domain {
d.ValidationType = domain.ValidationType
d.ValidationCode = domain.ValidationCode
}
}
return nil
}
func (m *OrgDomain) SetData(event *es_models.Event) error {
err := json.Unmarshal(event.Data, m)
if err != nil {
@@ -95,10 +114,12 @@ func OrgDomainsFromModel(domains []*model.OrgDomain) []*OrgDomain {
func OrgDomainFromModel(domain *model.OrgDomain) *OrgDomain {
return &OrgDomain{
ObjectRoot: domain.ObjectRoot,
Domain: domain.Domain,
Verified: domain.Verified,
Primary: domain.Primary,
ObjectRoot: domain.ObjectRoot,
Domain: domain.Domain,
Verified: domain.Verified,
Primary: domain.Primary,
ValidationType: int32(domain.ValidationType),
ValidationCode: domain.ValidationCode,
}
}
@@ -112,9 +133,11 @@ func OrgDomainsToModel(domains []*OrgDomain) []*model.OrgDomain {
func OrgDomainToModel(domain *OrgDomain) *model.OrgDomain {
return &model.OrgDomain{
ObjectRoot: domain.ObjectRoot,
Domain: domain.Domain,
Verified: domain.Verified,
Primary: domain.Primary,
ObjectRoot: domain.ObjectRoot,
Domain: domain.Domain,
Primary: domain.Primary,
Verified: domain.Verified,
ValidationType: model.OrgDomainValidationType(domain.ValidationType),
ValidationCode: domain.ValidationCode,
}
}

View File

@@ -2,6 +2,7 @@ package model
import (
"encoding/json"
"github.com/caos/zitadel/internal/errors"
es_models "github.com/caos/zitadel/internal/eventstore/models"
org_model "github.com/caos/zitadel/internal/org/model"
@@ -112,6 +113,8 @@ func (o *Org) AppendEvent(event *es_models.Event) error {
o.removeMember(member.UserID)
case OrgDomainAdded:
o.appendAddDomainEvent(event)
case OrgDomainVerificationAdded:
o.appendVerificationDomainEvent(event)
case OrgDomainVerified:
o.appendVerifyDomainEvent(event)
case OrgDomainPrimarySet:

View File

@@ -7,15 +7,17 @@ const (
OrgDomainAggregate models.AggregateType = "org.domain"
OrgNameAggregate models.AggregateType = "org.name"
OrgAdded models.EventType = "org.added"
OrgChanged models.EventType = "org.changed"
OrgDeactivated models.EventType = "org.deactivated"
OrgReactivated models.EventType = "org.reactivated"
OrgRemoved models.EventType = "org.removed"
OrgDomainAdded models.EventType = "org.domain.added"
OrgDomainVerified models.EventType = "org.domain.verified"
OrgDomainRemoved models.EventType = "org.domain.removed"
OrgDomainPrimarySet models.EventType = "org.domain.primary.set"
OrgAdded models.EventType = "org.added"
OrgChanged models.EventType = "org.changed"
OrgDeactivated models.EventType = "org.deactivated"
OrgReactivated models.EventType = "org.reactivated"
OrgRemoved models.EventType = "org.removed"
OrgDomainAdded models.EventType = "org.domain.added"
OrgDomainVerificationAdded models.EventType = "org.domain.verification.added"
OrgDomainVerificationFailed models.EventType = "org.domain.verification.failed"
OrgDomainVerified models.EventType = "org.domain.verified"
OrgDomainRemoved models.EventType = "org.domain.removed"
OrgDomainPrimarySet models.EventType = "org.domain.primary.set"
OrgNameReserved models.EventType = "org.name.reserved"
OrgNameReleased models.EventType = "org.name.released"