mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-03 05:12:11 +00:00
feat: multiple domains (#188)
* check uniqueness on create and register user * change user email, reserve release unique email * usergrant unique aggregate * usergrant uniqueness * validate UserGrant * fix tests * domain is set on username in all orgs * domain in admin * org domain sql * zitadel domain org name * org domains * org iam policy * default org iam policy * SETUP * load login names * login by login name * login name * fix: merge master * fix: merge master * Update internal/user/repository/eventsourcing/user.go Co-authored-by: Livio Amstutz <livio.a@gmail.com> * fix: fix unique domains * fix: rename env variable Co-authored-by: adlerhurst <silvan.reusser@gmail.com> Co-authored-by: Livio Amstutz <livio.a@gmail.com>
This commit is contained in:
96
internal/org/repository/eventsourcing/model/member.go
Normal file
96
internal/org/repository/eventsourcing/model/member.go
Normal file
@@ -0,0 +1,96 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"reflect"
|
||||
|
||||
"github.com/caos/zitadel/internal/errors"
|
||||
es_models "github.com/caos/zitadel/internal/eventstore/models"
|
||||
"github.com/caos/zitadel/internal/org/model"
|
||||
)
|
||||
|
||||
type OrgMember struct {
|
||||
es_models.ObjectRoot `json:"-"`
|
||||
|
||||
UserID string `json:"userId,omitempty"`
|
||||
Roles []string `json:"roles,omitempty"`
|
||||
}
|
||||
|
||||
func (m *OrgMember) AppendEvents(events ...*es_models.Event) error {
|
||||
for _, event := range events {
|
||||
err := m.AppendEvent(event)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *OrgMember) AppendEvent(event *es_models.Event) error {
|
||||
m.ObjectRoot.AppendEvent(event)
|
||||
|
||||
return m.SetData(event)
|
||||
}
|
||||
|
||||
func (m *OrgMember) SetData(event *es_models.Event) error {
|
||||
err := json.Unmarshal(event.Data, m)
|
||||
if err != nil {
|
||||
return errors.ThrowInternal(err, "EVENT-Hz7Mb", "unable to unmarshal data")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *OrgMember) Changes(updatedMember *OrgMember) map[string]interface{} {
|
||||
changes := make(map[string]interface{}, 2)
|
||||
|
||||
if !reflect.DeepEqual(m.Roles, updatedMember.Roles) {
|
||||
changes["roles"] = updatedMember.Roles
|
||||
changes["userId"] = m.UserID
|
||||
}
|
||||
|
||||
return changes
|
||||
}
|
||||
|
||||
func OrgMemberFromEvent(member *OrgMember, event *es_models.Event) (*OrgMember, error) {
|
||||
if member == nil {
|
||||
member = new(OrgMember)
|
||||
}
|
||||
member.ObjectRoot.AppendEvent(event)
|
||||
err := json.Unmarshal(event.Data, member)
|
||||
if err != nil {
|
||||
return nil, errors.ThrowInternal(err, "EVENT-D4qxo", "invalid event data")
|
||||
}
|
||||
return member, nil
|
||||
}
|
||||
|
||||
func OrgMembersFromModel(members []*model.OrgMember) []*OrgMember {
|
||||
convertedMembers := make([]*OrgMember, len(members))
|
||||
for i, m := range members {
|
||||
convertedMembers[i] = OrgMemberFromModel(m)
|
||||
}
|
||||
return convertedMembers
|
||||
}
|
||||
|
||||
func OrgMemberFromModel(member *model.OrgMember) *OrgMember {
|
||||
return &OrgMember{
|
||||
ObjectRoot: member.ObjectRoot,
|
||||
UserID: member.UserID,
|
||||
Roles: member.Roles,
|
||||
}
|
||||
}
|
||||
|
||||
func OrgMembersToModel(members []*OrgMember) []*model.OrgMember {
|
||||
convertedMembers := make([]*model.OrgMember, len(members))
|
||||
for i, m := range members {
|
||||
convertedMembers[i] = OrgMemberToModel(m)
|
||||
}
|
||||
return convertedMembers
|
||||
}
|
||||
|
||||
func OrgMemberToModel(member *OrgMember) *model.OrgMember {
|
||||
return &model.OrgMember{
|
||||
ObjectRoot: member.ObjectRoot,
|
||||
UserID: member.UserID,
|
||||
Roles: member.Roles,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user