0

Я работаю на CakePHP 2.xi есть таблица в моей базе данных имя пользователя и имеет 4 поля ID, адрес электронной почты, пароль и MobileNoAuth Войти с электронной почтой или мобильный CakePHP

У меня есть два поля в моем login.ctp

<?php 


echo $this->form->create(); 

echo $this->form->input('email'); 
echo $this->form->input('password'); 


echo $this->form->end('submit'); 
?> 

то, что я хочу, я хочу, чтобы войти в систему пользователя от его MobileNo тоже (если он набрал номер мобильного телефона, а не адрес электронной почты) так же, как facebook сделал ..he можете войти с hi адресом электронной почты или mobileno .i не хочу создать еще одно поле ввода .. я не знаю, как я могу это сделать здесь мой код

AppController

class AppController extends Controller { 
public $components = array(
'Session', 
'Auth'=>array(
'loginRedirect'=>array('controller'=>'users', 'action'=>'admin'), 
'logoutRedirect'=>array('controller'=>'users', 'action'=>'admin'), 
'authError'=>"You can't access that page", 
'authorize'=>array('Controller'), 
    'authenticate' => array(
    'Form' => array(
    'fields' => array('username' => 'email') 
    ))) 
    ); 
) 
); 


public function isAuthorized($user) { 
} 

public function beforeFilter() { 
$this->Auth->allow('index'); 
} 
} 

UserController

public function login() 
    { 
if ($this->request->is('post')) { 
    if ($this->Auth->login()) { 
    $this->redirect($this->Auth->redirect()); 
} else { 
    $this->Session->setFlash('Your email/password combination was incorrect'); 
    } 
    } 
    } 
+0

Возможный дубликат [для входа в систему по электронной почте и номеру телефона точно так же, как facebook в cakephp] (http://stackoverflow.com/questions/17113177/login-through-email-and-phone-number-just-like-facebook- в-CakePHP) – mark

ответ

0

Используйте этот код в контроллере приложения в beforefilter();

AuthComponent::$sessionKey = 'Auth.User'; 
    if ($this->request->is('post') && $this->action == 'login') { 
     $username = $this->request->data['User']['email']; 
     if (filter_var($username, FILTER_VALIDATE_EMAIL)) { 
      $this->Auth->authenticate = array(
        'Form' => array(
         'fields' => array(
          'username' => 'email', //Default is 'username' in the userModel 
          'password' => 'password'), //Default is 'password' in the userModel 
         // 'scope'=>array('User.status' => '1'), 
         'userModel' => 'User' 
       ) 
      ); 
     }else{ 
     $this->Auth->authenticate['Form']['fields']['email'] = 'mobile'; 
      $this->request->data['User']['mobile'] = $username; 
      unset($this->request->data['User']['email']); 
    $this->Auth->authenticate = array(
        'Form' => array(
         'fields' => array(
          'username' => 'mobile', //Default is 'username' in the userModel 
          'password' => 'password'), //Default is 'password' in the userModel 
         // 'scope'=>array('User.status' => '1'), 
         'userModel' => 'User' 
       ) 
      ); 

     } 
    } 

$ this-> request-> данные [ 'User'] [ 'электронная почта'] моя полевая форма, в которой я посылаю электронную почту или мобильный телефон.

Смежные вопросы