aboutsummaryrefslogtreecommitdiff
path: root/pkg/context
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/context')
-rw-r--r--pkg/context/api.go26
-rw-r--r--pkg/context/auth.go54
-rw-r--r--pkg/context/context.go78
-rw-r--r--pkg/context/org.go94
-rw-r--r--pkg/context/repo.go276
5 files changed, 264 insertions, 264 deletions
diff --git a/pkg/context/api.go b/pkg/context/api.go
index 623bc1aa..f4b95b4c 100644
--- a/pkg/context/api.go
+++ b/pkg/context/api.go
@@ -25,7 +25,7 @@ const DOC_URL = "https://github.com/gogits/go-gogs-client/wiki"
// Error responses error message to client with given message.
// If status is 500, also it prints error to log.
-func (ctx *APIContext) Error(status int, title string, obj interface{}) {
+func (c *APIContext) Error(status int, title string, obj interface{}) {
var message string
if err, ok := obj.(error); ok {
message = err.Error()
@@ -37,39 +37,39 @@ func (ctx *APIContext) Error(status int, title string, obj interface{}) {
log.Error(3, "%s: %s", title, message)
}
- ctx.JSON(status, map[string]string{
+ c.JSON(status, map[string]string{
"message": message,
"url": DOC_URL,
})
}
// SetLinkHeader sets pagination link header by given totol number and page size.
-func (ctx *APIContext) SetLinkHeader(total, pageSize int) {
- page := paginater.New(total, pageSize, ctx.QueryInt("page"), 0)
+func (c *APIContext) SetLinkHeader(total, pageSize int) {
+ page := paginater.New(total, pageSize, c.QueryInt("page"), 0)
links := make([]string, 0, 4)
if page.HasNext() {
- links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"next\"", setting.AppURL, ctx.Req.URL.Path[1:], page.Next()))
+ links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"next\"", setting.AppURL, c.Req.URL.Path[1:], page.Next()))
}
if !page.IsLast() {
- links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"last\"", setting.AppURL, ctx.Req.URL.Path[1:], page.TotalPages()))
+ links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"last\"", setting.AppURL, c.Req.URL.Path[1:], page.TotalPages()))
}
if !page.IsFirst() {
- links = append(links, fmt.Sprintf("<%s%s?page=1>; rel=\"first\"", setting.AppURL, ctx.Req.URL.Path[1:]))
+ links = append(links, fmt.Sprintf("<%s%s?page=1>; rel=\"first\"", setting.AppURL, c.Req.URL.Path[1:]))
}
if page.HasPrevious() {
- links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"prev\"", setting.AppURL, ctx.Req.URL.Path[1:], page.Previous()))
+ links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"prev\"", setting.AppURL, c.Req.URL.Path[1:], page.Previous()))
}
if len(links) > 0 {
- ctx.Header().Set("Link", strings.Join(links, ","))
+ c.Header().Set("Link", strings.Join(links, ","))
}
}
func APIContexter() macaron.Handler {
- return func(c *Context) {
- ctx := &APIContext{
- Context: c,
+ return func(ctx *Context) {
+ c := &APIContext{
+ Context: ctx,
}
- c.Map(ctx)
+ ctx.Map(c)
}
}
diff --git a/pkg/context/auth.go b/pkg/context/auth.go
index 9ad5cdd0..3ffc9c8f 100644
--- a/pkg/context/auth.go
+++ b/pkg/context/auth.go
@@ -22,73 +22,73 @@ type ToggleOptions struct {
}
func Toggle(options *ToggleOptions) macaron.Handler {
- return func(ctx *Context) {
+ return func(c *Context) {
// Cannot view any page before installation.
if !setting.InstallLock {
- ctx.Redirect(setting.AppSubURL + "/install")
+ c.Redirect(setting.AppSubURL + "/install")
return
}
// Check prohibit login users.
- if ctx.IsLogged && ctx.User.ProhibitLogin {
- ctx.Data["Title"] = ctx.Tr("auth.prohibit_login")
- ctx.HTML(200, "user/auth/prohibit_login")
+ if c.IsLogged && c.User.ProhibitLogin {
+ c.Data["Title"] = c.Tr("auth.prohibit_login")
+ c.HTML(200, "user/auth/prohibit_login")
return
}
// Check non-logged users landing page.
- if !ctx.IsLogged && ctx.Req.RequestURI == "/" && setting.LandingPageURL != setting.LANDING_PAGE_HOME {
- ctx.Redirect(setting.AppSubURL + string(setting.LandingPageURL))
+ if !c.IsLogged && c.Req.RequestURI == "/" && setting.LandingPageURL != setting.LANDING_PAGE_HOME {
+ c.Redirect(setting.AppSubURL + string(setting.LandingPageURL))
return
}
// Redirect to dashboard if user tries to visit any non-login page.
- if options.SignOutRequired && ctx.IsLogged && ctx.Req.RequestURI != "/" {
- ctx.Redirect(setting.AppSubURL + "/")
+ if options.SignOutRequired && c.IsLogged && c.Req.RequestURI != "/" {
+ c.Redirect(setting.AppSubURL + "/")
return
}
- if !options.SignOutRequired && !options.DisableCSRF && ctx.Req.Method == "POST" && !auth.IsAPIPath(ctx.Req.URL.Path) {
- csrf.Validate(ctx.Context, ctx.csrf)
- if ctx.Written() {
+ if !options.SignOutRequired && !options.DisableCSRF && c.Req.Method == "POST" && !auth.IsAPIPath(c.Req.URL.Path) {
+ csrf.Validate(c.Context, c.csrf)
+ if c.Written() {
return
}
}
if options.SignInRequired {
- if !ctx.IsLogged {
+ if !c.IsLogged {
// Restrict API calls with error message.
- if auth.IsAPIPath(ctx.Req.URL.Path) {
- ctx.JSON(403, map[string]string{
+ if auth.IsAPIPath(c.Req.URL.Path) {
+ c.JSON(403, map[string]string{
"message": "Only signed in user is allowed to call APIs.",
})
return
}
- ctx.SetCookie("redirect_to", url.QueryEscape(setting.AppSubURL+ctx.Req.RequestURI), 0, setting.AppSubURL)
- ctx.Redirect(setting.AppSubURL + "/user/login")
+ c.SetCookie("redirect_to", url.QueryEscape(setting.AppSubURL+c.Req.RequestURI), 0, setting.AppSubURL)
+ c.Redirect(setting.AppSubURL + "/user/login")
return
- } else if !ctx.User.IsActive && setting.Service.RegisterEmailConfirm {
- ctx.Data["Title"] = ctx.Tr("auth.active_your_account")
- ctx.HTML(200, "user/auth/activate")
+ } else if !c.User.IsActive && setting.Service.RegisterEmailConfirm {
+ c.Data["Title"] = c.Tr("auth.active_your_account")
+ c.HTML(200, "user/auth/activate")
return
}
}
// Redirect to log in page if auto-signin info is provided and has not signed in.
- if !options.SignOutRequired && !ctx.IsLogged && !auth.IsAPIPath(ctx.Req.URL.Path) &&
- len(ctx.GetCookie(setting.CookieUserName)) > 0 {
- ctx.SetCookie("redirect_to", url.QueryEscape(setting.AppSubURL+ctx.Req.RequestURI), 0, setting.AppSubURL)
- ctx.Redirect(setting.AppSubURL + "/user/login")
+ if !options.SignOutRequired && !c.IsLogged && !auth.IsAPIPath(c.Req.URL.Path) &&
+ len(c.GetCookie(setting.CookieUserName)) > 0 {
+ c.SetCookie("redirect_to", url.QueryEscape(setting.AppSubURL+c.Req.RequestURI), 0, setting.AppSubURL)
+ c.Redirect(setting.AppSubURL + "/user/login")
return
}
if options.AdminRequired {
- if !ctx.User.IsAdmin {
- ctx.Error(403)
+ if !c.User.IsAdmin {
+ c.Error(403)
return
}
- ctx.Data["PageIsAdmin"] = true
+ c.Data["PageIsAdmin"] = true
}
}
}
diff --git a/pkg/context/context.go b/pkg/context/context.go
index d52c668e..e8843cea 100644
--- a/pkg/context/context.go
+++ b/pkg/context/context.go
@@ -85,39 +85,39 @@ func (c *Context) UserID() int64 {
}
// HasError returns true if error occurs in form validation.
-func (ctx *Context) HasApiError() bool {
- hasErr, ok := ctx.Data["HasError"]
+func (c *Context) HasApiError() bool {
+ hasErr, ok := c.Data["HasError"]
if !ok {
return false
}
return hasErr.(bool)
}
-func (ctx *Context) GetErrMsg() string {
- return ctx.Data["ErrorMsg"].(string)
+func (c *Context) GetErrMsg() string {
+ return c.Data["ErrorMsg"].(string)
}
// HasError returns true if error occurs in form validation.
-func (ctx *Context) HasError() bool {
- hasErr, ok := ctx.Data["HasError"]
+func (c *Context) HasError() bool {
+ hasErr, ok := c.Data["HasError"]
if !ok {
return false
}
- ctx.Flash.ErrorMsg = ctx.Data["ErrorMsg"].(string)
- ctx.Data["Flash"] = ctx.Flash
+ c.Flash.ErrorMsg = c.Data["ErrorMsg"].(string)
+ c.Data["Flash"] = c.Flash
return hasErr.(bool)
}
// HasValue returns true if value of given name exists.
-func (ctx *Context) HasValue(name string) bool {
- _, ok := ctx.Data[name]
+func (c *Context) HasValue(name string) bool {
+ _, ok := c.Data[name]
return ok
}
// HTML responses template with given status.
-func (ctx *Context) HTML(status int, name string) {
+func (c *Context) HTML(status int, name string) {
log.Trace("Template: %s", name)
- ctx.Context.HTML(status, name)
+ c.Context.HTML(status, name)
}
// Success responses template with status http.StatusOK.
@@ -137,33 +137,33 @@ func (c *Context) SubURLRedirect(location string, status ...int) {
}
// RenderWithErr used for page has form validation but need to prompt error to users.
-func (ctx *Context) RenderWithErr(msg, tpl string, f interface{}) {
+func (c *Context) RenderWithErr(msg, tpl string, f interface{}) {
if f != nil {
- form.Assign(f, ctx.Data)
+ form.Assign(f, c.Data)
}
- ctx.Flash.ErrorMsg = msg
- ctx.Data["Flash"] = ctx.Flash
- ctx.HTML(http.StatusOK, tpl)
+ c.Flash.ErrorMsg = msg
+ c.Data["Flash"] = c.Flash
+ c.HTML(http.StatusOK, tpl)
}
// Handle handles and logs error by given status.
-func (ctx *Context) Handle(status int, title string, err error) {
+func (c *Context) Handle(status int, title string, err error) {
switch status {
case http.StatusNotFound:
- ctx.Data["Title"] = "Page Not Found"
+ c.Data["Title"] = "Page Not Found"
case http.StatusInternalServerError:
- ctx.Data["Title"] = "Internal Server Error"
+ c.Data["Title"] = "Internal Server Error"
log.Error(2, "%s: %v", title, err)
- if !setting.ProdMode || (ctx.IsLogged && ctx.User.IsAdmin) {
- ctx.Data["ErrorMsg"] = err
+ if !setting.ProdMode || (c.IsLogged && c.User.IsAdmin) {
+ c.Data["ErrorMsg"] = err
}
}
- ctx.HTML(status, fmt.Sprintf("status/%d", status))
+ c.HTML(status, fmt.Sprintf("status/%d", status))
}
// NotFound renders the 404 page.
-func (ctx *Context) NotFound() {
- ctx.Handle(http.StatusNotFound, "", nil)
+func (c *Context) NotFound() {
+ c.Handle(http.StatusNotFound, "", nil)
}
// ServerError renders the 500 page.
@@ -182,11 +182,11 @@ func (c *Context) NotFoundOrServerError(title string, errck func(error) bool, er
c.ServerError(title, err)
}
-func (ctx *Context) HandleText(status int, title string) {
- ctx.PlainText(status, []byte(title))
+func (c *Context) HandleText(status int, title string) {
+ c.PlainText(status, []byte(title))
}
-func (ctx *Context) ServeContent(name string, r io.ReadSeeker, params ...interface{}) {
+func (c *Context) ServeContent(name string, r io.ReadSeeker, params ...interface{}) {
modtime := time.Now()
for _, p := range params {
switch v := p.(type) {
@@ -194,14 +194,14 @@ func (ctx *Context) ServeContent(name string, r io.ReadSeeker, params ...interfa
modtime = v
}
}
- ctx.Resp.Header().Set("Content-Description", "File Transfer")
- ctx.Resp.Header().Set("Content-Type", "application/octet-stream")
- ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+name)
- ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary")
- ctx.Resp.Header().Set("Expires", "0")
- ctx.Resp.Header().Set("Cache-Control", "must-revalidate")
- ctx.Resp.Header().Set("Pragma", "public")
- http.ServeContent(ctx.Resp, ctx.Req.Request, name, modtime, r)
+ c.Resp.Header().Set("Content-Description", "File Transfer")
+ c.Resp.Header().Set("Content-Type", "application/octet-stream")
+ c.Resp.Header().Set("Content-Disposition", "attachment; filename="+name)
+ c.Resp.Header().Set("Content-Transfer-Encoding", "binary")
+ c.Resp.Header().Set("Expires", "0")
+ c.Resp.Header().Set("Cache-Control", "must-revalidate")
+ c.Resp.Header().Set("Pragma", "public")
+ http.ServeContent(c.Resp, c.Req.Request, name, modtime, r)
}
// Contexter initializes a classic context for a request.
@@ -228,8 +228,8 @@ func Contexter() macaron.Handler {
// This is particular a workaround for "go get" command which does not respect
// .netrc file.
if c.Query("go-get") == "1" {
- ownerName := ctx.Params(":username")
- repoName := ctx.Params(":reponame")
+ ownerName := c.Params(":username")
+ repoName := c.Params(":reponame")
branchName := "master"
owner, err := models.GetUserByName(ownerName)
@@ -244,7 +244,7 @@ func Contexter() macaron.Handler {
}
prefix := setting.AppURL + path.Join(ownerName, repoName, "src", branchName)
- ctx.PlainText(http.StatusOK, []byte(com.Expand(`
+ c.PlainText(http.StatusOK, []byte(com.Expand(`
<html>
<head>
<meta name="go-import" content="{GoGetImport} git {CloneLink}">
diff --git a/pkg/context/org.go b/pkg/context/org.go
index be0b0572..45c23bd6 100644
--- a/pkg/context/org.go
+++ b/pkg/context/org.go
@@ -25,7 +25,7 @@ type Organization struct {
Team *models.Team
}
-func HandleOrgAssignment(ctx *Context, args ...bool) {
+func HandleOrgAssignment(c *Context, args ...bool) {
var (
requireMember bool
requireOwner bool
@@ -45,106 +45,106 @@ func HandleOrgAssignment(ctx *Context, args ...bool) {
requireTeamAdmin = args[3]
}
- orgName := ctx.Params(":org")
+ orgName := c.Params(":org")
var err error
- ctx.Org.Organization, err = models.GetUserByName(orgName)
+ c.Org.Organization, err = models.GetUserByName(orgName)
if err != nil {
- ctx.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err)
+ c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err)
return
}
- org := ctx.Org.Organization
- ctx.Data["Org"] = org
+ org := c.Org.Organization
+ c.Data["Org"] = org
// Force redirection when username is actually a user.
if !org.IsOrganization() {
- ctx.Redirect("/" + org.Name)
+ c.Redirect("/" + org.Name)
return
}
// Admin has super access.
- if ctx.IsLogged && ctx.User.IsAdmin {
- ctx.Org.IsOwner = true
- ctx.Org.IsMember = true
- ctx.Org.IsTeamMember = true
- ctx.Org.IsTeamAdmin = true
- } else if ctx.IsLogged {
- ctx.Org.IsOwner = org.IsOwnedBy(ctx.User.ID)
- if ctx.Org.IsOwner {
- ctx.Org.IsMember = true
- ctx.Org.IsTeamMember = true
- ctx.Org.IsTeamAdmin = true
+ if c.IsLogged && c.User.IsAdmin {
+ c.Org.IsOwner = true
+ c.Org.IsMember = true
+ c.Org.IsTeamMember = true
+ c.Org.IsTeamAdmin = true
+ } else if c.IsLogged {
+ c.Org.IsOwner = org.IsOwnedBy(c.User.ID)
+ if c.Org.IsOwner {
+ c.Org.IsMember = true
+ c.Org.IsTeamMember = true
+ c.Org.IsTeamAdmin = true
} else {
- if org.IsOrgMember(ctx.User.ID) {
- ctx.Org.IsMember = true
+ if org.IsOrgMember(c.User.ID) {
+ c.Org.IsMember = true
}
}
} else {
// Fake data.
- ctx.Data["SignedUser"] = &models.User{}
+ c.Data["SignedUser"] = &models.User{}
}
- if (requireMember && !ctx.Org.IsMember) ||
- (requireOwner && !ctx.Org.IsOwner) {
- ctx.Handle(404, "OrgAssignment", err)
+ if (requireMember && !c.Org.IsMember) ||
+ (requireOwner && !c.Org.IsOwner) {
+ c.Handle(404, "OrgAssignment", err)
return
}
- ctx.Data["IsOrganizationOwner"] = ctx.Org.IsOwner
- ctx.Data["IsOrganizationMember"] = ctx.Org.IsMember
+ c.Data["IsOrganizationOwner"] = c.Org.IsOwner
+ c.Data["IsOrganizationMember"] = c.Org.IsMember
- ctx.Org.OrgLink = setting.AppSubURL + "/org/" + org.Name
- ctx.Data["OrgLink"] = ctx.Org.OrgLink
+ c.Org.OrgLink = setting.AppSubURL + "/org/" + org.Name
+ c.Data["OrgLink"] = c.Org.OrgLink
// Team.
- if ctx.Org.IsMember {
- if ctx.Org.IsOwner {
+ if c.Org.IsMember {
+ if c.Org.IsOwner {
if err := org.GetTeams(); err != nil {
- ctx.Handle(500, "GetTeams", err)
+ c.Handle(500, "GetTeams", err)
return
}
} else {
- org.Teams, err = org.GetUserTeams(ctx.User.ID)
+ org.Teams, err = org.GetUserTeams(c.User.ID)
if err != nil {
- ctx.Handle(500, "GetUserTeams", err)
+ c.Handle(500, "GetUserTeams", err)
return
}
}
}
- teamName := ctx.Params(":team")
+ teamName := c.Params(":team")
if len(teamName) > 0 {
teamExists := false
for _, team := range org.Teams {
if team.LowerName == strings.ToLower(teamName) {
teamExists = true
- ctx.Org.Team = team
- ctx.Org.IsTeamMember = true
- ctx.Data["Team"] = ctx.Org.Team
+ c.Org.Team = team
+ c.Org.IsTeamMember = true
+ c.Data["Team"] = c.Org.Team
break
}
}
if !teamExists {
- ctx.Handle(404, "OrgAssignment", err)
+ c.Handle(404, "OrgAssignment", err)
return
}
- ctx.Data["IsTeamMember"] = ctx.Org.IsTeamMember
- if requireTeamMember && !ctx.Org.IsTeamMember {
- ctx.Handle(404, "OrgAssignment", err)
+ c.Data["IsTeamMember"] = c.Org.IsTeamMember
+ if requireTeamMember && !c.Org.IsTeamMember {
+ c.Handle(404, "OrgAssignment", err)
return
}
- ctx.Org.IsTeamAdmin = ctx.Org.Team.IsOwnerTeam() || ctx.Org.Team.Authorize >= models.ACCESS_MODE_ADMIN
- ctx.Data["IsTeamAdmin"] = ctx.Org.IsTeamAdmin
- if requireTeamAdmin && !ctx.Org.IsTeamAdmin {
- ctx.Handle(404, "OrgAssignment", err)
+ c.Org.IsTeamAdmin = c.Org.Team.IsOwnerTeam() || c.Org.Team.Authorize >= models.ACCESS_MODE_ADMIN
+ c.Data["IsTeamAdmin"] = c.Org.IsTeamAdmin
+ if requireTeamAdmin && !c.Org.IsTeamAdmin {
+ c.Handle(404, "OrgAssignment", err)
return
}
}
}
func OrgAssignment(args ...bool) macaron.Handler {
- return func(ctx *Context) {
- HandleOrgAssignment(ctx, args...)
+ return func(c *Context) {
+ HandleOrgAssignment(c, args...)
}
}
diff --git a/pkg/context/repo.go b/pkg/context/repo.go
index 7920b27b..761b8af0 100644
--- a/pkg/context/repo.go
+++ b/pkg/context/repo.go
@@ -108,7 +108,7 @@ func (r *Repository) PullRequestURL(baseBranch, headBranch string) string {
// [0]: issues, [1]: wiki
func RepoAssignment(pages ...bool) macaron.Handler {
- return func(ctx *Context) {
+ return func(c *Context) {
var (
owner *models.User
err error
@@ -123,53 +123,53 @@ func RepoAssignment(pages ...bool) macaron.Handler {
isWikiPage = pages[1]
}
- ownerName := ctx.Params(":username")
- repoName := strings.TrimSuffix(ctx.Params(":reponame"), ".git")
- refName := ctx.Params(":branchname")
+ ownerName := c.Params(":username")
+ repoName := strings.TrimSuffix(c.Params(":reponame"), ".git")
+ refName := c.Params(":branchname")
if len(refName) == 0 {
- refName = ctx.Params(":path")
+ refName = c.Params(":path")
}
// Check if the user is the same as the repository owner
- if ctx.IsLogged && ctx.User.LowerName == strings.ToLower(ownerName) {
- owner = ctx.User
+ if c.IsLogged && c.User.LowerName == strings.ToLower(ownerName) {
+ owner = c.User
} else {
owner, err = models.GetUserByName(ownerName)
if err != nil {
- ctx.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err)
+ c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err)
return
}
}
- ctx.Repo.Owner = owner
- ctx.Data["Username"] = ctx.Repo.Owner.Name
+ c.Repo.Owner = owner
+ c.Data["Username"] = c.Repo.Owner.Name
repo, err := models.GetRepositoryByName(owner.ID, repoName)
if err != nil {
- ctx.NotFoundOrServerError("GetRepositoryByName", errors.IsRepoNotExist, err)
+ c.NotFoundOrServerError("GetRepositoryByName", errors.IsRepoNotExist, err)
return
}
- ctx.Repo.Repository = repo
- ctx.Data["RepoName"] = ctx.Repo.Repository.Name
- ctx.Data["IsBareRepo"] = ctx.Repo.Repository.IsBare
- ctx.Repo.RepoLink = repo.Link()
- ctx.Data["RepoLink"] = ctx.Repo.RepoLink
- ctx.Data["RepoRelPath"] = ctx.Repo.Owner.Name + "/" + ctx.Repo.Repository.Name
+ c.Repo.Repository = repo
+ c.Data["RepoName"] = c.Repo.Repository.Name
+ c.Data["IsBareRepo"] = c.Repo.Repository.IsBare
+ c.Repo.RepoLink = repo.Link()
+ c.Data["RepoLink"] = c.Repo.RepoLink
+ c.Data["RepoRelPath"] = c.Repo.Owner.Name + "/" + c.Repo.Repository.Name
// Admin has super access.
- if ctx.IsLogged && ctx.User.IsAdmin {
- ctx.Repo.AccessMode = models.ACCESS_MODE_OWNER
+ if c.IsLogged && c.User.IsAdmin {
+ c.Repo.AccessMode = models.ACCESS_MODE_OWNER
} else {
- mode, err := models.AccessLevel(ctx.UserID(), repo)
+ mode, err := models.AccessLevel(c.UserID(), repo)
if err != nil {
- ctx.ServerError("AccessLevel", err)
+ c.ServerError("AccessLevel", err)
return
}
- ctx.Repo.AccessMode = mode
+ c.Repo.AccessMode = mode
}
// Check access
- if ctx.Repo.AccessMode == models.ACCESS_MODE_NONE {
+ if c.Repo.AccessMode == models.ACCESS_MODE_NONE {
// Redirect to any accessible page if not yet on it
if repo.IsPartialPublic() &&
(!(isIssuesPage || isWikiPage) ||
@@ -177,11 +177,11 @@ func RepoAssignment(pages ...bool) macaron.Handler {
(isWikiPage && !repo.CanGuestViewWiki())) {
switch {
case repo.CanGuestViewIssues():
- ctx.Redirect(repo.Link() + "/issues")
+ c.Redirect(repo.Link() + "/issues")
case repo.CanGuestViewWiki():
- ctx.Redirect(repo.Link() + "/wiki")
+ c.Redirect(repo.Link() + "/wiki")
default:
- ctx.NotFound()
+ c.NotFound()
}
return
}
@@ -190,92 +190,92 @@ func RepoAssignment(pages ...bool) macaron.Handler {
if !repo.IsPartialPublic() ||
(isIssuesPage && !repo.CanGuestViewIssues()) ||
(isWikiPage && !repo.CanGuestViewWiki()) {
- ctx.NotFound()
+ c.NotFound()
return
}
- ctx.Repo.Repository.EnableIssues = repo.CanGuestViewIssues()
- ctx.Repo.Repository.EnableWiki = repo.CanGuestViewWiki()
+ c.Repo.Repository.EnableIssues = repo.CanGuestViewIssues()
+ c.Repo.Repository.EnableWiki = repo.CanGuestViewWiki()
}
if repo.IsMirror {
- ctx.Repo.Mirror, err = models.GetMirrorByRepoID(repo.ID)
+ c.Repo.Mirror, err = models.GetMirrorByRepoID(repo.ID)
if err != nil {
- ctx.Handle(500, "GetMirror", err)
+ c.ServerError("GetMirror", err)
return
}
- ctx.Data["MirrorEnablePrune"] = ctx.Repo.Mirror.EnablePrune
- ctx.Data["MirrorInterval"] = ctx.Repo.Mirror.Interval
- ctx.Data["Mirror"] = ctx.Repo.Mirror
+ c.Data["MirrorEnablePrune"] = c.Repo.Mirror.EnablePrune
+ c.Data["MirrorInterval"] = c.Repo.Mirror.Interval
+ c.Data["Mirror"] = c.Repo.Mirror
}
gitRepo, err := git.OpenRepository(models.RepoPath(ownerName, repoName))
if err != nil {
- ctx.Handle(500, "RepoAssignment Invalid repo "+models.RepoPath(ownerName, repoName), err)
+ c.ServerError(fmt.Sprintf("RepoAssignment Invalid repo '%s'", c.Repo.Repository.RepoPath()), err)
return
}
- ctx.Repo.GitRepo = gitRepo
+ c.Repo.GitRepo = gitRepo
- tags, err := ctx.Repo.GitRepo.GetTags()
+ tags, err := c.Repo.GitRepo.GetTags()
if err != nil {
- ctx.Handle(500, fmt.Sprintf("GetTags '%s'", ctx.Repo.Repository.RepoPath()), err)
+ c.ServerError(fmt.Sprintf("GetTags '%s'", c.Repo.Repository.RepoPath()), err)
return
}
- ctx.Data["Tags"] = tags
- ctx.Repo.Repository.NumTags = len(tags)
-
- ctx.Data["Title"] = owner.Name + "/" + repo.Name
- ctx.Data["Repository"] = repo
- ctx.Data["Owner"] = ctx.Repo.Repository.Owner
- ctx.Data["IsRepositoryOwner"] = ctx.Repo.IsOwner()
- ctx.Data["IsRepositoryAdmin"] = ctx.Repo.IsAdmin()
- ctx.Data["IsRepositoryWriter"] = ctx.Repo.IsWriter()
-
- ctx.Data["DisableSSH"] = setting.SSH.Disabled
- ctx.Data["DisableHTTP"] = setting.Repository.DisableHTTPGit
- ctx.Data["CloneLink"] = repo.CloneLink()
- ctx.Data["WikiCloneLink"] = repo.WikiCloneLink()
-
- if ctx.IsLogged {
- ctx.Data["IsWatchingRepo"] = models.IsWatching(ctx.User.ID, repo.ID)
- ctx.Data["IsStaringRepo"] = models.IsStaring(ctx.User.ID, repo.ID)
+ c.Data["Tags"] = tags
+ c.Repo.Repository.NumTags = len(tags)
+
+ c.Data["Title"] = owner.Name + "/" + repo.Name
+ c.Data["Repository"] = repo
+ c.Data["Owner"] = c.Repo.Repository.Owner
+ c.Data["IsRepositoryOwner"] = c.Repo.IsOwner()
+ c.Data["IsRepositoryAdmin"] = c.Repo.IsAdmin()
+ c.Data["IsRepositoryWriter"] = c.Repo.IsWriter()
+
+ c.Data["DisableSSH"] = setting.SSH.Disabled
+ c.Data["DisableHTTP"] = setting.Repository.DisableHTTPGit
+ c.Data["CloneLink"] = repo.CloneLink()
+ c.Data["WikiCloneLink"] = repo.WikiCloneLink()
+
+ if c.IsLogged {
+ c.Data["IsWatchingRepo"] = models.IsWatching(c.User.ID, repo.ID)
+ c.Data["IsStaringRepo"] = models.IsStaring(c.User.ID, repo.ID)
}
// repo is bare and display enable
- if ctx.Repo.Repository.IsBare {
+ if c.Repo.Repository.IsBare {
return
}
- ctx.Data["TagName"] = ctx.Repo.TagName
- brs, err := ctx.Repo.GitRepo.GetBranches()
+ c.Data["TagName"] = c.Repo.TagName
+ brs, err := c.Repo.GitRepo.GetBranches()
if err != nil {
- ctx.Handle(500, "GetBranches", err)
+ c.ServerError("GetBranches", err)
return
}
- ctx.Data["Branches"] = brs
- ctx.Data["BrancheCount"] = len(brs)
+ c.Data["Branches"] = brs
+ c.Data["BrancheCount"] = len(brs)
// If not branch selected, try default one.
// If default branch doesn't exists, fall back to some other branch.
- if len(ctx.Repo.BranchName) == 0 {
- if len(ctx.Repo.Repository.DefaultBranch) > 0 && gitRepo.IsBranchExist(ctx.Repo.Repository.DefaultBranch) {
- ctx.Repo.BranchName = ctx.Repo.Repository.DefaultBranch
+ if len(c.Repo.BranchName) == 0 {
+ if len(c.Repo.Repository.DefaultBranch) > 0 && gitRepo.IsBranchExist(c.Repo.Repository.DefaultBranch) {
+ c.Repo.BranchName = c.Repo.Repository.DefaultBranch
} else if len(brs) > 0 {
- ctx.Repo.BranchName = brs[0]
+ c.Repo.BranchName = brs[0]
}
}
- ctx.Data["BranchName"] = ctx.Repo.BranchName
- ctx.Data["CommitID"] = ctx.Repo.CommitID
+ c.Data["BranchName"] = c.Repo.BranchName
+ c.Data["CommitID"] = c.Repo.CommitID
- ctx.Data["IsGuest"] = !ctx.Repo.HasAccess()
+ c.Data["IsGuest"] = !c.Repo.HasAccess()
}
}
// RepoRef handles repository reference name including those contain `/`.
func RepoRef() macaron.Handler {
- return func(ctx *Context) {
+ return func(c *Context) {
// Empty repository does not have reference information.
- if ctx.Repo.Repository.IsBare {
+ if c.Repo.Repository.IsBare {
return
}
@@ -285,44 +285,44 @@ func RepoRef() macaron.Handler {
)
// For API calls.
- if ctx.Repo.GitRepo == nil {
- repoPath := models.RepoPath(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)
- ctx.Repo.GitRepo, err = git.OpenRepository(repoPath)
+ if c.Repo.GitRepo == nil {
+ repoPath := models.RepoPath(c.Repo.Owner.Name, c.Repo.Repository.Name)
+ c.Repo.GitRepo, err = git.OpenRepository(repoPath)
if err != nil {
- ctx.Handle(500, "RepoRef Invalid repo "+repoPath, err)
+ c.Handle(500, "RepoRef Invalid repo "+repoPath, err)
return
}
}
// Get default branch.
- if len(ctx.Params("*")) == 0 {
- refName = ctx.Repo.Repository.DefaultBranch
- if !ctx.Repo.GitRepo.IsBranchExist(refName) {
- brs, err := ctx.Repo.GitRepo.GetBranches()
+ if len(c.Params("*")) == 0 {
+ refName = c.Repo.Repository.DefaultBranch
+ if !c.Repo.GitRepo.IsBranchExist(refName) {
+ brs, err := c.Repo.GitRepo.GetBranches()
if err != nil {
- ctx.Handle(500, "GetBranches", err)
+ c.Handle(500, "GetBranches", err)
return
}
refName = brs[0]
}
- ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(refName)
+ c.Repo.Commit, err = c.Repo.GitRepo.GetBranchCommit(refName)
if err != nil {
- ctx.Handle(500, "GetBranchCommit", err)
+ c.Handle(500, "GetBranchCommit", err)
return
}
- ctx.Repo.CommitID = ctx.Repo.Commit.ID.String()
- ctx.Repo.IsViewBranch = true
+ c.Repo.CommitID = c.Repo.Commit.ID.String()
+ c.Repo.IsViewBranch = true
} else {
hasMatched := false
- parts := strings.Split(ctx.Params("*"), "/")
+ parts := strings.Split(c.Params("*"), "/")
for i, part := range parts {
refName = strings.TrimPrefix(refName+"/"+part, "/")
- if ctx.Repo.GitRepo.IsBranchExist(refName) ||
- ctx.Repo.GitRepo.IsTagExist(refName) {
+ if c.Repo.GitRepo.IsBranchExist(refName) ||
+ c.Repo.GitRepo.IsTagExist(refName) {
if i < len(parts)-1 {
- ctx.Repo.TreePath = strings.Join(parts[i+1:], "/")
+ c.Repo.TreePath = strings.Join(parts[i+1:], "/")
}
hasMatched = true
break
@@ -330,97 +330,97 @@ func RepoRef() macaron.Handler {
}
if !hasMatched && len(parts[0]) == 40 {
refName = parts[0]
- ctx.Repo.TreePath = strings.Join(parts[1:], "/")
+ c.Repo.TreePath = strings.Join(parts[1:], "/")
}
- if ctx.Repo.GitRepo.IsBranchExist(refName) {
- ctx.Repo.IsViewBranch = true
+ if c.Repo.GitRepo.IsBranchExist(refName) {
+ c.Repo.IsViewBranch = true
- ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(refName)
+ c.Repo.Commit, err = c.Repo.GitRepo.GetBranchCommit(refName)
if err != nil {
- ctx.Handle(500, "GetBranchCommit", err)
+ c.Handle(500, "GetBranchCommit", err)
return
}
- ctx.Repo.CommitID = ctx.Repo.Commit.ID.String()
+ c.Repo.CommitID = c.Repo.Commit.ID.String()
- } else if ctx.Repo.GitRepo.IsTagExist(refName) {
- ctx.Repo.IsViewTag = true
- ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetTagCommit(refName)
+ } else if c.Repo.GitRepo.IsTagExist(refName) {
+ c.Repo.IsViewTag = true
+ c.Repo.Commit, err = c.Repo.GitRepo.GetTagCommit(refName)
if err != nil {
- ctx.Handle(500, "GetTagCommit", err)
+ c.Handle(500, "GetTagCommit", err)
return
}
- ctx.Repo.CommitID = ctx.Repo.Commit.ID.String()
+ c.Repo.CommitID = c.Repo.Commit.ID.String()
} else if len(refName) == 40 {
- ctx.Repo.IsViewCommit = true
- ctx.Repo.CommitID = refName
+ c.Repo.IsViewCommit = true
+ c.Repo.CommitID = refName
- ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetCommit(refName)
+ c.Repo.Commit, err = c.Repo.GitRepo.GetCommit(refName)
if err != nil {
- ctx.NotFound()
+ c.NotFound()
return
}
} else {
- ctx.Handle(404, "RepoRef invalid repo", fmt.Errorf("branch or tag not exist: %s", refName))
+ c.Handle(404, "RepoRef invalid repo", fmt.Errorf("branch or tag not exist: %s", refName))
return
}
}
- ctx.Repo.BranchName = refName
- ctx.Data["BranchName"] = ctx.Repo.BranchName
- ctx.Data["CommitID"] = ctx.Repo.CommitID
- ctx.Data["TreePath"] = ctx.Repo.TreePath
- ctx.Data["IsViewBranch"] = ctx.Repo.IsViewBranch
- ctx.Data["IsViewTag"] = ctx.Repo.IsViewTag
- ctx.Data["IsViewCommit"] = ctx.Repo.IsViewCommit
+ c.Repo.BranchName = refName
+ c.Data["BranchName"] = c.Repo.BranchName
+ c.Data["CommitID"] = c.Repo.CommitID
+ c.Data["TreePath"] = c.Repo.TreePath
+ c.Data["IsViewBranch"] = c.Repo.IsViewBranch
+ c.Data["IsViewTag"] = c.Repo.IsViewTag
+ c.Data["IsViewCommit"] = c.Repo.IsViewCommit
// People who have push access or have fored repository can propose a new pull request.
- if ctx.Repo.IsWriter() || (ctx.IsLogged && ctx.User.HasForkedRepo(ctx.Repo.Repository.ID)) {
+ if c.Repo.IsWriter() || (c.IsLogged && c.User.HasForkedRepo(c.Repo.Repository.ID)) {
// Pull request is allowed if this is a fork repository
// and base repository accepts pull requests.
- if ctx.Repo.Repository.BaseRepo != nil {
- if ctx.Repo.Repository.BaseRepo.AllowsPulls() {
- ctx.Repo.PullRequest.Allowed = true
+ if c.Repo.Repository.BaseRepo != nil {
+ if c.Repo.Repository.BaseRepo.AllowsPulls() {
+ c.Repo.PullRequest.Allowed = true
// In-repository pull requests has higher priority than cross-repository if user is viewing
// base repository and 1) has write access to it 2) has forked it.
- if ctx.Repo.IsWriter() {
- ctx.Data["BaseRepo"] = ctx.Repo.Repository.BaseRepo
- ctx.Repo.PullRequest.BaseRepo = ctx.Repo.Repository.BaseRepo
- ctx.Repo.PullRequest.HeadInfo = ctx.Repo.Owner.Name + ":" + ctx.Repo.BranchName
+ if c.Repo.IsWriter() {
+ c.Data["BaseRepo"] = c.Repo.Repository.BaseRepo
+ c.Repo.PullRequest.BaseRepo = c.Repo.Repository.BaseRepo
+ c.Repo.PullRequest.HeadInfo = c.Repo.Owner.Name + ":" + c.Repo.BranchName
} else {
- ctx.Data["BaseRepo"] = ctx.Repo.Repository
- ctx.Repo.PullRequest.BaseRepo = ctx.Repo.Repository
- ctx.Repo.PullRequest.HeadInfo = ctx.User.Name + ":" + ctx.Repo.BranchName
+ c.Data["BaseRepo"] = c.Repo.Repository
+ c.Repo.PullRequest.BaseRepo = c.Repo.Repository
+ c.Repo.PullRequest.HeadInfo = c.User.Name + ":" + c.Repo.BranchName
}
}
} else {
// Or, this is repository accepts pull requests between branches.
- if ctx.Repo.Repository.AllowsPulls() {
- ctx.Data["BaseRepo"] = ctx.Repo.Repository
- ctx.Repo.PullRequest.BaseRepo = ctx.Repo.Repository
- ctx.Repo.PullRequest.Allowed = true
- ctx.Repo.PullRequest.SameRepo = true
- ctx.Repo.PullRequest.HeadInfo = ctx.Repo.BranchName
+ if c.Repo.Repository.AllowsPulls() {
+ c.Data["BaseRepo"] = c.Repo.Repository
+ c.Repo.PullRequest.BaseRepo = c.Repo.Repository
+ c.Repo.PullRequest.Allowed = true
+ c.Repo.PullRequest.SameRepo = true
+ c.Repo.PullRequest.HeadInfo = c.Repo.BranchName
}
}
}
- ctx.Data["PullRequestCtx"] = ctx.Repo.PullRequest
+ c.Data["PullRequestCtx"] = c.Repo.PullRequest
}
}
func RequireRepoAdmin() macaron.Handler {
- return func(ctx *Context) {
- if !ctx.IsLogged || (!ctx.Repo.IsAdmin() && !ctx.User.IsAdmin) {
- ctx.NotFound()
+ return func(c *Context) {
+ if !c.IsLogged || (!c.Repo.IsAdmin() && !c.User.IsAdmin) {
+ c.NotFound()
return
}
}
}
func RequireRepoWriter() macaron.Handler {
- return func(ctx *Context) {
- if !ctx.IsLogged || (!ctx.Repo.IsWriter() && !ctx.User.IsAdmin) {
- ctx.NotFound()
+ return func(c *Context) {
+ if !c.IsLogged || (!c.Repo.IsWriter() && !c.User.IsAdmin) {
+ c.NotFound()
return
}
}
@@ -428,9 +428,9 @@ func RequireRepoWriter() macaron.Handler {
// GitHookService checks if repository Git hooks service has been enabled.
func GitHookService() macaron.Handler {
- return func(ctx *Context) {
- if !ctx.User.CanEditGitHook() {
- ctx.NotFound()
+ return func(c *Context) {
+ if !c.User.CanEditGitHook() {
+ c.NotFound()
return
}
}