Použití isAllowed v latte template?
- Joacim
- Člen | 229
Chtěl bych použít isAllowed v main template pro generování položek menu, je nějaká možnost isAllowed použít (zavolat) v Template ? nebo je jiný způsob jak generovat efektivě menu dle povolených přístupů ? nechci generovat menu podle rolí. Např v template mohu použít $user->inInRole, ale k isAllowed se mi nedaří dostat
Editoval Joacim (27. 5. 2015 15:10)
- David Matějka
- Moderator | 6445
isAllowed je ve stejne tride jako isInRole – Nette\Security\User,
takze $user->isAllowed(...)
- newPOPE
- Člen | 648
Mozes si na to napisat vlastne makro.
Pokial nepotrebujes nejaku velku flexibilitu a dynamiku tak by ti to malo
stacit. V sablone mas premennu $user
automaticky tak len do makra
das nieco ako:
# macro start
if($user->isAllowed(%node.<sem neviem ktory modifikator>)) {
...
# macro end
}
Keby si potreboval viac dynamicky system. Dajme tomu zo sikovnejsimi permissions tak to take jednoduche uz nie je :) (aspon mne sa pred casom nepodarilo najst riesenie okamzite)
- Joacim
- Člen | 229
Tak jsem to vyzkoušel a problém bude asi nakonec v Authorization Factory
namespace App\Model;
use Nette\Security\Permission;
/**
* Description of AuthorizatorFactory
*
* @author srsenj
*/
class AuthorizatorFactory {
/**
* @return \Nette\Security\IAuthorizator
*/
public function create() {
$permission = new Permission();
/* seznam uživatelských rolí */
$permission->addRole('guest'); // Defaulr user for cleared session exception
$permission->addRole('user');
$permission->addRole('admin');
/* seznam zdrojů */
$permission->addResource('Homepage');
$permission->addResource('Setup');
/* seznam pravidel oprávnění */
$permission->allow('user', array('Homepage'), 'list');
//...
/* admin má práva na všechno */
$permission->allow('admin', Permission::ALL, Permission::ALL);
return $permission;
}
}
Nefunguje mě
$permission->allow
pokud přidávám pole Rousources a nevim proč, např array(‚Homepage‘, ‚Setup‘). Práva pro admina mě fungují ok
Editoval Joacim (8. 6. 2015 9:42)
- Joacim
- Člen | 229
Pomocí oprávnění a fce isAllowed si generuji menu v base temlate.latte
{if $user->isAllowed('Homepage')}
<li {ifCurrent Homepage:} class="active" {/ifCurrent}>
<a href="{$basePath}/"><i class="fa fa-fw fa-home"></i> Homepage</a>
</li>
{/if}
bohužel pokud se přihlásím jako uživatel s rolí user nevidím nic a proto si myslím že problém bude v zápisu budto isAllowed nebo naplnění pole které posílám do allow v AFactory