Kaynağa Gözat

added getting all urls

Плотников Роман Вячеславович 3 yıl önce
ebeveyn
işleme
71aa4a2fba

+ 10 - 8
app/Middlewares/IsAdminMiddleware.php

@@ -4,6 +4,7 @@ namespace Middlewares;
 
 use Src\Auth\Auth;
 use Src\Request;
+use Src\Settings;
 
 class IsAdminMiddleware
 {
@@ -11,16 +12,17 @@ class IsAdminMiddleware
     {
         // Перенаправляет на главную страницу, если не админ пытается выполнить админское действие
         $isAdmin = Auth::isAdmin();
-        $urlsForAdmin = [
-            '/createNewUser',
-            '/createNewState',
-            '/createNewDivision',
-            '/deleteUser',
-            '/deleteState',
-            '/deleteDivision'
-        ];
         $url = $request->url;
 
+        $allUris = Settings::getUris();
+        $urlsForAdmin = [];
+
+        foreach ($allUris as $uri) {
+            $explodedUri = explode('.', $uri);
+            if ($explodedUri[0] === 'admin') array_push($urlsForAdmin, $explodedUri[1]);
+        }
+
+
         if (in_array($url, $urlsForAdmin)) {
             if (!$isAdmin) {
                 app()->route->redirect('/hello');

+ 5 - 0
core/Src/Route.php

@@ -69,6 +69,11 @@ class Route
         return $this;
     }
 
+    public function save()
+    {
+        Settings::addUri($this->prefix . '.' . $this->currentRoute);
+    }
+    
     public function start(): void
     {
         // Fetch method and URI from somewhere

+ 11 - 0
core/Src/Settings.php

@@ -7,6 +7,7 @@ use Error;
 class Settings
 {
     private array $_settings;
+    private static array $uris = [];
 
     public function __construct(array $settings = [])
     {
@@ -34,4 +35,14 @@ class Settings
     public function getDbSetting(): array {
         return $this->db ?? [];
     }
+
+    public static function addUri($uri)
+    {
+        array_push(Settings::$uris, $uri);
+    }
+
+    public static function getUris()
+    {
+        return Settings::$uris;
+    }
 }

+ 12 - 6
routes/web.php

@@ -19,24 +19,30 @@ Route::add(["GET", "POST"], '/getStateStaff', [Controller\Site::class, 'getState
 // Admin actions
 Route::add(['GET', 'POST'], '/createNewUser', [Controller\Site::class, 'createNewUser'])
     ->middleware('isadmin')
-    ->setPrefix('admin');
+    ->setPrefix('admin')
+    ->save();
 
 Route::add(['GET', 'POST'], '/createNewState', [Site::class, 'createnewState'])
     ->middleware('isadmin')
-    ->setPrefix('admin');
+    ->setPrefix('admin')
+    ->save();
 
 Route::add(['GET', 'POST'], '/createNewDivision', [Site::class, 'createNewDivision'])
     ->middleware('isadmin')
-    ->setPrefix('admin');
+    ->setPrefix('admin')
+    ->save();
 
 Route::add(['GET', 'POST'], '/deleteUser', [Site::class, 'deleteUser'])
     ->middleware('isadmin')
-    ->setPrefix('admin');
+    ->setPrefix('admin')
+    ->save();
 
 Route::add(['GET', 'POST'], '/deleteState', [Site::class, 'deleteState'])
     ->middleware('isadmin')
-    ->setPrefix('admin');
+    ->setPrefix('admin')
+    ->save();
 
 Route::add(['GET', 'POST'], '/deleteDivision', [Site::class, 'deleteDivision'])
     ->middleware('isadmin')
-    ->setPrefix('admin');
+    ->setPrefix('admin')
+    ->save();