Problem při ověřování práv uživatele
- Juve
- Člen | 27
Ahoj,
pomocí dynamického ACL ověřuji práva přístupu k určitému objektu
(např. stránce). Na localhostu mi ověřování funguje v pořádku, ale po
náhrátí na server při pokusu přístupu na stránku, která se ověřuje
skončí chybou.. Vůbec si to nedokážu vysvětlit.. Tady jsou důležité
soubory. Prosím o radu, pokud někdo ví..
config:
<?php
services:
...
authorizator: Authorizator( @roles, @resources, @rules )
...
factories:
...
resources: Resources
roles: Roles
rules: Rules
...
?>
Authorizator.php:
<?php
use Nette\Security\Permission;
class Authorizator extends Permission
{
public function __construct(Nette\Database\Table\Selection $roles, Nette\Database\Table\Selection $resources, Nette\Database\Table\Selection $rules)
{
// definition roles
foreach ($roles as $role) {
// pokud záznam nedědí od jiné role:
if ($role->id_parent == NULL) {
$this->addRole($role->key_name);
}
// pokud má role rodiče, přebírá po něm vlastnosti
else {
$this->addRole($role->key_name,$roles[$role->id_parent]['key_name']);
}
}
// definition resources
foreach ($resources as $resource) {
$this->addResource($resource->name);
}
// definition rules
// výchozí role administrátor může cokoliv
$this->allow('admin',Permission::ALL,Permission::ALL);
foreach ($rules as $rule) {
$this->allow($rule->roles->key_name, $rule->resources->name, $rule->privileges->name);
}
}
}
?>
Zkoušel jsem upravit soubor Authorizator.php a definovat role, zdroje a práva staticky a tehdy mi to funguje i na serveru: (takto)
<?php
use Nette\Security\Permission;
class Authorizator extends Permission
{
public function __construct()
{
// definition roles
$this->addRole('registred');
// definition resources
$this->addResource('Honza');
// definition rules
$this->allow('registred', 'Honza', 'enter');
}
}
?>
- Juve
- Člen | 27
pilec napsal(a):
Pošli jakou chybu ti to vygeneruje (červená stránka laděnky).
Jsem začátečník, ale jak jsem psal, tak na localhostu mi to funguje bez problémů, ale po nahrátí na skutečný server mi to nepochopitelně nefunguje.. Laděnka mi na localhostu nevyskakuje, vše na něm běží jak má. Něco mám špatně nejspíš v souboru Athorizator.php, pač jak už jsem popisoval, při první verzi toho souboru mi to na produkčním serveru skončí chybou 500, ale pokud změním Athorizator.php na druhou verzi (výše), kde definuje zdroje, role a pravidla staticky, tak vše funguje i na produkčním serveru.