From aa89416bcab33bc0991ccbbd046c79d8d1eefc8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Tue, 1 Sep 2015 12:35:06 +0200 Subject: [PATCH] fix(invite): fixes to org invite stuff, #2630 --- pkg/api/org_invite.go | 9 ++-- pkg/api/signup.go | 3 ++ pkg/models/user.go | 1 + pkg/services/notifications/notifications.go | 2 +- pkg/services/sqlstore/user.go | 41 +++++++++++-------- .../features/templating/partials/editor.html | 2 +- 6 files changed, 35 insertions(+), 23 deletions(-) diff --git a/pkg/api/org_invite.go b/pkg/api/org_invite.go index b7d8d213853..8d916677ed2 100644 --- a/pkg/api/org_invite.go +++ b/pkg/api/org_invite.go @@ -154,10 +154,11 @@ func CompleteInvite(c *middleware.Context, completeInvite dtos.CompleteInviteFor } cmd := m.CreateUserCommand{ - Email: completeInvite.Email, - Name: completeInvite.Name, - Login: completeInvite.Username, - Password: completeInvite.Password, + Email: completeInvite.Email, + Name: completeInvite.Name, + Login: completeInvite.Username, + Password: completeInvite.Password, + SkipOrgSetup: true, } if err := bus.Dispatch(&cmd); err != nil { diff --git a/pkg/api/signup.go b/pkg/api/signup.go index fa450b93df2..767b9801154 100644 --- a/pkg/api/signup.go +++ b/pkg/api/signup.go @@ -65,6 +65,7 @@ func SignUpStep2(c *middleware.Context, form dtos.SignUpStep2Form) Response { OrgName: form.OrgName, } + // verify email if setting.VerifyEmailEnabled { if ok, rsp := verifyUserSignUpEmail(form.Email, form.Code); !ok { return rsp @@ -72,11 +73,13 @@ func SignUpStep2(c *middleware.Context, form dtos.SignUpStep2Form) Response { createUserCmd.EmailVerified = true } + // check if user exists existing := m.GetUserByLoginQuery{LoginOrEmail: form.Email} if err := bus.Dispatch(&existing); err == nil { return ApiError(401, "User with same email address already exists", nil) } + // dispatch create command if err := bus.Dispatch(&createUserCmd); err != nil { return ApiError(500, "Failed to create user", err) } diff --git a/pkg/models/user.go b/pkg/models/user.go index 30ab34db9a6..64067d59654 100644 --- a/pkg/models/user.go +++ b/pkg/models/user.go @@ -52,6 +52,7 @@ type CreateUserCommand struct { Password string EmailVerified bool IsAdmin bool + SkipOrgSetup bool Result User } diff --git a/pkg/services/notifications/notifications.go b/pkg/services/notifications/notifications.go index 576fe828331..5857ee5247d 100644 --- a/pkg/services/notifications/notifications.go +++ b/pkg/services/notifications/notifications.go @@ -153,7 +153,7 @@ func signUpCompletedHandler(evt *events.SignUpCompleted) error { return sendEmailCommandHandler(&m.SendEmailCommand{ To: []string{evt.Email}, - Template: tmplSignUpStarted, + Template: tmplWelcomeOnSignUp, Data: map[string]interface{}{ "Name": evt.Name, }, diff --git a/pkg/services/sqlstore/user.go b/pkg/services/sqlstore/user.go index b26000673d6..6c6f581dcc4 100644 --- a/pkg/services/sqlstore/user.go +++ b/pkg/services/sqlstore/user.go @@ -30,6 +30,10 @@ func init() { } func getOrgIdForNewUser(cmd *m.CreateUserCommand, sess *session) (int64, error) { + if cmd.SkipOrgSetup { + return -1, nil + } + var org m.Org if setting.AutoAssignOrg { @@ -103,23 +107,6 @@ func CreateUser(cmd *m.CreateUserCommand) error { return err } - // create org user link - orgUser := m.OrgUser{ - OrgId: orgId, - UserId: user.Id, - Role: m.ROLE_ADMIN, - Created: time.Now(), - Updated: time.Now(), - } - - if setting.AutoAssignOrg && !user.IsAdmin { - orgUser.Role = m.RoleType(setting.AutoAssignOrgRole) - } - - if _, err = sess.Insert(&orgUser); err != nil { - return err - } - sess.publishAfterCommit(&events.UserCreated{ Timestamp: user.Created, Id: user.Id, @@ -129,6 +116,26 @@ func CreateUser(cmd *m.CreateUserCommand) error { }) cmd.Result = user + + // create org user link + if !cmd.SkipOrgSetup { + orgUser := m.OrgUser{ + OrgId: orgId, + UserId: user.Id, + Role: m.ROLE_ADMIN, + Created: time.Now(), + Updated: time.Now(), + } + + if setting.AutoAssignOrg && !user.IsAdmin { + orgUser.Role = m.RoleType(setting.AutoAssignOrgRole) + } + + if _, err = sess.Insert(&orgUser); err != nil { + return err + } + } + return nil }) } diff --git a/public/app/features/templating/partials/editor.html b/public/app/features/templating/partials/editor.html index ed93e5e111e..a76c83580d5 100644 --- a/public/app/features/templating/partials/editor.html +++ b/public/app/features/templating/partials/editor.html @@ -200,7 +200,7 @@ Multi format
  • - +