* ui: show 'owner' tag for real owner
Signed-off-by: a101211279
<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>
tags/v1.13.0
@@ -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) |
@@ -979,8 +979,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 | |||
} | |||
@@ -29,7 +29,7 @@ | |||
</div> | |||
<div class="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="item tag"> | |||
{{$.i18n.Tr "repo.issues.poster"}} | |||
</div> |