ui: show 'owner' tag for real owner (#13689)
* ui: show 'owner' tag for real owner Signed-off-by: a1012112796 <1012112796@qq.com> * Update custom/conf/app.example.ini * simplify logic fix logic fix a small bug about original author * remove system manager tag Co-authored-by: techknowlogick <techknowlogick@gitea.io> Co-authored-by: Lauris BH <lauris@nix.lv>
This commit is contained in:
		
							parent
							
								
									48c9865fce
								
							
						
					
					
						commit
						1e5247d424
					
				
					 3 changed files with 43 additions and 3 deletions
				
			
		|  | @ -271,6 +271,27 @@ func getUserRepoPermission(e Engine, repo *Repository, user *User) (perm Permiss | |||
| 	return | ||||
| } | ||||
| 
 | ||||
| // IsUserRealRepoAdmin check if this user is real repo admin
 | ||||
| func IsUserRealRepoAdmin(repo *Repository, user *User) (bool, error) { | ||||
| 	if repo.OwnerID == user.ID { | ||||
| 		return true, nil | ||||
| 	} | ||||
| 
 | ||||
| 	sess := x.NewSession() | ||||
| 	defer sess.Close() | ||||
| 
 | ||||
| 	if err := repo.getOwner(sess); err != nil { | ||||
| 		return false, err | ||||
| 	} | ||||
| 
 | ||||
| 	accessMode, err := accessLevel(sess, user, repo) | ||||
| 	if err != nil { | ||||
| 		return false, err | ||||
| 	} | ||||
| 
 | ||||
| 	return accessMode >= AccessModeAdmin, nil | ||||
| } | ||||
| 
 | ||||
| // IsUserRepoAdmin return true if user has admin right of a repo
 | ||||
| func IsUserRepoAdmin(repo *Repository, user *User) (bool, error) { | ||||
| 	return isUserRepoAdmin(x, repo, user) | ||||
|  |  | |||
|  | @ -980,8 +980,27 @@ func commentTag(repo *models.Repository, poster *models.User, issue *models.Issu | |||
| 		return models.CommentTagNone, err | ||||
| 	} | ||||
| 	if perm.IsOwner() { | ||||
| 		return models.CommentTagOwner, nil | ||||
| 	} else if perm.CanWrite(models.UnitTypeCode) { | ||||
| 		if !poster.IsAdmin { | ||||
| 			return models.CommentTagOwner, nil | ||||
| 		} | ||||
| 
 | ||||
| 		ok, err := models.IsUserRealRepoAdmin(repo, poster) | ||||
| 		if err != nil { | ||||
| 			return models.CommentTagNone, err | ||||
| 		} | ||||
| 
 | ||||
| 		if ok { | ||||
| 			return models.CommentTagOwner, nil | ||||
| 		} | ||||
| 
 | ||||
| 		if ok, err = repo.IsCollaborator(poster.ID); ok && err == nil { | ||||
| 			return models.CommentTagWriter, nil | ||||
| 		} | ||||
| 
 | ||||
| 		return models.CommentTagNone, err | ||||
| 	} | ||||
| 
 | ||||
| 	if perm.CanWrite(models.UnitTypeCode) { | ||||
| 		return models.CommentTagWriter, nil | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -43,7 +43,7 @@ | |||
| 					</div> | ||||
| 					<div class="comment-header-right actions df ac"> | ||||
| 						{{if not $.Repository.IsArchived}} | ||||
| 							{{if eq .PosterID .Issue.PosterID }} | ||||
| 							{{if or (and (eq .PosterID .Issue.PosterID) (eq .Issue.OriginalAuthorID 0)) (eq .Issue.OriginalAuthorID .OriginalAuthorID) }} | ||||
| 								<div class="ui basic label"> | ||||
| 									{{$.i18n.Tr "repo.issues.poster"}} | ||||
| 								</div> | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue