diff --git a/grafana b/grafana index 3bf7f6ed5fa..8ed92124013 160000 --- a/grafana +++ b/grafana @@ -1 +1 @@ -Subproject commit 3bf7f6ed5fa348d7983a4ae3bf17d280d5a5ed13 +Subproject commit 8ed921240133c8638ecd0b2973bae36cdb5f6ccb diff --git a/pkg/api/api.go b/pkg/api/api.go index 5073d7644a7..22fbe5bf612 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -19,7 +19,7 @@ func Register(r *macaron.Macaron) { // not logged in views r.Get("/", reqSignedIn, Index) r.Post("/logout", LogoutPost) - r.Post("/login", LoginPost) + r.Post("/login", bind(dtos.LoginCommand{}), LoginPost) r.Get("/login/:name", OAuthLogin) r.Get("/login", Index) @@ -35,7 +35,7 @@ func Register(r *macaron.Macaron) { // sign up r.Get("/signup", Index) - r.Post("/api/account/signup", SignUp) + r.Put("/api/user/signup", bind(m.CreateUserCommand{}), SignUp) // authed api r.Group("/api", func() { diff --git a/pkg/api/dtos/models.go b/pkg/api/dtos/models.go index 10629c9ba10..250a6564fee 100644 --- a/pkg/api/dtos/models.go +++ b/pkg/api/dtos/models.go @@ -8,9 +8,10 @@ import ( m "github.com/torkelo/grafana-pro/pkg/models" ) -type LoginResult struct { - Status string `json:"status"` - User CurrentUser `json:"user"` +type LoginCommand struct { + User string `json:"user" binding:"Required"` + Password string `json:"password" binding:"Required"` + Remember bool `json:"remember"` } type CurrentUser struct { diff --git a/pkg/api/login.go b/pkg/api/login.go index 42e35f107cd..3b53d1a2d24 100644 --- a/pkg/api/login.go +++ b/pkg/api/login.go @@ -9,21 +9,9 @@ import ( "github.com/torkelo/grafana-pro/pkg/util" ) -type loginJsonModel struct { - Email string `json:"email" binding:"required"` - Password string `json:"password" binding:"required"` - Remember bool `json:"remember"` -} +func LoginPost(c *middleware.Context, cmd dtos.LoginCommand) { -func LoginPost(c *middleware.Context) { - var loginModel loginJsonModel - - if !c.JsonBody(&loginModel) { - c.JSON(400, util.DynMap{"message": "bad request"}) - return - } - - userQuery := m.GetUserByLoginQuery{LoginOrEmail: loginModel.Email} + userQuery := m.GetUserByLoginQuery{LoginOrEmail: cmd.User} err := bus.Dispatch(&userQuery) if err != nil { @@ -33,7 +21,7 @@ func LoginPost(c *middleware.Context) { user := userQuery.Result - passwordHashed := util.EncodePassword(loginModel.Password, user.Salt) + passwordHashed := util.EncodePassword(cmd.Password, user.Salt) if passwordHashed != user.Password { c.JsonApiErr(401, "Invalid username or password", err) return @@ -41,11 +29,7 @@ func LoginPost(c *middleware.Context) { loginUserWithUser(user, c) - var resp = &dtos.LoginResult{} - resp.Status = "Logged in" - resp.User.Login = user.Login - - c.JSON(200, resp) + c.JsonOK("User logged in") } func loginUserWithUser(user *m.User, c *middleware.Context) { diff --git a/pkg/api/signup.go b/pkg/api/signup.go index a678a7adec7..d7ab99dc422 100644 --- a/pkg/api/signup.go +++ b/pkg/api/signup.go @@ -8,13 +8,7 @@ import ( ) // POST /api/account/signup -func SignUp(c *middleware.Context) { - var cmd m.CreateUserCommand - - if !c.JsonBody(&cmd) { - c.JsonApiErr(400, "Validation error", nil) - return - } +func SignUp(c *middleware.Context, cmd m.CreateUserCommand) { cmd.Login = cmd.Email cmd.Salt = util.GetRandomString(10) @@ -25,5 +19,9 @@ func SignUp(c *middleware.Context) { return } - c.JsonOK("User created") + user := cmd.Result + + loginUserWithUser(&user, c) + + c.JsonOK("User created and logged in") } diff --git a/pkg/models/user.go b/pkg/models/user.go index 50533584c9c..fe031f00de2 100644 --- a/pkg/models/user.go +++ b/pkg/models/user.go @@ -30,13 +30,13 @@ type User struct { // COMMANDS type CreateUserCommand struct { - Email string - Login string - Name string - Company string - Password string - Salt string - IsAdmin bool + Email string `json:"email" binding:"Required"` + Login string `json:"login"` + Name string `json:"name"` + Company string `json:"compay"` + Password string `json:"password" binding:"Required"` + Salt string `json:"-"` + IsAdmin bool `json:"-"` Result User `json:"-"` } diff --git a/pkg/services/sqlstore/migrations_test.go b/pkg/services/sqlstore/migrations_test.go index c99e3402c10..8d176e0c1ae 100644 --- a/pkg/services/sqlstore/migrations_test.go +++ b/pkg/services/sqlstore/migrations_test.go @@ -20,8 +20,6 @@ func TestMigrations(t *testing.T) { testDBs := []sqlutil.TestDB{ sqlutil.TestDB_Sqlite3, - // sqlutil.TestDB_Mysql, - // sqlutil.TestDB_Postgres, } for _, testDB := range testDBs {