mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 20:20:34 +00: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) | - [Puppet](https://forge.puppetlabs.com/Siteminds/gogs) (IT) | ||||||
| - [Kanboard](http://kanboard.net/plugin/gogs-webhook) (Project Management) | - [Kanboard](http://kanboard.net/plugin/gogs-webhook) (Project Management) | ||||||
| - [BearyChat](https://bearychat.com/) (Team Communication) | - [BearyChat](https://bearychat.com/) (Team Communication) | ||||||
|  | - [HiWork](http://www.hiwork.cc/) (Team Communication) | ||||||
|  |  | ||||||
| ### Product Support | ### Product Support | ||||||
|  |  | ||||||
|   | |||||||
| @@ -77,6 +77,7 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自 | |||||||
| - [Puppet](https://forge.puppetlabs.com/Siteminds/gogs)(IT) | - [Puppet](https://forge.puppetlabs.com/Siteminds/gogs)(IT) | ||||||
| - [Kanboard](http://kanboard.net/plugin/gogs-webhook)(项目管理) | - [Kanboard](http://kanboard.net/plugin/gogs-webhook)(项目管理) | ||||||
| - [BearyChat](https://bearychat.com/)(团队交流) | - [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" | 	"github.com/go-macaron/session" | ||||||
| 	"gopkg.in/macaron.v1" | 	"gopkg.in/macaron.v1" | ||||||
|  |  | ||||||
| 	"github.com/gogits/git-module" |  | ||||||
|  |  | ||||||
| 	"github.com/gogits/gogs/models" | 	"github.com/gogits/gogs/models" | ||||||
| 	"github.com/gogits/gogs/modules/auth" | 	"github.com/gogits/gogs/modules/auth" | ||||||
| 	"github.com/gogits/gogs/modules/base" | 	"github.com/gogits/gogs/modules/base" | ||||||
| @@ -27,56 +25,6 @@ import ( | |||||||
| 	"github.com/gogits/gogs/modules/setting" | 	"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. | // Context represents context of a request. | ||||||
| type Context struct { | type Context struct { | ||||||
| 	*macaron.Context | 	*macaron.Context | ||||||
| @@ -90,17 +38,7 @@ type Context struct { | |||||||
| 	IsBasicAuth bool | 	IsBasicAuth bool | ||||||
|  |  | ||||||
| 	Repo *Repository | 	Repo *Repository | ||||||
|  | 	Org  *Organization | ||||||
| 	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 |  | ||||||
| 	} |  | ||||||
| } | } | ||||||
|  |  | ||||||
| // HasError returns true if error occurs in form validation. | // HasError returns true if error occurs in form validation. | ||||||
| @@ -223,6 +161,7 @@ func Contexter() macaron.Handler { | |||||||
| 			Repo: &Repository{ | 			Repo: &Repository{ | ||||||
| 				PullRequest: &PullRequest{}, | 				PullRequest: &PullRequest{}, | ||||||
| 			}, | 			}, | ||||||
|  | 			Org: &Organization{}, | ||||||
| 		} | 		} | ||||||
| 		// Compute current URL for real-time change language. | 		// Compute current URL for real-time change language. | ||||||
| 		ctx.Data["Link"] = setting.AppSubUrl + strings.TrimSuffix(ctx.Req.URL.Path, "/") | 		ctx.Data["Link"] = setting.AppSubUrl + strings.TrimSuffix(ctx.Req.URL.Path, "/") | ||||||
|   | |||||||
| @@ -13,6 +13,17 @@ import ( | |||||||
| 	"github.com/gogits/gogs/modules/setting" | 	"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) { | func HandleOrgAssignment(ctx *Context, args ...bool) { | ||||||
| 	var ( | 	var ( | ||||||
| 		requireMember     bool | 		requireMember     bool | ||||||
|   | |||||||
| @@ -18,6 +18,56 @@ import ( | |||||||
| 	"github.com/gogits/gogs/modules/setting" | 	"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) { | func RetrieveBaseRepo(ctx *Context, repo *models.Repository) { | ||||||
| 	// Non-fork repository will not return error in this method. | 	// Non-fork repository will not return error in this method. | ||||||
| 	if err := repo.GetBaseRepo(); err != nil { | 	if err := repo.GetBaseRepo(); err != nil { | ||||||
|   | |||||||
| @@ -2376,6 +2376,9 @@ footer .container .links > *:first-child { | |||||||
| .user.settings .email.list .item:not(:first-child) .button { | .user.settings .email.list .item:not(:first-child) .button { | ||||||
|   margin-top: -10px; |   margin-top: -10px; | ||||||
| } | } | ||||||
|  | .user.profile .ui.card #profile-avatar { | ||||||
|  |   height: 290px; | ||||||
|  | } | ||||||
| .user.profile .ui.card .username { | .user.profile .ui.card .username { | ||||||
|   display: block; |   display: block; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -23,6 +23,9 @@ | |||||||
|  |  | ||||||
| 	&.profile { | 	&.profile { | ||||||
| 		.ui.card { | 		.ui.card { | ||||||
|  | 			#profile-avatar { | ||||||
|  | 				height: 290px; | ||||||
|  | 			} | ||||||
| 			.username { | 			.username { | ||||||
| 				display: block; | 				display: block; | ||||||
| 			} | 			} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user