summaryrefslogtreecommitdiffstats
path: root/modules/middleware
diff options
context:
space:
mode:
authorslene <vslene@gmail.com>2014-03-15 19:01:50 +0800
committerslene <vslene@gmail.com>2014-03-15 19:01:50 +0800
commitfa5ad1e46560bd006bccf57e5cac39589d18e344 (patch)
tree6157a0fb7f2333207d8ba907713be873b3eb0e52 /modules/middleware
parent06deed820d9f48ecf972c8716b17ad58b91ab9b9 (diff)
downloadgitea-fa5ad1e46560bd006bccf57e5cac39589d18e344.tar.gz
gitea-fa5ad1e46560bd006bccf57e5cac39589d18e344.zip
move templateFuncs to one file, add middleware context.
Diffstat (limited to 'modules/middleware')
-rw-r--r--modules/middleware/auth.go28
-rw-r--r--modules/middleware/context.go75
2 files changed, 103 insertions, 0 deletions
diff --git a/modules/middleware/auth.go b/modules/middleware/auth.go
new file mode 100644
index 0000000000..743b982976
--- /dev/null
+++ b/modules/middleware/auth.go
@@ -0,0 +1,28 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package middleware
+
+import (
+ "github.com/codegangsta/martini"
+)
+
+func SignInRequire(redirect bool) martini.Handler {
+ return func(ctx *Context) {
+ if !ctx.IsSigned {
+ if redirect {
+ ctx.Render.Redirect("/")
+ }
+ return
+ }
+ }
+}
+
+func SignOutRequire() martini.Handler {
+ return func(ctx *Context) {
+ if ctx.IsSigned {
+ ctx.Render.Redirect("/")
+ }
+ }
+}
diff --git a/modules/middleware/context.go b/modules/middleware/context.go
new file mode 100644
index 0000000000..5ca726d93e
--- /dev/null
+++ b/modules/middleware/context.go
@@ -0,0 +1,75 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package middleware
+
+import (
+ "net/http"
+
+ "github.com/codegangsta/martini"
+ "github.com/martini-contrib/render"
+ "github.com/martini-contrib/sessions"
+
+ "github.com/gogits/gogs/models"
+ "github.com/gogits/gogs/modules/auth"
+ "github.com/gogits/gogs/modules/base"
+ "github.com/gogits/gogs/modules/log"
+)
+
+type Context struct {
+ c martini.Context
+ p martini.Params
+ Req *http.Request
+ Res http.ResponseWriter
+ Session sessions.Session
+ Data base.TmplData
+ Render render.Render
+ User *models.User
+ IsSigned bool
+}
+
+func (ctx *Context) Query(name string) string {
+ ctx.Req.ParseForm()
+ return ctx.Req.Form.Get(name)
+}
+
+// func (ctx *Context) Param(name string) string {
+// return ctx.p[name]
+// }
+
+func (ctx *Context) Log(status int, title string, err error) {
+ log.Handle(status, title, ctx.Data, ctx.Render, err)
+}
+
+func InitContext() martini.Handler {
+ return func(res http.ResponseWriter, r *http.Request, c martini.Context,
+ session sessions.Session, rd render.Render) {
+
+ data := base.TmplData{}
+
+ ctx := &Context{
+ c: c,
+ // p: p,
+ Req: r,
+ Res: res,
+ Data: data,
+ Render: rd,
+ }
+
+ // Get user from session if logined.
+ user := auth.SignedInUser(session)
+ ctx.User = user
+ ctx.IsSigned = ctx != nil
+
+ data["IsSigned"] = true
+ data["SignedUser"] = user
+ data["SignedUserId"] = user.Id
+ data["SignedUserName"] = user.LowerName
+
+ c.Map(ctx)
+ c.Map(data)
+
+ c.Next()
+ }
+}