diff --git a/pkg/api/api.go b/pkg/api/api.go
index e3cfe9e6788..a2957ce44ae 100644
--- a/pkg/api/api.go
+++ b/pkg/api/api.go
@@ -22,7 +22,7 @@ func Register(r *macaron.Macaron) {
r.Post("/login", bind(dtos.LoginCommand{}), wrap(LoginPost))
r.Get("/login/:name", OAuthLogin)
r.Get("/login", LoginView)
- r.Get("/signup/invited", Index)
+ r.Get("/invite", Index)
// authed views
r.Get("/profile/", reqSignedIn, Index)
@@ -43,6 +43,9 @@ func Register(r *macaron.Macaron) {
r.Get("/signup", Index)
r.Post("/api/user/signup", bind(m.CreateUserCommand{}), wrap(SignUp))
+ // invited
+ r.Get("/api/user/invite/:code", wrap(GetInviteInfoByCode))
+
// reset password
r.Get("/user/password/send-reset-email", Index)
r.Get("/user/password/reset", Index)
diff --git a/pkg/api/dtos/invite.go b/pkg/api/dtos/invite.go
index 8a857e7fc8d..c9bc5b3bd6b 100644
--- a/pkg/api/dtos/invite.go
+++ b/pkg/api/dtos/invite.go
@@ -8,3 +8,9 @@ type AddInviteForm struct {
Role m.RoleType `json:"role" binding:"Required"`
SkipEmails bool `json:"skipEmails"`
}
+
+type InviteInfo struct {
+ Email string `json:"email"`
+ Name string `json:"name"`
+ Username string `json:"username"`
+}
diff --git a/pkg/api/org_invite.go b/pkg/api/org_invite.go
index dd3431aa2d3..e1baa97d329 100644
--- a/pkg/api/org_invite.go
+++ b/pkg/api/org_invite.go
@@ -96,3 +96,22 @@ func RevokeInvite(c *middleware.Context) Response {
return ApiSuccess("Invite revoked")
}
+
+func GetInviteInfoByCode(c *middleware.Context) Response {
+ query := m.GetTempUsersByCodeQuery{Code: c.Params(":code")}
+
+ if err := bus.Dispatch(&query); err != nil {
+ if err == m.ErrTempUserNotFound {
+ return ApiError(404, "Invite not found", nil)
+ }
+ return ApiError(500, "Failed to get invite", err)
+ }
+
+ info := dtos.InviteInfo{
+ Email: query.Result.Email,
+ Name: query.Result.Name,
+ Username: query.Result.Email,
+ }
+
+ return Json(200, &info)
+}
diff --git a/pkg/models/temp_user.go b/pkg/models/temp_user.go
index f2c6173dd4c..04db0053827 100644
--- a/pkg/models/temp_user.go
+++ b/pkg/models/temp_user.go
@@ -68,6 +68,12 @@ type GetTempUsersForOrgQuery struct {
Result []*TempUserDTO
}
+type GetTempUsersByCodeQuery struct {
+ Code string
+
+ Result *TempUser
+}
+
type TempUserDTO struct {
Id int64 `json:"id"`
Name string `json:"name"`
diff --git a/pkg/services/sqlstore/temp_user.go b/pkg/services/sqlstore/temp_user.go
index e8928f2c356..dde4bb286d4 100644
--- a/pkg/services/sqlstore/temp_user.go
+++ b/pkg/services/sqlstore/temp_user.go
@@ -12,6 +12,7 @@ func init() {
bus.AddHandler("sql", CreateTempUser)
bus.AddHandler("sql", GetTempUsersForOrg)
bus.AddHandler("sql", UpdateTempUserStatus)
+ bus.AddHandler("sql", GetTempUsersByCode)
}
func UpdateTempUserStatus(cmd *m.UpdateTempUserStatusCommand) error {
@@ -68,3 +69,17 @@ func GetTempUsersForOrg(query *m.GetTempUsersForOrgQuery) error {
err := sess.Find(&query.Result)
return err
}
+
+func GetTempUsersByCode(query *m.GetTempUsersByCodeQuery) error {
+ var user m.TempUser
+ has, err := x.Table("temp_user").Where("code=?", query.Code).Get(&user)
+
+ if err != nil {
+ return err
+ } else if has == false {
+ return m.ErrTempUserNotFound
+ }
+
+ query.Result = &user
+ return err
+}
diff --git a/public/app/controllers/invitedCtrl.js b/public/app/controllers/invitedCtrl.js
index 7fe7dde7054..d5bfa22895a 100644
--- a/public/app/controllers/invitedCtrl.js
+++ b/public/app/controllers/invitedCtrl.js
@@ -6,11 +6,24 @@ function (angular) {
var module = angular.module('grafana.controllers');
- module.controller('InvitedCtrl', function($scope, contextSrv) {
+ module.controller('InvitedCtrl', function($scope, $routeParams, contextSrv, backendSrv) {
contextSrv.sidemenu = false;
+ $scope.user = {};
+
$scope.init = function() {
+ backendSrv.get('/api/user/invite/' + $routeParams.code).then(function(invite) {
+ $scope.user.name = invite.name;
+ $scope.user.email = invite.email;
+ $scope.user.username = invite.email;
+ $scope.user.inviteId = invite.id;
+
+ $scope.greeting = invite.name || invite.email;
+ });
+ };
+
+ $scope.submit = function() {
};
$scope.init();
diff --git a/public/app/partials/signup_invited.html b/public/app/partials/signup_invited.html
index 9c5a3ef571f..6c896b3f249 100644
--- a/public/app/partials/signup_invited.html
+++ b/public/app/partials/signup_invited.html
@@ -9,65 +9,83 @@
-