diff --git a/handlers/handlerpageedit.cpp b/handlers/handlerpageedit.cpp index aeb95af..e686d12 100644 --- a/handlers/handlerpageedit.cpp +++ b/handlers/handlerpageedit.cpp @@ -42,7 +42,7 @@ Response HandlerPageEdit::handleRequest(PageDao &pageDao, std::string pagename, return errorResponse("No permission", "You don't have permission to create new pages"); } auto revisiondao = this->database->createRevisionDao(); - auto revision = this->database->createRevisionDao()->getCurrentForPage(pagename); + auto revision = revisiondao->getCurrentForPage(pagename); std::string body; unsigned int current_revision = 0; @@ -51,6 +51,15 @@ Response HandlerPageEdit::handleRequest(PageDao &pageDao, std::string pagename, body = revision->content; current_revision = revision->revision; } + std::string from = r.get("frompage"); + if(!from.empty()) + { + if(!effectivePermissions(from).canRead()) + { + return this->errorResponse("Permission denied", "No access permissions, so you can't use this page as a template"); + } + body = revisiondao->getCurrentForPage(from)->content; + } if(r.getRequestMethod() == "POST") { if(r.post("do") == "submit")