diff options
author | slene <vslene@gmail.com> | 2014-03-15 19:01:50 +0800 |
---|---|---|
committer | slene <vslene@gmail.com> | 2014-03-15 19:01:50 +0800 |
commit | fa5ad1e46560bd006bccf57e5cac39589d18e344 (patch) | |
tree | 6157a0fb7f2333207d8ba907713be873b3eb0e52 /modules/middleware | |
parent | 06deed820d9f48ecf972c8716b17ad58b91ab9b9 (diff) | |
download | gitea-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.go | 28 | ||||
-rw-r--r-- | modules/middleware/context.go | 75 |
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() + } +} |