Problém s routováním nebo ACL nebo htaccess
- Blizard
- Člen | 45
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
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
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)