fix: User checks (#139)

* check uniqueness on create and register user

* change user email, reserve release unique email

* usergrant unique aggregate

* usergrant uniqueness

* validate UserGrant

* fix tests
This commit is contained in:
Fabi
2020-05-28 06:49:22 +02:00
committed by GitHub
parent 71626f25f3
commit d447f68d78
19 changed files with 453 additions and 129 deletions

View File

@@ -20,6 +20,7 @@ type ProjectState int32
const (
PROJECTSTATE_ACTIVE ProjectState = iota
PROJECTSTATE_INACTIVE
PROJECTSTATE_REMOVED
)
func NewProject(id string) *Project {

View File

@@ -88,6 +88,8 @@ func (p *Project) AppendEvent(event *es_models.Event) error {
return p.appendDeactivatedEvent()
case ProjectReactivated:
return p.appendReactivatedEvent()
case ProjectRemoved:
return p.appendRemovedEvent()
case ProjectMemberAdded:
return p.appendAddMemberEvent(event)
case ProjectMemberChanged:
@@ -150,6 +152,11 @@ func (p *Project) appendReactivatedEvent() error {
return nil
}
func (p *Project) appendRemovedEvent() error {
p.State = int32(model.PROJECTSTATE_REMOVED)
return nil
}
func (p *Project) setData(event *es_models.Event) error {
if err := json.Unmarshal(event.Data, p); err != nil {
logging.Log("EVEN-lo9sr").WithError(err).Error("could not unmarshal event data")

View File

@@ -31,6 +31,15 @@ func GetProjectGrant(grants []*ProjectGrant, id string) (int, *ProjectGrant) {
return -1, nil
}
func GetProjectGrantByResourceOwner(grants []*ProjectGrant, resourceOwner string) (int, *ProjectGrant) {
for i, g := range grants {
if g.ResourceOwner == resourceOwner {
return i, g
}
}
return -1, nil
}
func (g *ProjectGrant) Changes(changed *ProjectGrant) map[string]interface{} {
changes := make(map[string]interface{}, 1)
changes["grantId"] = g.GrantID

View File

@@ -9,6 +9,7 @@ const (
ProjectChanged models.EventType = "project.changed"
ProjectDeactivated models.EventType = "project.deactivated"
ProjectReactivated models.EventType = "project.reactivated"
ProjectRemoved models.EventType = "project.removed"
ProjectMemberAdded models.EventType = "project.member.added"
ProjectMemberChanged models.EventType = "project.member.changed"