El problema que tengo es que no consigo realizar correctamente la autentificación de usuarios.
Según entiendo el componente Auth encripta automaticamente el campo password pero en mi caso no sucede así, tampoco se muestran los errores como los he definido en 'messages' en la variable $validate del modelo.
Voy a pegar el código haber si alguien me puede echar una manillo.
Mil gracias de antemano y perdón por la extensión del post.
users_controller.php
Código:
Modelo: user.phpfunction add() { if (!empty($this->data)) { //var_dump($this->data); //comprobamos y creamos el hash del password2 if ($this->data['User']['password2']) $this->data['User']['password2hased']=$this->Auth->password($this->data['User']['password2']); $this->User->create(); if ($this->User->save($this->data)) { $this->Session->setFlash(__('El nuevo usuario ha sido guardado correctamente', true)); $this->redirect(array('action'=>'index')); } else { $this->Session->setFlash(__('El usuario no puede ser guardado. por favor inténtelo más tarde.', true)); } } }
Código:
El componente Auth lo cargo en el app_controller de la siguiente forma:class User extends AppModel { var $name = 'User'; var $validate = array( 'name' => array( 'notempty' => array( 'rule' => array('minLenght',2), 'required' => true, 'allowEmpty' => false, 'message' => 'El nombre no puede estar vacío' ), 'unique' => array( 'rule' =>array('checkUnique','code'), 'message'=> 'El usuario ya existe' )), 'surname' => array( 'notempty' => array( 'rule' => array('minLenght',2), 'required' => true, 'allowEmpty' => false, 'message' => 'El/los apellido/s no puede estar vacío' )), 'passwordSimilar' => array( 'rule' => 'checkPasswords', 'message' => 'Las contraseñas no son iguales, por favor revíselas, gracias.' ) ); //The Associations below have been created with all possible keys, those that are not needed can be removed var $hasMany = array( 'Cliente' => array( 'className' => 'Cliente', 'foreignKey' => 'user_id', 'dependent' => false, 'conditions' => '', 'fields' => '', 'order' => '', 'limit' => '', 'offset' => '', 'exclusive' => '', 'finderQuery' => '', 'counterQuery' => '' ) ); function checkUnique($data,$fieldName){ $valid=false; if ( isset($fieldName) ){ $valid=$this->isUnique(array($fieldName => $data)); } return $valid; } function checkPassword($data) { if ($data['password'] == $this->data['User']['password2hashed']) return true; return false; }
app_controller.php
Código:
<?php class AppController extends Controller { var $components = array('Auth'); function beforeFilter() { //cambiamos valores por defecto de username y password (en este caso solo usernama que es ahora code) // que vienen definidos en el core $this->Auth->fields = array( 'username' => 'code', 'password' => 'password' ); } } ?>