From f2b2279547137e2d25c97f4f0571246837dd3aaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Tue, 30 Jun 2020 10:43:36 +0200 Subject: [PATCH] Fix page reordering on root node When operating on root node, the parentID is 0; the page is not found so it fails. --- compose/service/page.go | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/compose/service/page.go b/compose/service/page.go index c94d5a197..43d8b3fe7 100644 --- a/compose/service/page.go +++ b/compose/service/page.go @@ -236,23 +236,26 @@ func (svc page) Reorder(namespaceID, parentID uint64, pageIDs []uint64) (err err return err } - // Reordering on root mode -- check if user can create pages. - if parentID == 0 && !svc.ac.CanCreatePage(svc.ctx, ns) { - return PageErrNotAllowedToUpdate() - } + if parentID == 0 { + // Reordering on root mode -- check if user can create pages. + if !svc.ac.CanCreatePage(svc.ctx, ns) { + return PageErrNotAllowedToUpdate() + } + } else { + // Validate permissions on parent page + if p, err = svc.pageRepo.FindByID(ns.ID, parentID); err != nil { + if repository.ErrPageNotFound.Eq(err) { + return PageErrNotFound() + } - if p, err = svc.pageRepo.FindByID(ns.ID, parentID); err != nil { - if repository.ErrPageNotFound.Eq(err) { - return PageErrNotFound() + return } - return - } + aProps.setPage(p) - aProps.setPage(p) - - if !svc.ac.CanUpdatePage(svc.ctx, p) { - return PageErrNotAllowedToUpdate() + if !svc.ac.CanUpdatePage(svc.ctx, p) { + return PageErrNotAllowedToUpdate() + } } return svc.pageRepo.Reorder(namespaceID, parentID, pageIDs)