mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 21:27:42 +00:00
feat: register org process (#558)
* feat: register new organisation * feat: create org request in management * fix: tests * Update internal/ui/login/static/i18n/en.yaml Co-authored-by: Livio Amstutz <livio.a@gmail.com> * Update internal/ui/login/static/i18n/de.yaml Co-authored-by: Livio Amstutz <livio.a@gmail.com> * Update internal/ui/login/static/templates/register_org.html Co-authored-by: Livio Amstutz <livio.a@gmail.com> * Update internal/ui/login/handler/register_org_handler.go Co-authored-by: Livio Amstutz <livio.a@gmail.com> * Update internal/ui/login/handler/register_org_handler.go Co-authored-by: Livio Amstutz <livio.a@gmail.com> * fix: remove autocomplete * fix: regenerate proto Co-authored-by: Livio Amstutz <livio.a@gmail.com>
This commit is contained in:
@@ -175,15 +175,15 @@ func (es *UserEventstore) PrepareRegisterUser(ctx context.Context, user *usr_mod
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
err = user.GenerateEmailCodeIfNeeded(es.EmailVerificationCode)
|
||||
err = user.GenerateInitCodeIfNeeded(es.InitializeUserCode)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
repoUser := model.UserFromModel(user)
|
||||
repoEmailCode := model.EmailCodeFromModel(user.EmailCode)
|
||||
repoInitCode := model.InitCodeFromModel(user.InitCode)
|
||||
|
||||
aggregates, err := UserRegisterAggregate(ctx, es.AggregateCreator(), repoUser, resourceOwner, repoEmailCode, orgIamPolicy.UserLoginMustBeDomain)
|
||||
aggregates, err := UserRegisterAggregate(ctx, es.AggregateCreator(), repoUser, resourceOwner, repoInitCode, orgIamPolicy.UserLoginMustBeDomain)
|
||||
return repoUser, aggregates, err
|
||||
}
|
||||
|
||||
|
@@ -135,6 +135,18 @@ func GetMockManipulateUserWithInitCodeGen(ctrl *gomock.Controller, user model.Us
|
||||
return GetMockedEventstoreWithPw(ctrl, mockEs, true, false, false, false)
|
||||
}
|
||||
|
||||
func GetMockManipulateUserWithPasswordInitCodeGen(ctrl *gomock.Controller, user model.User) *UserEventstore {
|
||||
data, _ := json.Marshal(user)
|
||||
events := []*es_models.Event{
|
||||
&es_models.Event{AggregateID: "AggregateID", Sequence: 1, Type: model.UserAdded, Data: data},
|
||||
}
|
||||
mockEs := mock.NewMockEventstore(ctrl)
|
||||
mockEs.EXPECT().FilterEvents(gomock.Any(), gomock.Any()).Return(events, nil)
|
||||
mockEs.EXPECT().AggregateCreator().Return(es_models.NewAggregateCreator("TEST"))
|
||||
mockEs.EXPECT().PushAggregates(gomock.Any(), gomock.Any()).Return(nil)
|
||||
return GetMockedEventstoreWithPw(ctrl, mockEs, true, false, false, true)
|
||||
}
|
||||
|
||||
func GetMockManipulateUserWithPasswordAndEmailCodeGen(ctrl *gomock.Controller, user model.User) *UserEventstore {
|
||||
data, _ := json.Marshal(user)
|
||||
events := []*es_models.Event{
|
||||
|
@@ -329,7 +329,7 @@ func TestRegisterUser(t *testing.T) {
|
||||
{
|
||||
name: "register user, ok",
|
||||
args: args{
|
||||
es: GetMockManipulateUserWithPasswordAndEmailCodeGen(ctrl, repo_model.User{Profile: &repo_model.Profile{UserName: "UserName", FirstName: "FirstName", LastName: "LastName"}, Email: &repo_model.Email{EmailAddress: "EmailAddress"}}),
|
||||
es: GetMockManipulateUserWithPasswordInitCodeGen(ctrl, repo_model.User{Profile: &repo_model.Profile{UserName: "UserName", FirstName: "FirstName", LastName: "LastName"}, Email: &repo_model.Email{EmailAddress: "EmailAddress"}}),
|
||||
ctx: authz.NewMockContext("orgID", "userID"),
|
||||
user: &model.User{
|
||||
ObjectRoot: es_models.ObjectRoot{Sequence: 1},
|
||||
@@ -365,7 +365,7 @@ func TestRegisterUser(t *testing.T) {
|
||||
{
|
||||
name: "email as username",
|
||||
args: args{
|
||||
es: GetMockManipulateUserWithPasswordAndEmailCodeGen(ctrl, repo_model.User{Profile: &repo_model.Profile{UserName: "EmailAddress", FirstName: "FirstName", LastName: "LastName"}, Email: &repo_model.Email{EmailAddress: "EmailAddress"}}),
|
||||
es: GetMockManipulateUserWithPasswordInitCodeGen(ctrl, repo_model.User{Profile: &repo_model.Profile{UserName: "EmailAddress", FirstName: "FirstName", LastName: "LastName"}, Email: &repo_model.Email{EmailAddress: "EmailAddress"}}),
|
||||
ctx: authz.NewMockContext("orgID", "userID"),
|
||||
user: &model.User{ObjectRoot: es_models.ObjectRoot{Sequence: 1},
|
||||
Profile: &model.Profile{
|
||||
@@ -875,7 +875,7 @@ func TestCreateInitCode(t *testing.T) {
|
||||
{
|
||||
name: "create init code",
|
||||
args: args{
|
||||
es: GetMockManipulateUserWithInitCodeGen(ctrl, repo_model.User{ObjectRoot: es_models.ObjectRoot{AggregateID: "AggregateID", Sequence: 1}}),
|
||||
es: GetMockManipulateUserWithPasswordInitCodeGen(ctrl, repo_model.User{ObjectRoot: es_models.ObjectRoot{AggregateID: "AggregateID", Sequence: 1}}),
|
||||
ctx: authz.NewMockContext("orgID", "userID"),
|
||||
existing: &model.User{ObjectRoot: es_models.ObjectRoot{AggregateID: "AggregateID", Sequence: 1}},
|
||||
},
|
||||
|
@@ -118,9 +118,9 @@ func UserCreateAggregate(ctx context.Context, aggCreator *es_models.AggregateCre
|
||||
}, nil
|
||||
}
|
||||
|
||||
func UserRegisterAggregate(ctx context.Context, aggCreator *es_models.AggregateCreator, user *model.User, resourceOwner string, emailCode *model.EmailCode, userLoginMustBeDomain bool) ([]*es_models.Aggregate, error) {
|
||||
if user == nil || resourceOwner == "" || emailCode == nil {
|
||||
return nil, errors.ThrowPreconditionFailed(nil, "EVENT-duxk2", "user, resourceowner, emailcode should not be nothing")
|
||||
func UserRegisterAggregate(ctx context.Context, aggCreator *es_models.AggregateCreator, user *model.User, resourceOwner string, initCode *model.InitUserCode, userLoginMustBeDomain bool) ([]*es_models.Aggregate, error) {
|
||||
if user == nil || resourceOwner == "" || initCode == nil {
|
||||
return nil, errors.ThrowPreconditionFailed(nil, "EVENT-duxk2", "user, resourceowner, initcode should not be nothing")
|
||||
}
|
||||
|
||||
agg, err := UserAggregateOverwriteContext(ctx, aggCreator, user, resourceOwner, user.AggregateID)
|
||||
@@ -140,7 +140,7 @@ func UserRegisterAggregate(ctx context.Context, aggCreator *es_models.AggregateC
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
agg, err = agg.AppendEvent(model.UserEmailCodeAdded, emailCode)
|
||||
agg, err = agg.AppendEvent(model.InitializedUserCodeAdded, initCode)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -256,7 +256,7 @@ func TestUserRegisterAggregate(t *testing.T) {
|
||||
type args struct {
|
||||
ctx context.Context
|
||||
new *model.User
|
||||
emailCode *model.EmailCode
|
||||
initCode *model.InitUserCode
|
||||
resourceOwner string
|
||||
aggCreator *models.AggregateCreator
|
||||
}
|
||||
@@ -278,13 +278,13 @@ func TestUserRegisterAggregate(t *testing.T) {
|
||||
Profile: &model.Profile{UserName: "UserName"},
|
||||
Email: &model.Email{EmailAddress: "EmailAddress"},
|
||||
},
|
||||
emailCode: &model.EmailCode{},
|
||||
initCode: &model.InitUserCode{},
|
||||
resourceOwner: "newResourceowner",
|
||||
aggCreator: models.NewAggregateCreator("Test"),
|
||||
},
|
||||
res: res{
|
||||
eventLen: 2,
|
||||
eventTypes: []models.EventType{model.UserRegistered, model.UserEmailCodeAdded},
|
||||
eventTypes: []models.EventType{model.UserRegistered, model.InitializedUserCodeAdded},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -292,7 +292,7 @@ func TestUserRegisterAggregate(t *testing.T) {
|
||||
args: args{
|
||||
ctx: authz.NewMockContext("orgID", "userID"),
|
||||
new: nil,
|
||||
emailCode: &model.EmailCode{},
|
||||
initCode: &model.InitUserCode{},
|
||||
resourceOwner: "newResourceowner",
|
||||
aggCreator: models.NewAggregateCreator("Test"),
|
||||
},
|
||||
@@ -316,7 +316,7 @@ func TestUserRegisterAggregate(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "create with email code",
|
||||
name: "create with init code",
|
||||
args: args{
|
||||
ctx: authz.NewMockContext("orgID", "userID"),
|
||||
new: &model.User{ObjectRoot: models.ObjectRoot{AggregateID: "ID"},
|
||||
@@ -324,12 +324,12 @@ func TestUserRegisterAggregate(t *testing.T) {
|
||||
Email: &model.Email{EmailAddress: "EmailAddress"},
|
||||
},
|
||||
resourceOwner: "newResourceowner",
|
||||
emailCode: &model.EmailCode{},
|
||||
initCode: &model.InitUserCode{},
|
||||
aggCreator: models.NewAggregateCreator("Test"),
|
||||
},
|
||||
res: res{
|
||||
eventLen: 2,
|
||||
eventTypes: []models.EventType{model.UserRegistered, model.UserEmailCodeAdded},
|
||||
eventTypes: []models.EventType{model.UserRegistered, model.InitializedUserCodeAdded},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -340,7 +340,7 @@ func TestUserRegisterAggregate(t *testing.T) {
|
||||
Profile: &model.Profile{UserName: "UserName"},
|
||||
Email: &model.Email{EmailAddress: "EmailAddress"},
|
||||
},
|
||||
emailCode: &model.EmailCode{},
|
||||
initCode: &model.InitUserCode{},
|
||||
aggCreator: models.NewAggregateCreator("Test"),
|
||||
},
|
||||
res: res{
|
||||
@@ -350,7 +350,7 @@ func TestUserRegisterAggregate(t *testing.T) {
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
aggregates, err := UserRegisterAggregate(tt.args.ctx, tt.args.aggCreator, tt.args.new, tt.args.resourceOwner, tt.args.emailCode, false)
|
||||
aggregates, err := UserRegisterAggregate(tt.args.ctx, tt.args.aggCreator, tt.args.new, tt.args.resourceOwner, tt.args.initCode, false)
|
||||
|
||||
if tt.res.errFunc == nil && len(aggregates[0].Events) != tt.res.eventLen {
|
||||
t.Errorf("got wrong event len: expected: %v, actual: %v ", tt.res.eventLen, len(aggregates[0].Events))
|
||||
|
Reference in New Issue
Block a user