Bueno mira te comento mas o menos como yo lo he hecho. Yo saque todo del
ejemplo que sale en el book del Cake 2.0. En el el Modelo User hay un campo
que se llama rol, y es en este campo que vas a almacenar lo que seria los
permisos con que va a contar el usuario segun el rol. Los metodos login y
logout lo copie tal cual de el ejemplo
public function login() {
$this->set('title_for_layout', 'Iniciar Sesión');
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash(__('El nombre de usuario o la
contraseña no son correctos'));
}
}
}
public function logout() {
$this->redirect($this->Auth->logout());
}
En debido a que no estas usando ACL lo que tenes que hacer es al inicio de
cada accion en el controlador poner un if o un switch (segun la cantidad de
roles que uses). la variable que necesitas para evaluar es
$this->Auth->user('rol')
que te va a dar el rol del usuario q esta logeado actualmente
segun el ermiso que tenla redireccionas a uan viasta o a otra
$this->Auth->user('campo') esta variable te sirve para acceder a todos los
campos del usuario registrado actualmente
En el modelo user tenes que pegar este metodo que es para cifrar la
contraseña
public function beforeSave($options = array()) {
if (isset($this->data[$this->alias]['password'])) {
$this->data[$this->alias]['password'] =
AuthComponent::password($this->data[$this->alias]['password']);
}
return true;
}
}
el campo de la tabla de la base de datos password tiene que tener minumo 40
caracteres de longitud porque cuando se cifra queda enorme
estas son las validaciones que yo tome en cuanta del usuario
var $validate = array (
'username' => array(
'usernameRole-1' => array(
'rule' => 'notEmpty',
'message' => 'El nombre de usuario no puede estar vacio',
'required' => true,
'last' => true
),
'usernameRole-2' => array(
'rule' => array('minLength', 5),
'required' => true,
'message' => 'El nombre de usuario debe tener minimo 5
caracteres',
'last' => true
),
'usernameRole-3' => array(
'rule' => 'isUnique',
'message' => 'Ese nombre de usuario ya existe',
'last' => true
)
),
'password' => array(
'passwordRole-1' => array(
'rule' => 'notEmpty',
'message' => 'La contraseña no puede estar vacia',
'last' => true
),
'passwordRole-2' => array(
'rule' => array('minLength', 5),
'message' => 'La contraseña debe tener minimo 5 caracteres',
'last' => true
)
),
'mail' => array(
'rule' => 'email',
'message' => 'El e-Mail no puede estar vacio',
'last' => true
),
'password_confirm' => array(
'password_confirm-1' => array(
'rule' => array ('passwordConfirm'),
'message' => 'Las contraseñas ingresadas no coinciden',
'last' => true
)
)
);
y por ultimo tenes que agregar estas lineas al proncipio modelo de usuario
App::uses('AuthComponent', 'Controller/Component');
y esto en el appController para que este disponible en todos los
controladores
var $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'Productos', 'action'
=> 'index'),
'logoutRedirect' => array('controller' => 'Productos', 'action'
=> 'index')
)
);
los controller que hay ahi con a los que yo redirijo en el login y el
logout
espero que te seas de ayuda yo lo hice asi y hasta ahora funcinoa
saludos
El 10 de septiembre de 2012 09:03, Franco Capra
<[email protected]>escribió:
> Y sería ideal si puedes darme una ayuda y ver si utilizando solamente Auth
> y ciertos roles puedo aplicarlo a mi sistema de gestión!!!.
>
> Avisame y estamos en contacto!!!
>
> El domingo, 9 de septiembre de 2012 22:04:05 UTC-3, Maximiliano Alves
> Pinherio escribió:
>>
>> Hola franco
>> mira la verdad que todo depende de la complejidad del sistema y la
>> cantidad de niveles de usuarios que necesites. Yo hice un sistema que
>> requeria logeo pero lo hice solo con auth porque con unos pocos roles me
>> alcanzaba. ACL es una herramienta muy poderosa pero tampoco hay que matarse
>> si con algo simple se soluciona. Si no es muy complicado lo que tenes que
>> hacer yo te aconsejo que utilices solamente Auth.
>> Saludos
>>
>> El 9 de septiembre de 2012 12:19, Franco Capra <[email protected]>escribió:
>>
>> Si, el problema es que me trabo cdo me pide que por consola cree una
>>> tabla ACL en la DB (create schema acl ....) ahi no puedo continuar.
>>>
>>>
>>> El sábado, 8 de septiembre de 2012 23:59:13 UTC-3, Bruno M. Tenaglia
>>> escribió:
>>>>
>>>> Hola, que tal, mira, creo x lo menos para mi el tuto de la página está
>>>> copado. Que duda en particular temes? Q es exactamente lo que no entiendes?
>>>>
>>>> Saludos
>>>>
>>>> ------------------------------****-------------
>>>> Bruno M. Tenaglia -
>>>> Analista de Sistemas / Analista Programador
>>>> Skype: brunomartintenaglia
>>>> Celular: 3416007222
>>>> ------------------------------****-------------
>>>>
>>>> Enviado desde un Motorola Milestone
>>>>
>>>> ------------------------------****-------------
>>>>
>>>> El sep 8, 2012 8:25 p.m., "Franco Capra" <[email protected]>
>>>> escribió:
>>>>
>>>>
>>>> Hola, voy a comenzar con un nuevo sistema de Gestión Integral, y
>>>> necesito en principio una interfaz principal que me permita ingresar al
>>>> sistema a travez de un login y que luego, de acuerdo al tipo de usuario que
>>>> es, me muestre o no ciertos módulos o acciones.
>>>>
>>>> He visto algo de Auth y ACL, pero no logro entenderlo ni como
>>>> programarlo. Si alguno tiene una idea o tutorial donde se pueda comprender
>>>> facilmente, se los agradecería!!!
>>>>
>>>> --
>>>> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es"
>>>> de Grupos de Google.
>>>> Para ver este debate en la Web, visita https://groups.google.com/d/**ms
>>>> **g/cakephp-es/-/c2WYzzhNufUJ<https://groups.google.com/d/msg/cakephp-es/-/c2WYzzhNufUJ>
>>>> .
>>>> Para publicar una entrada en este grupo, envía un correo electrónico a
>>>> [email protected].
>>>> Para anular tu suscripción a este grupo, envía un correo electrónico a
>>>> cakephp-es+...@**googlegroups.**com
>>>>
>>>> Para tener acceso a más opciones, visita el grupo en
>>>> http://groups.google.com/**group**/cakephp-es?hl=es<http://groups.google.com/group/cakephp-es?hl=es>
>>>> .
>>>>
>>>> --
>>> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
>>> Grupos de Google.
>>> Para ver este debate en la Web, visita https://groups.google.com/d/**
>>> msg/cakephp-es/-/v-aVPFRUbdkJ<https://groups.google.com/d/msg/cakephp-es/-/v-aVPFRUbdkJ>
>>> .
>>>
>>> Para publicar una entrada en este grupo, envía un correo electrónico a
>>> [email protected].
>>> Para anular tu suscripción a este grupo, envía un correo electrónico a
>>> cakephp-es+...@**googlegroups.com
>>> Para tener acceso a más opciones, visita el grupo en
>>> http://groups.google.com/**group/cakephp-es?hl=es<http://groups.google.com/group/cakephp-es?hl=es>
>>> .
>>>
>>
>> --
> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
> Grupos de Google.
> Para ver este debate en la Web, visita
> https://groups.google.com/d/msg/cakephp-es/-/wQsSsp-rMHsJ.
>
> Para publicar una entrada en este grupo, envía un correo electrónico a
> [email protected].
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> [email protected]
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/cakephp-es?hl=es.
>
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a
[email protected]
Para tener acceso a más opciones, visita el grupo en
http://groups.google.com/group/cakephp-es?hl=es.