From 70c1cdfd8f34472761fe5ec97f0713990c1b4f5b Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 5 Sep 2018 21:23:41 +0300 Subject: Add multi-tenancy support --- mod/page.cxx | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'mod/page.cxx') diff --git a/mod/page.cxx b/mod/page.cxx index 46b5e71..46f4879 100644 --- a/mod/page.cxx +++ b/mod/page.cxx @@ -18,6 +18,7 @@ #include #include +#include #include // build_log_url() using namespace std; @@ -61,11 +62,14 @@ namespace brep s << DIV(ID="header-menu") << DIV(ID="header-menu-body"); + dir_path root (tenant_dir (root_, tenant_)); + for (const auto& m: menu_) { - const string& l (m.link[0] == '/' || m.link.find (':') != string::npos - ? m.link - : root_.string () + m.link); + const string& l ( + m.link[0] == '/' || m.link.find (':') != string::npos + ? m.link + : root.string () + m.link); s << A(HREF=l) << m.label << ~A; } @@ -191,7 +195,8 @@ namespace brep // Propagate search criteria to the package details page. // - << root_ / path (mime_url_encode (name_.string (), false)) + << tenant_dir (root_, tenant_) / + path (mime_url_encode (name_.string (), false)) << query_param_ << ~HREF @@ -221,8 +226,9 @@ namespace brep } else { - assert (root_ != nullptr); - s << A(HREF=*root_ / + assert (root_ != nullptr && tenant_ != nullptr); + + s << A(HREF=tenant_dir (*root_, *tenant_) / dir_path (mime_url_encode (package_->string (), false)) / path (version_)) << version_; @@ -249,7 +255,8 @@ namespace brep << SPAN(CLASS="value") << A << HREF - << root_ << "?q=" << mime_url_encode (project_.string ()) + << tenant_dir (root_, tenant_) << "?q=" + << mime_url_encode (project_.string ()) << ~HREF << project_ << ~A @@ -347,7 +354,10 @@ namespace brep auto print = [&s, this] (const string& t) { - s << A << HREF << root_ << "?q=" << mime_url_encode (t) << ~HREF + s << A + << HREF + << tenant_dir (root_, tenant_) << "?q=" << mime_url_encode (t) + << ~HREF << t << ~A; }; @@ -439,7 +449,7 @@ namespace brep if (r->interface_url) s << A(HREF=*r->interface_url + en) << n << ~A; else if (p->internal ()) - s << A(HREF=root_ / path (en)) << n << ~A; + s << A(HREF=tenant_dir (root_, tenant_) / path (en)) << n << ~A; else // Display the dependency as plain text if no repository URL // available. @@ -586,7 +596,8 @@ namespace brep << SPAN(CLASS="value") << A << HREF - << root_ << "?about#" << mime_url_encode (html_id (name_), false) + << tenant_dir (root_, tenant_) << "?about#" + << mime_url_encode (html_id (name_), false) << ~HREF << name_ << ~A -- cgit v1.1