mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Add APIContext
This commit is contained in:
		@@ -105,6 +105,7 @@ There are 5 ways to install Gogs:
 | 
			
		||||
- [Puppet](https://forge.puppetlabs.com/Siteminds/gogs) (IT)
 | 
			
		||||
- [Kanboard](http://kanboard.net/plugin/gogs-webhook) (Project Management)
 | 
			
		||||
- [BearyChat](https://bearychat.com/) (Team Communication)
 | 
			
		||||
- [HiWork](http://www.hiwork.cc/) (Team Communication)
 | 
			
		||||
 | 
			
		||||
### Product Support
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -77,6 +77,7 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自
 | 
			
		||||
- [Puppet](https://forge.puppetlabs.com/Siteminds/gogs)(IT)
 | 
			
		||||
- [Kanboard](http://kanboard.net/plugin/gogs-webhook)(项目管理)
 | 
			
		||||
- [BearyChat](https://bearychat.com/)(团队交流)
 | 
			
		||||
- [HiWork](http://www.hiwork.cc/)(团队交流)
 | 
			
		||||
 | 
			
		||||
### 产品支持
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								modules/context/api.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								modules/context/api.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
// Copyright 2016 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 context
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"gopkg.in/macaron.v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type APIContext struct {
 | 
			
		||||
	*Context
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func APIContexter() macaron.Handler {
 | 
			
		||||
	return func(c *Context) {
 | 
			
		||||
		ctx := &APIContext{
 | 
			
		||||
			Context: c,
 | 
			
		||||
		}
 | 
			
		||||
		c.Map(ctx)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -18,8 +18,6 @@ import (
 | 
			
		||||
	"github.com/go-macaron/session"
 | 
			
		||||
	"gopkg.in/macaron.v1"
 | 
			
		||||
 | 
			
		||||
	"github.com/gogits/git-module"
 | 
			
		||||
 | 
			
		||||
	"github.com/gogits/gogs/models"
 | 
			
		||||
	"github.com/gogits/gogs/modules/auth"
 | 
			
		||||
	"github.com/gogits/gogs/modules/base"
 | 
			
		||||
@@ -27,56 +25,6 @@ import (
 | 
			
		||||
	"github.com/gogits/gogs/modules/setting"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type PullRequest struct {
 | 
			
		||||
	BaseRepo *models.Repository
 | 
			
		||||
	Allowed  bool
 | 
			
		||||
	SameRepo bool
 | 
			
		||||
	HeadInfo string // [<user>:]<branch>
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Repository struct {
 | 
			
		||||
	AccessMode   models.AccessMode
 | 
			
		||||
	IsWatching   bool
 | 
			
		||||
	IsViewBranch bool
 | 
			
		||||
	IsViewTag    bool
 | 
			
		||||
	IsViewCommit bool
 | 
			
		||||
	Repository   *models.Repository
 | 
			
		||||
	Owner        *models.User
 | 
			
		||||
	Commit       *git.Commit
 | 
			
		||||
	Tag          *git.Tag
 | 
			
		||||
	GitRepo      *git.Repository
 | 
			
		||||
	BranchName   string
 | 
			
		||||
	TagName      string
 | 
			
		||||
	TreeName     string
 | 
			
		||||
	CommitID     string
 | 
			
		||||
	RepoLink     string
 | 
			
		||||
	CloneLink    models.CloneLink
 | 
			
		||||
	CommitsCount int64
 | 
			
		||||
	Mirror       *models.Mirror
 | 
			
		||||
 | 
			
		||||
	PullRequest *PullRequest
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsOwner returns true if current user is the owner of repository.
 | 
			
		||||
func (r *Repository) IsOwner() bool {
 | 
			
		||||
	return r.AccessMode >= models.ACCESS_MODE_OWNER
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsAdmin returns true if current user has admin or higher access of repository.
 | 
			
		||||
func (r *Repository) IsAdmin() bool {
 | 
			
		||||
	return r.AccessMode >= models.ACCESS_MODE_ADMIN
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsWriter returns true if current user has write or higher access of repository.
 | 
			
		||||
func (r *Repository) IsWriter() bool {
 | 
			
		||||
	return r.AccessMode >= models.ACCESS_MODE_WRITE
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// HasAccess returns true if the current user has at least read access for this repository
 | 
			
		||||
func (r *Repository) HasAccess() bool {
 | 
			
		||||
	return r.AccessMode >= models.ACCESS_MODE_READ
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Context represents context of a request.
 | 
			
		||||
type Context struct {
 | 
			
		||||
	*macaron.Context
 | 
			
		||||
@@ -90,17 +38,7 @@ type Context struct {
 | 
			
		||||
	IsBasicAuth bool
 | 
			
		||||
 | 
			
		||||
	Repo *Repository
 | 
			
		||||
 | 
			
		||||
	Org struct {
 | 
			
		||||
		IsOwner      bool
 | 
			
		||||
		IsMember     bool
 | 
			
		||||
		IsTeamMember bool // Is member of team.
 | 
			
		||||
		IsTeamAdmin  bool // In owner team or team that has admin permission level.
 | 
			
		||||
		Organization *models.User
 | 
			
		||||
		OrgLink      string
 | 
			
		||||
 | 
			
		||||
		Team *models.Team
 | 
			
		||||
	}
 | 
			
		||||
	Org  *Organization
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// HasError returns true if error occurs in form validation.
 | 
			
		||||
@@ -223,6 +161,7 @@ func Contexter() macaron.Handler {
 | 
			
		||||
			Repo: &Repository{
 | 
			
		||||
				PullRequest: &PullRequest{},
 | 
			
		||||
			},
 | 
			
		||||
			Org: &Organization{},
 | 
			
		||||
		}
 | 
			
		||||
		// Compute current URL for real-time change language.
 | 
			
		||||
		ctx.Data["Link"] = setting.AppSubUrl + strings.TrimSuffix(ctx.Req.URL.Path, "/")
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,17 @@ import (
 | 
			
		||||
	"github.com/gogits/gogs/modules/setting"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Organization struct {
 | 
			
		||||
	IsOwner      bool
 | 
			
		||||
	IsMember     bool
 | 
			
		||||
	IsTeamMember bool // Is member of team.
 | 
			
		||||
	IsTeamAdmin  bool // In owner team or team that has admin permission level.
 | 
			
		||||
	Organization *models.User
 | 
			
		||||
	OrgLink      string
 | 
			
		||||
 | 
			
		||||
	Team *models.Team
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func HandleOrgAssignment(ctx *Context, args ...bool) {
 | 
			
		||||
	var (
 | 
			
		||||
		requireMember     bool
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,56 @@ import (
 | 
			
		||||
	"github.com/gogits/gogs/modules/setting"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type PullRequest struct {
 | 
			
		||||
	BaseRepo *models.Repository
 | 
			
		||||
	Allowed  bool
 | 
			
		||||
	SameRepo bool
 | 
			
		||||
	HeadInfo string // [<user>:]<branch>
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Repository struct {
 | 
			
		||||
	AccessMode   models.AccessMode
 | 
			
		||||
	IsWatching   bool
 | 
			
		||||
	IsViewBranch bool
 | 
			
		||||
	IsViewTag    bool
 | 
			
		||||
	IsViewCommit bool
 | 
			
		||||
	Repository   *models.Repository
 | 
			
		||||
	Owner        *models.User
 | 
			
		||||
	Commit       *git.Commit
 | 
			
		||||
	Tag          *git.Tag
 | 
			
		||||
	GitRepo      *git.Repository
 | 
			
		||||
	BranchName   string
 | 
			
		||||
	TagName      string
 | 
			
		||||
	TreeName     string
 | 
			
		||||
	CommitID     string
 | 
			
		||||
	RepoLink     string
 | 
			
		||||
	CloneLink    models.CloneLink
 | 
			
		||||
	CommitsCount int64
 | 
			
		||||
	Mirror       *models.Mirror
 | 
			
		||||
 | 
			
		||||
	PullRequest *PullRequest
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsOwner returns true if current user is the owner of repository.
 | 
			
		||||
func (r *Repository) IsOwner() bool {
 | 
			
		||||
	return r.AccessMode >= models.ACCESS_MODE_OWNER
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsAdmin returns true if current user has admin or higher access of repository.
 | 
			
		||||
func (r *Repository) IsAdmin() bool {
 | 
			
		||||
	return r.AccessMode >= models.ACCESS_MODE_ADMIN
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsWriter returns true if current user has write or higher access of repository.
 | 
			
		||||
func (r *Repository) IsWriter() bool {
 | 
			
		||||
	return r.AccessMode >= models.ACCESS_MODE_WRITE
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// HasAccess returns true if the current user has at least read access for this repository
 | 
			
		||||
func (r *Repository) HasAccess() bool {
 | 
			
		||||
	return r.AccessMode >= models.ACCESS_MODE_READ
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func RetrieveBaseRepo(ctx *Context, repo *models.Repository) {
 | 
			
		||||
	// Non-fork repository will not return error in this method.
 | 
			
		||||
	if err := repo.GetBaseRepo(); err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -2376,6 +2376,9 @@ footer .container .links > *:first-child {
 | 
			
		||||
.user.settings .email.list .item:not(:first-child) .button {
 | 
			
		||||
  margin-top: -10px;
 | 
			
		||||
}
 | 
			
		||||
.user.profile .ui.card #profile-avatar {
 | 
			
		||||
  height: 290px;
 | 
			
		||||
}
 | 
			
		||||
.user.profile .ui.card .username {
 | 
			
		||||
  display: block;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,9 @@
 | 
			
		||||
 | 
			
		||||
	&.profile {
 | 
			
		||||
		.ui.card {
 | 
			
		||||
			#profile-avatar {
 | 
			
		||||
				height: 290px;
 | 
			
		||||
			}
 | 
			
		||||
			.username {
 | 
			
		||||
				display: block;
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user