Add SignInRequire and SignOutRequire middleware
This commit is contained in:
parent
8e821c75d7
commit
ba5c7ea771
8 changed files with 135 additions and 99 deletions
|
@ -5,14 +5,16 @@
|
|||
package routers
|
||||
|
||||
import (
|
||||
"github.com/gogits/gogs/modules/base"
|
||||
"github.com/gogits/gogs/routers/user"
|
||||
"github.com/martini-contrib/render"
|
||||
"github.com/martini-contrib/sessions"
|
||||
|
||||
"github.com/gogits/gogs/modules/auth"
|
||||
"github.com/gogits/gogs/modules/base"
|
||||
"github.com/gogits/gogs/routers/user"
|
||||
)
|
||||
|
||||
func Home(r render.Render, data base.TmplData, session sessions.Session) {
|
||||
if user.IsSignedIn(session) {
|
||||
if auth.IsSignedIn(session) {
|
||||
user.Dashboard(r, data, session)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -10,19 +10,21 @@ import (
|
|||
"strconv"
|
||||
|
||||
"github.com/martini-contrib/render"
|
||||
"github.com/martini-contrib/sessions"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/routers/user"
|
||||
"github.com/martini-contrib/sessions"
|
||||
"github.com/gogits/gogs/modules/auth"
|
||||
"github.com/gogits/gogs/modules/base"
|
||||
)
|
||||
|
||||
func Create(req *http.Request, r render.Render, session sessions.Session) {
|
||||
func Create(req *http.Request, r render.Render, data base.TmplData, session sessions.Session) {
|
||||
data["Title"] = "Create repository"
|
||||
|
||||
if req.Method == "GET" {
|
||||
r.HTML(200, "repo/create", map[string]interface{}{
|
||||
"Title": "Create repository",
|
||||
"UserName": user.SignedInName(session),
|
||||
"UserId": user.SignedInId(session),
|
||||
"IsSigned": user.IsSignedIn(session),
|
||||
"UserName": auth.SignedInName(session),
|
||||
"UserId": auth.SignedInId(session),
|
||||
"IsSigned": auth.IsSignedIn(session),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
@ -42,7 +44,7 @@ func Create(req *http.Request, r render.Render, session sessions.Session) {
|
|||
if err == nil {
|
||||
r.HTML(200, "repo/created", map[string]interface{}{
|
||||
"RepoName": u.Name + "/" + req.FormValue("name"),
|
||||
"IsSigned": user.IsSignedIn(session),
|
||||
"IsSigned": auth.IsSignedIn(session),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
@ -51,7 +53,7 @@ func Create(req *http.Request, r render.Render, session sessions.Session) {
|
|||
if err != nil {
|
||||
r.HTML(200, "base/error", map[string]interface{}{
|
||||
"Error": fmt.Sprintf("%v", err),
|
||||
"IsSigned": user.IsSignedIn(session),
|
||||
"IsSigned": auth.IsSignedIn(session),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -60,7 +62,7 @@ func Delete(req *http.Request, r render.Render, session sessions.Session) {
|
|||
if req.Method == "GET" {
|
||||
r.HTML(200, "repo/delete", map[string]interface{}{
|
||||
"Title": "Delete repository",
|
||||
"IsSigned": user.IsSignedIn(session),
|
||||
"IsSigned": auth.IsSignedIn(session),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
@ -70,19 +72,19 @@ func Delete(req *http.Request, r render.Render, session sessions.Session) {
|
|||
if err != nil {
|
||||
r.HTML(200, "base/error", map[string]interface{}{
|
||||
"Error": fmt.Sprintf("%v", err),
|
||||
"IsSigned": user.IsSignedIn(session),
|
||||
"IsSigned": auth.IsSignedIn(session),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func List(req *http.Request, r render.Render, session sessions.Session) {
|
||||
u := user.SignedInUser(session)
|
||||
u := auth.SignedInUser(session)
|
||||
repos, err := models.GetRepositories(u)
|
||||
fmt.Println("repos", repos)
|
||||
if err != nil {
|
||||
r.HTML(200, "base/error", map[string]interface{}{
|
||||
"Error": fmt.Sprintf("%v", err),
|
||||
"IsSigned": user.IsSignedIn(session),
|
||||
"IsSigned": auth.IsSignedIn(session),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
@ -90,6 +92,6 @@ func List(req *http.Request, r render.Render, session sessions.Session) {
|
|||
r.HTML(200, "repo/list", map[string]interface{}{
|
||||
"Title": "repositories",
|
||||
"Repos": repos,
|
||||
"IsSigned": user.IsSignedIn(session),
|
||||
"IsSigned": auth.IsSignedIn(session),
|
||||
})
|
||||
}
|
||||
|
|
|
@ -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),
|
||||
})
|
||||
}
|
||||
|
|
|
@ -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("/")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue