mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Add SignInRequire and SignOutRequire middleware
This commit is contained in:
		
							
								
								
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							| @@ -19,7 +19,7 @@ import ( | |||||||
| // Test that go1.1 tag above is included in builds. main.go refers to this definition. | // Test that go1.1 tag above is included in builds. main.go refers to this definition. | ||||||
| const go11tag = true | const go11tag = true | ||||||
|  |  | ||||||
| const APP_VER = "0.0.1.0306" | const APP_VER = "0.0.1.0307" | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	runtime.GOMAXPROCS(runtime.NumCPU()) | 	runtime.GOMAXPROCS(runtime.NumCPU()) | ||||||
|   | |||||||
							
								
								
									
										82
									
								
								modules/auth/user.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								modules/auth/user.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,82 @@ | |||||||
|  | // 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 auth | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"github.com/codegangsta/martini" | ||||||
|  | 	"github.com/martini-contrib/render" | ||||||
|  | 	"github.com/martini-contrib/sessions" | ||||||
|  |  | ||||||
|  | 	"github.com/gogits/gogs/models" | ||||||
|  | 	"github.com/gogits/gogs/modules/base" | ||||||
|  | 	"github.com/gogits/gogs/utils/log" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | 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 IsSignedIn(session sessions.Session) bool { | ||||||
|  | 	return SignedInId(session) > 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // SignInRequire checks user status from session. | ||||||
|  | // It will assign correspoding values to | ||||||
|  | // template data map if user has signed in. | ||||||
|  | func SignInRequire(redirect bool) martini.Handler { | ||||||
|  | 	return func(r render.Render, data base.TmplData, session sessions.Session) { | ||||||
|  | 		if !IsSignedIn(session) { | ||||||
|  | 			if redirect { | ||||||
|  | 				r.Redirect("/") | ||||||
|  | 			} | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		data["IsSigned"] = true | ||||||
|  | 		data["SignedUserId"] = SignedInId(session) | ||||||
|  | 		data["SignedUserName"] = SignedInName(session) | ||||||
|  | 		data["Avatar"] = SignedInUser(session).Avatar | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func SignOutRequire() martini.Handler { | ||||||
|  | 	return func(r render.Render, session sessions.Session) { | ||||||
|  | 		if IsSignedIn(session) { | ||||||
|  | 			r.Redirect("/") | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -5,14 +5,16 @@ | |||||||
| package routers | package routers | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"github.com/gogits/gogs/modules/base" |  | ||||||
| 	"github.com/gogits/gogs/routers/user" |  | ||||||
| 	"github.com/martini-contrib/render" | 	"github.com/martini-contrib/render" | ||||||
| 	"github.com/martini-contrib/sessions" | 	"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) { | func Home(r render.Render, data base.TmplData, session sessions.Session) { | ||||||
| 	if user.IsSignedIn(session) { | 	if auth.IsSignedIn(session) { | ||||||
| 		user.Dashboard(r, data, session) | 		user.Dashboard(r, data, session) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -10,19 +10,21 @@ import ( | |||||||
| 	"strconv" | 	"strconv" | ||||||
|  |  | ||||||
| 	"github.com/martini-contrib/render" | 	"github.com/martini-contrib/render" | ||||||
|  | 	"github.com/martini-contrib/sessions" | ||||||
|  |  | ||||||
| 	"github.com/gogits/gogs/models" | 	"github.com/gogits/gogs/models" | ||||||
| 	"github.com/gogits/gogs/routers/user" | 	"github.com/gogits/gogs/modules/auth" | ||||||
| 	"github.com/martini-contrib/sessions" | 	"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" { | 	if req.Method == "GET" { | ||||||
| 		r.HTML(200, "repo/create", map[string]interface{}{ | 		r.HTML(200, "repo/create", map[string]interface{}{ | ||||||
| 			"Title":    "Create repository", | 			"UserName": auth.SignedInName(session), | ||||||
| 			"UserName": user.SignedInName(session), | 			"UserId":   auth.SignedInId(session), | ||||||
| 			"UserId":   user.SignedInId(session), | 			"IsSigned": auth.IsSignedIn(session), | ||||||
| 			"IsSigned": user.IsSignedIn(session), |  | ||||||
| 		}) | 		}) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| @@ -42,7 +44,7 @@ func Create(req *http.Request, r render.Render, session sessions.Session) { | |||||||
| 		if err == nil { | 		if err == nil { | ||||||
| 			r.HTML(200, "repo/created", map[string]interface{}{ | 			r.HTML(200, "repo/created", map[string]interface{}{ | ||||||
| 				"RepoName": u.Name + "/" + req.FormValue("name"), | 				"RepoName": u.Name + "/" + req.FormValue("name"), | ||||||
| 				"IsSigned": user.IsSignedIn(session), | 				"IsSigned": auth.IsSignedIn(session), | ||||||
| 			}) | 			}) | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| @@ -51,7 +53,7 @@ func Create(req *http.Request, r render.Render, session sessions.Session) { | |||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		r.HTML(200, "base/error", map[string]interface{}{ | 		r.HTML(200, "base/error", map[string]interface{}{ | ||||||
| 			"Error":    fmt.Sprintf("%v", err), | 			"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" { | 	if req.Method == "GET" { | ||||||
| 		r.HTML(200, "repo/delete", map[string]interface{}{ | 		r.HTML(200, "repo/delete", map[string]interface{}{ | ||||||
| 			"Title":    "Delete repository", | 			"Title":    "Delete repository", | ||||||
| 			"IsSigned": user.IsSignedIn(session), | 			"IsSigned": auth.IsSignedIn(session), | ||||||
| 		}) | 		}) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| @@ -70,19 +72,19 @@ func Delete(req *http.Request, r render.Render, session sessions.Session) { | |||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		r.HTML(200, "base/error", map[string]interface{}{ | 		r.HTML(200, "base/error", map[string]interface{}{ | ||||||
| 			"Error":    fmt.Sprintf("%v", err), | 			"Error":    fmt.Sprintf("%v", err), | ||||||
| 			"IsSigned": user.IsSignedIn(session), | 			"IsSigned": auth.IsSignedIn(session), | ||||||
| 		}) | 		}) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func List(req *http.Request, r render.Render, session sessions.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) | 	repos, err := models.GetRepositories(u) | ||||||
| 	fmt.Println("repos", repos) | 	fmt.Println("repos", repos) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		r.HTML(200, "base/error", map[string]interface{}{ | 		r.HTML(200, "base/error", map[string]interface{}{ | ||||||
| 			"Error":    fmt.Sprintf("%v", err), | 			"Error":    fmt.Sprintf("%v", err), | ||||||
| 			"IsSigned": user.IsSignedIn(session), | 			"IsSigned": auth.IsSignedIn(session), | ||||||
| 		}) | 		}) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| @@ -90,6 +92,6 @@ func List(req *http.Request, r render.Render, session sessions.Session) { | |||||||
| 	r.HTML(200, "repo/list", map[string]interface{}{ | 	r.HTML(200, "repo/list", map[string]interface{}{ | ||||||
| 		"Title":    "repositories", | 		"Title":    "repositories", | ||||||
| 		"Repos":    repos, | 		"Repos":    repos, | ||||||
| 		"IsSigned": user.IsSignedIn(session), | 		"IsSigned": auth.IsSignedIn(session), | ||||||
| 	}) | 	}) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -9,21 +9,22 @@ import ( | |||||||
| 	"net/http" | 	"net/http" | ||||||
|  |  | ||||||
| 	"github.com/martini-contrib/render" | 	"github.com/martini-contrib/render" | ||||||
|  | 	"github.com/martini-contrib/sessions" | ||||||
|  |  | ||||||
| 	"github.com/gogits/gogs/models" | 	"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) { | func AddPublicKey(req *http.Request, r render.Render, session sessions.Session) { | ||||||
| 	if req.Method == "GET" { | 	if req.Method == "GET" { | ||||||
| 		r.HTML(200, "user/publickey_add", map[string]interface{}{ | 		r.HTML(200, "user/publickey_add", map[string]interface{}{ | ||||||
| 			"Title":    "Add Public Key", | 			"Title":    "Add Public Key", | ||||||
| 			"IsSigned": IsSignedIn(session), | 			"IsSigned": auth.IsSignedIn(session), | ||||||
| 		}) | 		}) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	k := &models.PublicKey{OwnerId: SignedInId(session), | 	k := &models.PublicKey{OwnerId: auth.SignedInId(session), | ||||||
| 		Name:    req.FormValue("keyname"), | 		Name:    req.FormValue("keyname"), | ||||||
| 		Content: req.FormValue("key_content"), | 		Content: req.FormValue("key_content"), | ||||||
| 	} | 	} | ||||||
| @@ -31,7 +32,7 @@ func AddPublicKey(req *http.Request, r render.Render, session sessions.Session) | |||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		r.HTML(403, "status/403", map[string]interface{}{ | 		r.HTML(403, "status/403", map[string]interface{}{ | ||||||
| 			"Title":    fmt.Sprintf("%v", err), | 			"Title":    fmt.Sprintf("%v", err), | ||||||
| 			"IsSigned": IsSignedIn(session), | 			"IsSigned": auth.IsSignedIn(session), | ||||||
| 		}) | 		}) | ||||||
| 	} else { | 	} else { | ||||||
| 		r.HTML(200, "user/publickey_added", map[string]interface{}{}) | 		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) { | 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 { | 	if err != nil { | ||||||
| 		r.HTML(200, "base/error", map[string]interface{}{ | 		r.HTML(200, "base/error", map[string]interface{}{ | ||||||
| 			"Error":    fmt.Sprintf("%v", err), | 			"Error":    fmt.Sprintf("%v", err), | ||||||
| 			"IsSigned": IsSignedIn(session), | 			"IsSigned": auth.IsSignedIn(session), | ||||||
| 		}) | 		}) | ||||||
| 		return | 		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{}{ | 	r.HTML(200, "user/publickey_list", map[string]interface{}{ | ||||||
| 		"Title":    "repositories", | 		"Title":    "repositories", | ||||||
| 		"Keys":     keys, | 		"Keys":     keys, | ||||||
| 		"IsSigned": IsSignedIn(session), | 		"IsSigned": auth.IsSignedIn(session), | ||||||
| 	}) | 	}) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -8,7 +8,6 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  |  | ||||||
| 	//"github.com/martini-contrib/binding" |  | ||||||
| 	"github.com/martini-contrib/render" | 	"github.com/martini-contrib/render" | ||||||
| 	"github.com/martini-contrib/sessions" | 	"github.com/martini-contrib/sessions" | ||||||
|  |  | ||||||
| @@ -19,80 +18,23 @@ import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| func Dashboard(r render.Render, data base.TmplData, session sessions.Session) { | 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["Title"] = "Dashboard" | ||||||
|  | 	data["PageIsUserDashboard"] = true | ||||||
| 	r.HTML(200, "user/dashboard", data) | 	r.HTML(200, "user/dashboard", data) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Profile(r render.Render, data base.TmplData, session sessions.Session) { | func Profile(r render.Render, data base.TmplData, session sessions.Session) { | ||||||
| 	data["Title"] = "Profile" | 	data["Title"] = "Profile" | ||||||
|  |  | ||||||
| 	data["IsSigned"] = IsSignedIn(session) | 	data["IsSigned"] = auth.IsSignedIn(session) | ||||||
| 	// TODO: Need to check view self or others. | 	// TODO: Need to check view self or others. | ||||||
| 	user := SignedInUser(session) | 	user := auth.SignedInUser(session) | ||||||
| 	data["Avatar"] = user.Avatar | 	data["Avatar"] = user.Avatar | ||||||
| 	data["Username"] = user.Name | 	data["Username"] = user.Name | ||||||
| 	r.HTML(200, "user/profile", data) | 	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) { | 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" | 	data["Title"] = "Log In" | ||||||
|  |  | ||||||
| 	if req.Method == "GET" { | 	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) { | func SignOut(r render.Render, session sessions.Session) { | ||||||
| 	if !IsSignedIn(session) { |  | ||||||
| 		r.Redirect("/") |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	session.Delete("userId") | 	session.Delete("userId") | ||||||
| 	session.Delete("userName") | 	session.Delete("userName") | ||||||
| 	r.Redirect("/") | 	r.Redirect("/") | ||||||
|   | |||||||
| @@ -10,6 +10,7 @@ | |||||||
|                 <input type="hidden" value="{{.UserId}}" name="userId"/> |                 <input type="hidden" value="{{.UserId}}" name="userId"/> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|  |  | ||||||
|         <div class="form-group"> |         <div class="form-group"> | ||||||
|             <label class="col-md-2 control-label">Repository<strong class="text-danger">*</strong></label> |             <label class="col-md-2 control-label">Repository<strong class="text-danger">*</strong></label> | ||||||
|             <div class="col-md-8"> |             <div class="col-md-8"> | ||||||
| @@ -17,12 +18,21 @@ | |||||||
|                 <span class="help-block">Great repository names are short and memorable. </span> |                 <span class="help-block">Great repository names are short and memorable. </span> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|  |  | ||||||
|  |         <div class="form-group"> | ||||||
|  |             <label class="col-md-2 control-label">Visibility<strong class="text-danger">*</strong></label> | ||||||
|  |             <div class="col-md-8"> | ||||||
|  |                 <p class="form-control-static">Public</p> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |  | ||||||
|         <div class="form-group"> |         <div class="form-group"> | ||||||
|             <label class="col-md-2 control-label">Description</label> |             <label class="col-md-2 control-label">Description</label> | ||||||
|             <div class="col-md-8"> |             <div class="col-md-8"> | ||||||
|                 <textarea name="desc" class="form-control" placeholder="Type your repository name"></textarea> |                 <textarea name="desc" class="form-control" placeholder="Type your repository name"></textarea> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|  |  | ||||||
|         <div class="form-group"> |         <div class="form-group"> | ||||||
|             <label class="col-md-2 control-label">Language</label> |             <label class="col-md-2 control-label">Language</label> | ||||||
|             <div class="col-md-8"> |             <div class="col-md-8"> | ||||||
| @@ -36,6 +46,7 @@ | |||||||
|                 </select> |                 </select> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|  |  | ||||||
|         <div class="form-group"> |         <div class="form-group"> | ||||||
|             <div class="col-md-8 col-md-offset-2"> |             <div class="col-md-8 col-md-offset-2"> | ||||||
|                 <div class="checkbox"> |                 <div class="checkbox"> | ||||||
| @@ -46,6 +57,7 @@ | |||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|  |  | ||||||
|         <div class="form-group"> |         <div class="form-group"> | ||||||
|             <div class="col-md-offset-2 col-md-8"> |             <div class="col-md-offset-2 col-md-8"> | ||||||
|                 <button type="submit" class="btn btn-lg btn-primary">Create repository</button> |                 <button type="submit" class="btn btn-lg btn-primary">Create repository</button> | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								web.go
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								web.go
									
									
									
									
									
								
							| @@ -57,17 +57,17 @@ func runWeb(*cli.Context) { | |||||||
| 	m.Use(sessions.Sessions("my_session", store)) | 	m.Use(sessions.Sessions("my_session", store)) | ||||||
|  |  | ||||||
| 	// Routers. | 	// Routers. | ||||||
| 	m.Get("/", routers.Home) | 	m.Get("/", auth.SignInRequire(false), routers.Home) | ||||||
| 	m.Any("/user/login", binding.BindIgnErr(auth.LogInForm{}), user.SignIn) | 	m.Any("/user/login", auth.SignOutRequire(), binding.BindIgnErr(auth.LogInForm{}), user.SignIn) | ||||||
| 	m.Any("/user/logout", user.SignOut) | 	m.Any("/user/logout", auth.SignInRequire(true), user.SignOut) | ||||||
| 	m.Any("/user/sign_up", binding.BindIgnErr(auth.RegisterForm{}), user.SignUp) | 	m.Any("/user/sign_up", auth.SignOutRequire(), binding.BindIgnErr(auth.RegisterForm{}), user.SignUp) | ||||||
|  |  | ||||||
| 	m.Get("/user/profile", user.Profile) // should be /username | 	m.Get("/user/profile", user.Profile) // should be /username | ||||||
| 	m.Any("/user/delete", user.Delete) | 	m.Any("/user/delete", auth.SignInRequire(true), user.Delete) | ||||||
| 	m.Any("/user/publickey/add", user.AddPublicKey) | 	m.Any("/user/publickey/add", user.AddPublicKey) | ||||||
| 	m.Any("/user/publickey/list", user.ListPublicKey) | 	m.Any("/user/publickey/list", user.ListPublicKey) | ||||||
| 	m.Any("/repo/create", repo.Create) |  | ||||||
| 	m.Any("/repo/delete", repo.Delete) | 	m.Any("/repo/create", auth.SignInRequire(true), repo.Create) | ||||||
|  | 	m.Any("/repo/delete", auth.SignInRequire(true), repo.Delete) | ||||||
| 	m.Any("/repo/list", repo.List) | 	m.Any("/repo/list", repo.List) | ||||||
|  |  | ||||||
| 	listenAddr := fmt.Sprintf("%s:%s", | 	listenAddr := fmt.Sprintf("%s:%s", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Unknown
					Unknown