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

appview: fix pull close/reopen permissions

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li 0e8ec37e a2586d47

verified
Changed files
+6 -2
appview
+4 -2
appview/pulls/pulls.go
···
// auth filter: only owner or collaborators can close
roles := f.RolesInRepo(user)
isCollaborator := roles.IsCollaborator()
isPullAuthor := user.Did == pull.OwnerDid
-
isCloseAllowed := isCollaborator || isPullAuthor
if !isCloseAllowed {
log.Println("failed to close pull")
s.pages.Notice(w, "pull-close", "You are unauthorized to close this pull.")
···
// auth filter: only owner or collaborators can close
roles := f.RolesInRepo(user)
isCollaborator := roles.IsCollaborator()
isPullAuthor := user.Did == pull.OwnerDid
-
isCloseAllowed := isCollaborator || isPullAuthor
if !isCloseAllowed {
log.Println("failed to close pull")
s.pages.Notice(w, "pull-close", "You are unauthorized to close this pull.")
···
// auth filter: only owner or collaborators can close
roles := f.RolesInRepo(user)
+
isOwner := roles.IsOwner()
isCollaborator := roles.IsCollaborator()
isPullAuthor := user.Did == pull.OwnerDid
+
isCloseAllowed := isOwner || isCollaborator || isPullAuthor
if !isCloseAllowed {
log.Println("failed to close pull")
s.pages.Notice(w, "pull-close", "You are unauthorized to close this pull.")
···
// auth filter: only owner or collaborators can close
roles := f.RolesInRepo(user)
+
isOwner := roles.IsOwner()
isCollaborator := roles.IsCollaborator()
isPullAuthor := user.Did == pull.OwnerDid
+
isCloseAllowed := isOwner || isCollaborator || isPullAuthor
if !isCloseAllowed {
log.Println("failed to close pull")
s.pages.Notice(w, "pull-close", "You are unauthorized to close this pull.")
+2
appview/pulls/router.go
···
r.Get("/", s.ResubmitPull)
r.Post("/", s.ResubmitPull)
})
r.Post("/close", s.ClosePull)
r.Post("/reopen", s.ReopenPull)
// collaborators only
···
r.Get("/", s.ResubmitPull)
r.Post("/", s.ResubmitPull)
})
+
// permissions here require us to know pull author
+
// it is handled within the route
r.Post("/close", s.ClosePull)
r.Post("/reopen", s.ReopenPull)
// collaborators only