Problém s routováním nebo ACL nebo htaccess

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Blizard
Člen | 45
+
0
-

Zdravím vás,

snažím se zprovoznit modulovou strukturu a někde je nejspíš problém. Hází mí to 403 Koukal jsem do logu a tam mi to hodilo:

[Wed Apr 08 17:55:39.133453 2015] [autoindex:error] [pid 3012:tid 1724] [client 127.0.0.1:63190] AH01276: Cannot serve directory C:/xampp/htdocs/admin/www/admin/: No matching DirectoryIndex (index.php,index.pl,index.cgi,index.asp,index.shtml,index.html,index.htm,default.php,default.pl,default.cgi,default.asp,default.shtml,default.html,default.htm,home.php,home.pl,home.cgi,home.asp,home.shtml,home.html,home.htm) found, and server-generated directory index forbidden by Options directive

ví někdo co by to mohlo být, případně jak to vyřešit?

Strukturu mám klasicky:
App
–AdminModule
----Presenters
–…
–FrontModule
----Presenters
–…
www
–index.php

apache nastavený aby šel do složky www
zkoušel jsem requirment checker, tam je všechno v pořádku.

Routa zatím nastavená jako

<?php
      $router[] = $adminModule = new RouteList('Admin');
      $adminModule[] = new Route('admin/<presenter>/<action>[/<id>]', 'Default:default');
?>

takže chci přistupovat na adresu localhost/admin/

Mapování mám jako:
mapping:
AdminModule: App*Module\Presenters*Presenter
což by mělo být v pořádku.

Ještě mě napadnul problem s ACL jednou se mi tam probliklo že mi chybí resource do „Default“ a ten mam takto:

<?php
namespace AdminModule;

final class AccessList extends \Nette\Security\Permission {

    public function __construct() {

        // Vytvoření rolí
        // Hlavní administrátor dědí od správce
        $this->addRole('admin');
        // Vytvoření zdrojů
        $this->addResource('Default');
        $this->addResource('Articles');
        $this->addResource('Slider');
        $this->addResource('Gallery');
        $this->addResource('Error');
        $this->addResource('User');
        $this->addResource('LogReport');

        // Vytvoření oprávnění
        $this->allow('admin', self::ALL, self::ALL);
    }

}
?>

dejte prosím vědět pokud někoho něco napadne, děkuji.

Editoval Blizard (8. 4. 2015 18:27)

Blizard
Člen | 45
+
0
-

Zajímavé že pokud zavolám localhost/admin/login/ tak se mi stránka v pořádku zobrazí:

<?php
$router[] = new Route('admin/login', 'Admin:Login:default', Route::ONE_WAY);
?>

to vypadá že by mohl být problém v htaccess u jednotlivých složek? Nyní takto
www
–admin
---css
---js
---images
–images
–js
–css
–index.php´
–.htaccess

htaccess:
# disable directory listing
Options -Indexes

# mod_rewrite
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteBase /

# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>

Editoval Blizard (8. 4. 2015 19:47)

Blizard
Člen | 45
+
0
-

Problém vyřešen. Ve složce www jsem měl složku admin v které jsem chtěl mít styly pro administraci, takže jsem ji přejmenoval a už to funguje. Každopádně mi nastal v zápětí jiný problém a to:

Resource 'Admin:Default' does not exist.

V prvním příspěvku tady nahoře mám nastavení zdrojů a nyní v base presenteru mám:

<?php
      /* V případě že uživatel není přihlášen, tak ho přesuneme na přihlašovací stránku */
      if (!$this->user->isLoggedIn()) {
         $this->redirect("Login:default");
      } else {
         /* Zjistíme, jestli má uživatel oprávnění vstoupit na stránku kterou chce */

         if ($this->user->isInRole("admin")) {
            /* Zjistíme jestli má daný uživatel povolení do této sekce */
            if (!$this->user->isAllowed($this->name, $this->action)) {
               $this->flashMessage('Do této sekce má přístup pouze hlavní administrátor.');
               $this->redirect('Default:default');
            }
         } else {
            $this->flashMessage("Pro přístup do systému nemáte dostatečná oprávnění");
            $this->redirect("Default:default");
         }
      }
?>

zastaví se na

<?php
if (!$this->user->isAllowed($this->name, $this->action)) {
?>

Napadá někoho proč by to tak bylo?

Editoval Blizard (9. 4. 2015 10:37)

Blizard
Člen | 45
+
0
-

Problém vyřešen. V nastavení zdrojů jsem musel dát

<?php
$this->addResource('Admin:Default');
?>