feat(invite): inital pass on sending new user invite email, #2353

This commit is contained in:
Torkel Ödegaard
2015-07-18 17:39:12 +02:00
parent e92f2ecea1
commit 6088f83408
5 changed files with 902 additions and 4 deletions
+23
View File
@@ -5,6 +5,7 @@ import (
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/middleware"
m "github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/util"
)
@@ -22,6 +23,9 @@ func AddOrgInvite(c *middleware.Context, inviteDto dtos.AddInviteForm) Response
if !inviteDto.Role.IsValid() {
return ApiError(400, "Invalid role specified", nil)
}
if !util.IsEmail(inviteDto.Email) {
return ApiError(400, "Invalid email specified", nil)
}
// first try get existing user
userQuery := m.GetUserByLoginQuery{LoginOrEmail: inviteDto.Email}
@@ -52,5 +56,24 @@ func AddOrgInvite(c *middleware.Context, inviteDto dtos.AddInviteForm) Response
return ApiError(500, "Failed to save invite to database", err)
}
// send invite email
if !inviteDto.SkipEmails {
emailCmd := m.SendEmailCommand{
To: []string{inviteDto.Email},
Template: "new_user_invite.html",
Data: map[string]interface{}{
"NameOrEmail": util.StringsFallback2(cmd.Name, cmd.Email),
"OrgName": c.OrgName,
"Email": c.Email,
"LinkUrl": setting.ToAbsUrl("signup/invited/" + cmd.Code),
"InvitedBy": util.StringsFallback2(c.Name, c.Email),
},
}
if err := bus.Dispatch(&emailCmd); err != nil {
return ApiError(500, "Failed to send email invite", err)
}
}
return ApiSuccess("ok, done!")
}