2011-06-27 10 views
2

私は(管理者としてログインして)特定のユーザーとしてログインする方法を探しています(私はユーザーのリストから選択して、リストは既に存在しています)onclickを知らずにそれはパスワードですか?Cakephp:管理者としてログインonClick

すべてのユーザーは異なるパスワードを使用しているため、同等のパスワードはオプションではありません。

OK、質問が閉じました。ここに解決策があります:

P.S. ID 2のグループは管理グループです。

function loginasuser($user_id = null) { 

    if (!$user_id) { 
     $this->Session->setFlash(__('Invalid User.', true)); 
     $this->redirect(array('action'=>'index')); 
    } 
    $data = $this->Auth->user(); 

    if($data['User']['group_id'] == 2 || $_SESSION['Auth']['Admin']['id']==$user_id) { 

    $user_data = $this->User->find('first', array('conditions' => array('User.id' => $user_id))); 

    if ($user_data['User']['group_id']==2 && $user_data['User']['id']<>$_SESSION['Auth']['Admin']['id']) { 
     $this->Session->setFlash(__('You can only log in as user', true)); 
     $this->redirect($this->Auth->redirect('/users')); 
    } 

     $_SESSION['Auth']['User']['id']=$user_data['User']['id']; 
    $_SESSION['Auth']['User']['username']=$user_data['User']['username']; 
    $_SESSION['Auth']['User']['group_id']=$user_data['User']['group_id']; 
    $_SESSION['Auth']['User']['client_id']=$user_data['User']['client_id']; 
    $_SESSION['Auth']['User']['created']=$user_data['User']['created']; 
    $_SESSION['Auth']['User']['modified']=$user_data['User']['modified']; 
    $_SESSION['Auth']['Admin']['id']=$data['User']['id']; 

     if($_SESSION['Auth']['User']['group_id']==2) { 
      $this->redirect($this->Auth->redirect('/ADMINHOME')); 
     } 
     else { 
      $this->redirect($this->Auth->redirect('/USERSHOME')); 
     } 
    } 
    else { 
    $this->Session->setFlash(__('Only admins are alowed to do so!', true)); 
    $this->redirect(array('action'=>'index')); 
    } 

} 

そして、管理者として戻って、あなたができる:

<? if($_SESSION['Auth']['Admin']['id']>0) { ?> 
<a href="/loginasuser/<?=$_SESSION['Auth']['Admin']['id'];?>">Go Back as Admin</a><? } 

答えて

1

あなたがセッションを作成するには、 "ユーザ名"(電子メールID)を使用することができます。

Onclickで、Ajax呼び出しをトリガーし、ユーザー名を渡し、そのユーザー名を使用してセッションを設定します。 (管理者が選択ボックスを変更したときにこのコールを開始する、onChange(this.value)

次に、ユーザーをエンドユーザーのホームページにリダイレクトします。管理ダッシュボードに戻るためのリンクを設定します。これにより、管理者は他のユーザーとしてログインできます。エンドユーザーのための

$ _SESSION [ 'ユーザー']と管理者ユーザーの$ _SESSIION [ '管理者']

(管理者とエンドユーザーのために使用するさまざまなセッションの名前空間)。

+0

ありがとう、私は右のdirektionを指摘しました。私は誰かがそれを必要とする場合に備えて私の完全な機能を掲示します。 – Timur

関連する問題