Zabezpečenie rozšírení pre Joomla! 1.5.x PDF Tlačiť E-mail
Rady a návody - Vývoj rozšírení
Napísal Karol Čejka   
Streda, 17 Jún 2009 00:00
Rozšírenia administrácie, ale aj verejnej časti Joomla! si vyžadujú ochranu pred neautorizovaným prístupom.
Joomla! pre tento účel využíva svoje vnútorné funkcie, ktorých jednoduché použitie bude ukázané ďalej v článku.

Každý, kto sa problematikou autorizovaného prístupu v Joomla! zaoberal, ako prvú vec hľadal určitú implementáciu v databáze.
V databáze sa nachádzajú tabuľky s prefixom jos_core_acl, ale žiaľ po bližšom preskúmaní zistíte, že je tam málo záznamov a niečo nie je v poriadku.
Joomla používa pre autorizáciu knižnicu phpGACL (Generic Access Control List). Žiaľ praktické používanie tejto knižnice je dosť zvláštne.
Implementácia v rámci Joomla sa dá rozdeliť na dve časti:
  • Statická (práva definované v php kóde)
  • Dynamická (práva definované v databáze)
Žiaľ v kóde nájdeme aktiváciu, a využívanie iba statickej implementácie.
Prečo tomu tak je nie je známe, ale je možné, že vo vyšších verziách sa to zmení, preto je potrebné sledovať oznamy o vydaní nových verzií.

To má dopad na celé riešenie autorizácie v rámci Joomla! Veľká časť definícií sa nachádza v súbore authorization.php, ktorú nájdete na ceste /libraries/joomla/user/authorization.php

Praktický príklad použitia v rámci rozšírení:
$acl =& JFactory::getACL();
$acl->addACL( 'com_jcatalog', 'manage', 'users', 'super administrator' );
$acl->addACL( 'com_jcatalog', 'manage', 'users', 'administrator' );
$acl->addACL( 'com_jcatalog', 'manage', 'users', 'manager' );

$user = & JFactory::getUser();
if (!$user->authorize( 'com_jcatalog', 'manage' )) {
$mainframe->redirect( 'index.php', JText::_('ALERTNOTAUTH') );
}

V prvom kroku sa získa objekt JAuthorization.
Nasleduje definícia ACL pre vaše rozšírenie. Namiesto com_jcatalog je potrebné zadať názov vašeho rozšírenia.
Nakoniec získate objekt JUser a vykonáte test na autorizáciu.
Ak je autorizácia používateľa nevyhovujúca, zašle sa používateľovi oznam o tom že nemá dostatočné práva.
Posledná úprava Streda, 17 Jún 2009 10:41