diff options
author | Unknown <joe2010xtmf@163.com> | 2014-03-07 16:05:18 -0500 |
---|---|---|
committer | Unknown <joe2010xtmf@163.com> | 2014-03-07 16:05:18 -0500 |
commit | ba5c7ea7719abbef792e8b9897dcfadf4d54bbab (patch) | |
tree | e1986ff36562366278fd134e7ce1793193828dcb /routers/user | |
parent | 8e821c75d7432ffe7eb7d72ba479f6f68e620ad1 (diff) |
Add SignInRequire and SignOutRequire middleware
Diffstat (limited to 'routers/user')
-rw-r--r-- | routers/user/ssh.go | 15 | ||||
-rw-r--r-- | routers/user/user.go | 69 |
2 files changed, 11 insertions, 73 deletions
diff --git a/routers/user/ssh.go b/routers/user/ssh.go index 9e9cf009..c928407d 100644 --- a/routers/user/ssh.go +++ b/routers/user/ssh.go @@ -9,21 +9,22 @@ import ( "net/http" "github.com/martini-contrib/render" + "github.com/martini-contrib/sessions" "github.com/gogits/gogs/models" - "github.com/martini-contrib/sessions" + "github.com/gogits/gogs/modules/auth" ) func AddPublicKey(req *http.Request, r render.Render, session sessions.Session) { if req.Method == "GET" { r.HTML(200, "user/publickey_add", map[string]interface{}{ "Title": "Add Public Key", - "IsSigned": IsSignedIn(session), + "IsSigned": auth.IsSignedIn(session), }) return } - k := &models.PublicKey{OwnerId: SignedInId(session), + k := &models.PublicKey{OwnerId: auth.SignedInId(session), Name: req.FormValue("keyname"), Content: req.FormValue("key_content"), } @@ -31,7 +32,7 @@ func AddPublicKey(req *http.Request, r render.Render, session sessions.Session) if err != nil { r.HTML(403, "status/403", map[string]interface{}{ "Title": fmt.Sprintf("%v", err), - "IsSigned": IsSignedIn(session), + "IsSigned": auth.IsSignedIn(session), }) } else { r.HTML(200, "user/publickey_added", map[string]interface{}{}) @@ -39,11 +40,11 @@ func AddPublicKey(req *http.Request, r render.Render, session sessions.Session) } func ListPublicKey(req *http.Request, r render.Render, session sessions.Session) { - keys, err := models.ListPublicKey(SignedInId(session)) + keys, err := models.ListPublicKey(auth.SignedInId(session)) if err != nil { r.HTML(200, "base/error", map[string]interface{}{ "Error": fmt.Sprintf("%v", err), - "IsSigned": IsSignedIn(session), + "IsSigned": auth.IsSignedIn(session), }) return } @@ -51,6 +52,6 @@ func ListPublicKey(req *http.Request, r render.Render, session sessions.Session) r.HTML(200, "user/publickey_list", map[string]interface{}{ "Title": "repositories", "Keys": keys, - "IsSigned": IsSignedIn(session), + "IsSigned": auth.IsSignedIn(session), }) } diff --git a/routers/user/user.go b/routers/user/user.go index 90494b28..fae376dd 100644 --- a/routers/user/user.go +++ b/routers/user/user.go @@ -8,7 +8,6 @@ import ( "fmt" "net/http" - //"github.com/martini-contrib/binding" "github.com/martini-contrib/render" "github.com/martini-contrib/sessions" @@ -19,80 +18,23 @@ import ( ) func Dashboard(r render.Render, data base.TmplData, session sessions.Session) { - if !IsSignedIn(session) { - // todo : direct to logout - r.Redirect("/") - return - } - - data["IsSigned"] = true - data["SignedUserId"] = SignedInId(session) - data["SignedUserName"] = SignedInName(session) - data["PageIsUserDashboard"] = true - data["Avatar"] = SignedInUser(session).Avatar - data["Title"] = "Dashboard" + data["PageIsUserDashboard"] = true r.HTML(200, "user/dashboard", data) } func Profile(r render.Render, data base.TmplData, session sessions.Session) { data["Title"] = "Profile" - data["IsSigned"] = IsSignedIn(session) + data["IsSigned"] = auth.IsSignedIn(session) // TODO: Need to check view self or others. - user := SignedInUser(session) + user := auth.SignedInUser(session) data["Avatar"] = user.Avatar data["Username"] = user.Name r.HTML(200, "user/profile", data) } -func IsSignedIn(session sessions.Session) bool { - return SignedInId(session) > 0 -} - -func SignedInId(session sessions.Session) int64 { - userId := session.Get("userId") - if userId == nil { - return 0 - } - if s, ok := userId.(int64); ok { - return s - } - return 0 -} - -func SignedInName(session sessions.Session) string { - userName := session.Get("userName") - if userName == nil { - return "" - } - if s, ok := userName.(string); ok { - return s - } - return "" -} - -func SignedInUser(session sessions.Session) *models.User { - id := SignedInId(session) - if id <= 0 { - return nil - } - - user, err := models.GetUserById(id) - if err != nil { - log.Error("user.SignedInUser: %v", err) - return nil - } - return user -} - func SignIn(form auth.LogInForm, data base.TmplData, req *http.Request, r render.Render, session sessions.Session) { - // if logged, do not show login page - if IsSignedIn(session) { - r.Redirect("/") - return - } - data["Title"] = "Log In" if req.Method == "GET" { @@ -128,11 +70,6 @@ func SignIn(form auth.LogInForm, data base.TmplData, req *http.Request, r render } func SignOut(r render.Render, session sessions.Session) { - if !IsSignedIn(session) { - r.Redirect("/") - return - } - session.Delete("userId") session.Delete("userName") r.Redirect("/") |