ich bin noch relativ neu und unerfahren wenn es um CakePHP geht, jedoch geht es täglich bergauf...
Ich habe mir zum Üben mit Cake ein Projekt ausgedacht, ein ER-Modell erstellt, alle Models über die Console angelegt und bin gerade beim USER-ANLEGEN. Bestimmte Zusatzfelder sollen aber nur vom ADMIN angelegt werden können. Deshalb habe ich im views/user/add.ctp auch eine IF-Abfrage gemacht if($admin):
- Code: Alles auswählen
- <?php
echo $this->Form->input('username');
echo $this->Form->input('prename');
echo $this->Form->input('surname');
echo $this->Form->input('email');
echo $this->Form->input('birthday');
echo $this->Form->input('password');
echo $this->Form->input('password_confirmation',array('type' => 'password'));
if($admin):
echo $this->Form->input('active');
echo $this->Form->input('deleted');
echo $this->Form->input('Right');
endif;
?>
Ich habe eine Datei im app Ordner angelegt names app_controller.php:
- Code: Alles auswählen
<?php
class AppController extends Controller {
var $components = array('Auth', 'Session');
function beforeFilter(){
$this->Auth->allow('index','view');
$this->Auth->authError= 'Sie müssen eingeloggt sein um die Seite zu sehen.';
$this->Auth->loginError = 'Username/Passwort falsch.';
$this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'view');
$this->set('admin',$this->_isAdmin());
}
function _isAdmin(){
$admin = FALSE;
if($this->Auth->user()):
endif;
return $admin;
}
}
?>
Mein ER-Modell für den User sieht folgendermaßen aus.

Bei mir kann ein USER mehrere ROLLEN haben... Sprich ein Admin darf zwar alles, aber es gibt unterschiedliche Moderatoren-Gruppen, die nur bestimmte Dinge erledigen dürfen, bzw. durch eine weitere Rolle, Ihren Administrationsaufwand in einen anderen Bereich erweitern dürfen....
Sodala... hier gehts los:
Hätte ich in meiner Datenbank, die Rolle direkt in der users-Tabelle, würde ich die oben aufgeführte IF-Anweisung wie folgt schreiben:
- Code: Alles auswählen
- if($this->Auth->user('rolle') == 'moderatorX'):
Da ich jetzt aber die Rollen und die User in der users_rights-Tabelle habe, komm ich nciht mehr weiter und weiß nicht wie ich nun in der _isAdmin im app_controller.php auf die Rolle komme ?
Ich hoffe ich konnte das Problem verdeutlichen und würde mich freuen wenn mir einer helfen könnte... ;- )
Danke im Voraus