1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| <?php
// app/controllers/components/app_auth.php
App::import('Component', 'Auth');
class AppAuthComponent extends AuthComponent
{
/**
* Configuration par défaut
*
* @var array
*/
var $defaults = array(
'userModel' => 'User',
'userScope' => array(),
'fields' => null,
'loginAction' => null,
'loginRedirect' => null,
'logoutRedirect' => null,
'autoRedirect' => true,
'loginError' => "Identifiant ou mot de passe incorrects.",
'authError' => "Vous n'avez pas accès à cette page.",
'flashElement' => 'default',
);
/**
* Configurations possibles en fonction du préfixe de la route
*
* @var array
*/
var $configs = array(
'students' => array(
'userModel' => 'Student',
'userScope' => null,
'fields' => array('username' => 'loginstudent', 'password' => 'passwordstudent'),
'loginAction' => array('controller' => 'students', 'action' => 'login', 'students' => false),
'loginRedirect' => array('controller' => 'students', 'action' => 'home'),
'logoutRedirect' => array('controller' => 'students', 'action' => 'login'),
'flashElement' => 'public_notice',
),
'tutors' => array(
'userModel' => 'Tutor',
'userScope' => null,
'fields' => array('username' => 'logintutor', 'password' => 'passwordtutor'),
'loginAction' => array('controller' => 'tutors', 'action' => 'login', 'tutors' => false),
'loginRedirect' => array('controller' => 'tutors', 'action' => 'home', 'tutors' => true),
'logoutRedirect' => array('controller' => 'tutors', 'action' => 'login', 'tutors' => false),
'flashElement' => 'public_notice',
),
);
/**
* Démarrage du composant.
* Autorisation si pas de préfixe dans la Route qui a conduit ici.
*
* @param object $controller Le contrôleur qui a appelé le composant.
*/
function startup(&$controller)
{
$prefix = null;
if(empty($controller->params['prefix']))
{
$this->allow();
}
else
{
$prefix = $controller->params['prefix'];
}
// Cas spécial des actions de login et logout, pour lesquelles le préfixe n'existe pas
if(in_array($controller->action, array('login', 'logout')))
{
switch($controller->name)
{
case 'tutor':
$prefix = 'tutors';
break;
case 'student':
$prefix = 'students';
break;
}
}
$this->_setup($prefix);
parent::startup($controller);
}
/**
* Définition des variables de config en fonction d'un préfixe
*
* @param string $prefix
*/
function _setup($prefix)
{
$settings = $this->defaults;
if(array_key_exists($prefix, $this->configs))
{
$settings = array_merge($settings, $this->configs[$prefix]);
}
$this->_set($settings);
}
}
?> |