Sign up and login work

This commit is contained in:
Torkel Ödegaard
2015-01-21 09:52:40 +01:00
parent 4786e0f882
commit 3c8c53194f
7 changed files with 24 additions and 43 deletions
+2 -2
View File
@@ -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() {
+4 -3
View File
@@ -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 {
+4 -20
View File
@@ -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) {
+6 -8
View File
@@ -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")
}