BE Benutzerzugriffsrechte wie mit beim Nachrichtenarchiv
Bei meiner Erweiterung soll im BE jeder Benutzer nur seine Schule und deren Datensätze sehen dürfen.
Dies habe ich so hinbekommen mit:
PHP-Code:
$objUser = \BackendUser::getInstance();
$objSchulen = \SchuleModel::findPublishedByPk($objUser->schule);
Soweit so gut, aber wenn im in der URL die ID-Nummer von Hand ändere, kann ich auch andere Schulen sehen. Also bräuchte ich eine Abfrage der Zugriffsrechte. Wie kann ich dies möglichst einfach lösen?
Ich versuchte es mit:
PHP-Code:
$objUser = \BackendUser::getInstance();
$schuleID = \Input::get('id');
und diese dann vergleichen. Damit erhalte ich bei manuelle Eingeben einer anderen ID in der URL eine Fehlermeldung, aber ich kann dann auch nicht mehr einzelne Datensätze bearbeiten, da diese ja verschieden IDs haben und nicht mehr mit der $objUser ID übereinstimmen.
Ich denke das Newsmodul machte eine solche Überprüfung. Man kann ja jedem Benutzer seine Archive zuordnen. Den Code dazu wollte ich im News-Modul modules/news/models/NewsArchiveModel.php nachschauen. Bin leider nicht fündig geworden. Kann mir jemand weiterhelfen?
Edit: Mit
PHP-Code:
if ($objUser->hasAccess(2, 'news')) {
// der Benutzer darf auf das News-Archiv mit der ID 2 zugreifen
}
kann ich ja die Zugriffsrechte abfragen. Aber wo kann ich in meinem Modul das 'news' zu 'schulen' definieren?
Besten Dank im Voraus!
Liste der Anhänge anzeigen (Anzahl: 1)
Besten Dank für deine Erklärungen. Leider kann ich dir so noch nicht ganz folgen.
Ich denke das Ziel wäre, dass im BE unter Benutzer eine neu Kategorie entsteht, wie die der Archivrechte(siehe Screenshot), bei welcher ich dann jedem Benutzer seine Schule zuordnen kann.
Anhang 17535
Habe aber dazu den Ansatz im tl_user oder tl_user_groups leider nicht gefunden.
Liste der Anhänge anzeigen (Anzahl: 1)
Besten Dank für dein Beispiel!
Verständnisfrage: Wenn ich nur einem Benutzer eine Schule zuordnen möchte, brauche ich dann auch tl_user_group anzupassen?
Ich habe erreicht, dass ich einem Benutzer eine Schule zuordnen kann :-)
Anhang 17536
Mit Code:
PHP-Code:
$GLOBALS['TL_DCA']['tl_user']['fields']['schule'] = array(
'label' => &$GLOBALS['TL_LANG']['tl_user']['schule'],
'filter' => true,
'inputType' => 'select',
'foreignKey' => 'tl_schule.schule_name',
'eval' => array('includeBlankOption' => true, 'mandatory'=>false, 'chosen'=>true, 'tl_class'=>'w50'),
'sql' => "int(10) unsigned NOT NULL default '0'",
'relation' => array('type'=>'hasOne', 'load'=>'eager')
);
Wo genau findet die Überprüfung der Rechte statt?