Browse Source

add default perms for pages

Olivier Massot 4 years ago
parent
commit
59943167bc
1 changed files with 23 additions and 3 deletions
  1. 23 3
      ot_admin/Classes/Controller/SiteController.php

+ 23 - 3
ot_admin/Classes/Controller/SiteController.php

@@ -1456,6 +1456,27 @@ class SiteController extends ActionController
             ->set('subgroup', $mainEditorGroupUid)
             ->execute();
 
+        // setup default owner for the website
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
+        $tsConfig = $queryBuilder->select('TSconfig')
+                                ->from('pages')
+                                ->where($queryBuilder->expr()->eq('uid', $rootUid))
+                                ->execute()
+                                ->fetchColumn(0);
+
+        $tsConfig = trim(preg_replace('/TCEMAIN {[^{]*}/', '', $tsConfig));
+
+        $tsConfig .= "\nTCEMAIN {\n" .
+                     "  permissions.userid = " . $adminUid ."\n" .
+                     "  permissions.groupid = " . $editorsGroupUid . "\n" .
+                     "}";
+
+        $queryBuilder
+            ->update('pages')
+            ->where($queryBuilder->expr()->eq('uid', $rootUid))
+            ->set('TSconfig', $tsConfig)
+            ->execute();
+
         // fetch pages and root page
         $pages = $this->otPageRepository->getAllSitePages($rootUid);
 
@@ -2302,7 +2323,7 @@ class SiteController extends ActionController
             }
         }
 
-        // Try to find if there is the be_user is still in the v8.7 architecture
+        // Try to find if there is a be_user who still is in the v8.7 architecture
         if ($adminUid == null) {
             $organizationId = $this->findOrganizationIdUidFor($rootUid);
 
@@ -2310,12 +2331,11 @@ class SiteController extends ActionController
             $expectedUsername = $extraData['admin']['username'];
 
             $queryBuilder = $this->connectionPool->getQueryBuilderForTable('be_users');
-            $queryBuilder->getRestrictions()->removeAll();
             $adminUid = $queryBuilder
                 ->select('uid')
                 ->from('be_users')
                 ->where($queryBuilder->expr()->eq('username', $queryBuilder->expr()->literal($expectedUsername)))
-                ->andWhere($queryBuilder->expr()->eq('db_mountpoints', $queryBuilder->expr()->literal($rootUid)))
+                ->andWhere($queryBuilder->expr()->eq('db_mountpoints', $rootUid))
                 ->andWhere($queryBuilder->expr()->eq('deleted', 0))
                 ->execute()
                 ->fetchColumn(0);