From efa60f1b95add43fa236cb6c0952e3e1cb0a27ce Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Tue, 4 Aug 2020 15:03:39 +0200
Subject: [PATCH] FEAT #13671 TIME 0:30 Check if docservers already exist

---
 src/app/user/controllers/UserController.php  |  2 +-
 src/core/controllers/InstallerController.php | 12 ++++++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php
index cefb7bf4160..7ea9cb76554 100755
--- a/src/app/user/controllers/UserController.php
+++ b/src/app/user/controllers/UserController.php
@@ -1713,7 +1713,7 @@ class UserController
                     continue;
                 }
 
-                $existingUser = UserModel::getByLogin(['login' => strtolower($user['user_id']), 'select' => ['id', 'status', 'mail']]);
+                $existingUser = UserModel::getByLogin(['login' => strtolower($user['user_id']), 'select' => ['id', 'status']]);
                 if (!empty($existingUser) && $existingUser['status'] != 'DEL') {
                     $errors[] = ['error' => "User already exists with login {$user['user_id']}", 'index' => $key, 'lang' => ''];
                     continue;
diff --git a/src/core/controllers/InstallerController.php b/src/core/controllers/InstallerController.php
index f2b8d520275..05cf41ced55 100644
--- a/src/core/controllers/InstallerController.php
+++ b/src/core/controllers/InstallerController.php
@@ -410,13 +410,21 @@ class InstallerController
         ];
 
         foreach ($docservers as $docserver) {
-            if (!@mkdir("{$body['path']}/{$body['customId']}/{$docserver}", 0755, true)) {
+            if (is_dir("{$body['path']}/{$body['customId']}/{$docserver}")) {
+                if (!is_readable("{$body['path']}/{$body['customId']}/{$docserver}") || !is_writable("{$body['path']}/{$body['customId']}/{$docserver}")) {
+                    return $response->withStatus(400)->withJson(['errors' => "Docserver {$body['path']}/{$body['customId']}/{$docserver} is not readable or writable"]);
+                }
+            } elseif (!@mkdir("{$body['path']}/{$body['customId']}/{$docserver}", 0755, true)) {
                 return $response->withStatus(400)->withJson(['errors' => "Docserver folder creation failed for path : {$body['path']}/{$body['customId']}/{$docserver}"]);
             }
         }
 
         $templatesPath = "{$body['path']}/{$body['customId']}/templates/0000";
-        if (!@mkdir($templatesPath, 0755, true)) {
+        if (is_dir($templatesPath)) {
+            if (!is_readable($templatesPath) || !is_writable($templatesPath)) {
+                return $response->withStatus(400)->withJson(['errors' => "Docserver {$templatesPath} is not readable or writable"]);
+            }
+        } elseif (!@mkdir($templatesPath, 0755, true)) {
             return $response->withJson(['success' => "Docservers created but templates folder creation failed"]);
         }
 
-- 
GitLab