forked from tangled.org/core
Monorepo for Tangled — https://tangled.org

change merge-permissions to repo:push

Changed files
+11 -7
appview
pages
templates
repo
pulls
state
+4
appview/pages/pages.go
···
return slices.Contains(r.Roles, "repo:collaborator")
}
+
func (r RolesInRepo) IsPushAllowed() bool {
+
return slices.Contains(r.Roles, "repo:push")
+
}
+
func (r RepoInfo) OwnerWithAt() string {
if r.OwnerHandle != "" {
return fmt.Sprintf("@%s", r.OwnerHandle)
+6 -6
appview/pages/templates/repo/pulls/pull.html
···
{{ define "repoAfter" }}
{{ $isPullAuthor := and .LoggedInUser (eq .LoggedInUser.Did .Pull.OwnerDid) }}
-
{{ $isRepoCollaborator := .RepoInfo.Roles.IsCollaborator }}
+
{{ $isPushAllowed := .RepoInfo.Roles.IsPushAllowed }}
<section id="comments" class="mt-8 space-y-4 relative">
{{ block "comments" . }} {{ end }}
···
{{ block "alreadyMergedCard" . }} {{ end }}
{{ else if .MergeCheck }}
{{ if .MergeCheck.IsConflicted }}
-
{{ block "isConflictedCard" . }} {{ end }}
+
{{ block "isConflictedCard" $ }} {{ end }}
{{ else }}
-
{{ block "noConflictsCard" . }} {{ end }}
+
{{ block "noConflictsCard" $ }} {{ end }}
{{ end }}
{{ end }}
</section>
{{ block "newComment" . }} {{ end }}
-
{{ if and (or $isPullAuthor $isRepoCollaborator) (not .Pull.State.IsMerged) }}
+
{{ if and (or $isPullAuthor $isPushAllowed) (not .Pull.State.IsMerged) }}
{{ $action := "close" }}
{{ $icon := "circle-x" }}
{{ $hoverColor := "red" }}
···
{{ define "noConflictsCard" }}
-
{{ $isRepoCollaborator := .RepoInfo.Roles.IsCollaborator }}
+
{{ $isPushAllowed := .RepoInfo.Roles.IsPushAllowed }}
<div
id="merge-status-card"
class="rounded relative border bg-green-50 border-green-200 p-4">
···
</div>
<div class="mt-4 flex items-center gap-2">
-
{{ if $isRepoCollaborator }}
+
{{ if $isPushAllowed }}
<button
class="btn flex items-center gap-2"
hx-post="/{{ .RepoInfo.FullName }}/pulls/{{ .Pull.PullId }}/merge"
+1 -1
appview/state/router.go
···
r.Post("/reopen", s.ReopenPull)
// collaborators only
r.Group(func(r chi.Router) {
-
r.Use(RepoPermissionMiddleware(s, "repo:collaborator"))
+
r.Use(RepoPermissionMiddleware(s, "repo:push"))
r.Post("/merge", s.MergePull)
// maybe lock, etc.
})