2015-07-17 15:51:34 +08:00
|
|
|
package api
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/grafana/grafana/pkg/api/dtos"
|
|
|
|
"github.com/grafana/grafana/pkg/bus"
|
|
|
|
"github.com/grafana/grafana/pkg/middleware"
|
|
|
|
m "github.com/grafana/grafana/pkg/models"
|
|
|
|
"github.com/grafana/grafana/pkg/util"
|
|
|
|
)
|
|
|
|
|
|
|
|
func GetPendingOrgInvites(c *middleware.Context) Response {
|
|
|
|
query := m.GetTempUsersForOrgQuery{OrgId: c.OrgId}
|
|
|
|
|
|
|
|
if err := bus.Dispatch(&query); err != nil {
|
|
|
|
return ApiError(500, "Failed to get invites from db", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
return Json(200, query.Result)
|
|
|
|
}
|
|
|
|
|
|
|
|
func AddOrgInvite(c *middleware.Context, inviteDto dtos.AddInviteForm) Response {
|
|
|
|
if !inviteDto.Role.IsValid() {
|
|
|
|
return ApiError(400, "Invalid role specified", nil)
|
|
|
|
}
|
|
|
|
|
2015-07-18 17:43:34 +08:00
|
|
|
// first try get existing user
|
|
|
|
userQuery := m.GetUserByLoginQuery{LoginOrEmail: inviteDto.Email}
|
|
|
|
if err := bus.Dispatch(&userQuery); err != nil {
|
|
|
|
if err != m.ErrUserNotFound {
|
|
|
|
return ApiError(500, "Failed to query db for existing user check", err)
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// user exists, add org role
|
|
|
|
createOrgUserCmd := m.AddOrgUserCommand{OrgId: c.OrgId, UserId: userQuery.Result.Id, Role: inviteDto.Role}
|
|
|
|
if err := bus.Dispatch(&createOrgUserCmd); err != nil {
|
|
|
|
return ApiError(500, "Error while trying to create org user", err)
|
|
|
|
} else {
|
|
|
|
return ApiSuccess("Existing Grafana user added to org " + c.OrgName)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-07-17 15:51:34 +08:00
|
|
|
cmd := m.CreateTempUserCommand{}
|
|
|
|
cmd.OrgId = c.OrgId
|
|
|
|
cmd.Email = inviteDto.Email
|
|
|
|
cmd.Name = inviteDto.Name
|
|
|
|
cmd.IsInvite = true
|
|
|
|
cmd.InvitedByUserId = c.UserId
|
|
|
|
cmd.Code = util.GetRandomString(30)
|
2015-07-17 20:42:49 +08:00
|
|
|
cmd.Role = inviteDto.Role
|
2015-07-17 15:51:34 +08:00
|
|
|
|
|
|
|
if err := bus.Dispatch(&cmd); err != nil {
|
|
|
|
return ApiError(500, "Failed to save invite to database", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
return ApiSuccess("ok, done!")
|
|
|
|
}
|