2017-04-26 20 views
0

すべてのCRMで同じログインページがあります。カール要求によるユーザ認証

この仕組みは次のとおりです。

  1. は、パスワードを入力し、
  2. ログインユーザが、CRM
  3. CRMが存在するかどうかをチェックされ、ユーザデータとcrm.dev/api/auth/checkにCRMにカール送りますauth :: user( 'user_data_here')を介してユーザーを認証し、CRMのメインページにリダイレクトした後、ユーザーが存在する場合、成功を返します。

私の問題はauthが動作しないことです。セッション中のユーザーデータはありません(以前の問題のため)。

CRMの認証コード:

public function checkUserExists(Request $request) 
{ 
    $this->redirectIfAuthorized(); 

    $user = User::find($request->uid); 
    if ($user) { 
     return ['response' => 'LOGIN_SUCCESS']; 
    } 
    return ['response' => 'DB_ERROR']; 
} 

public function login(Request $request) 
{ 
    $this->validateLogin($request); 
    $user = User::find($request->uid); 
    $user->remember_token = $request->token; 
    if ($user->update()) { 
     Auth::login($user, true); 
     return redirect()->intended($this->redirectPath()); 
    } else { 
     return redirect($this->redirectAfterLogout); 
    } 
} 

public function redirectIfAuthorized() 
{ 
    if (Auth::check()) { 
     return redirect($this->redirectTo); 
    } 
} 

のAPIルート:

Route::group(['prefix' => 'auth'], function() { 
    Route::post('check', '[email protected]'); 
    Route::get('login', '[email protected]'); 
    Route::get('logout', '[email protected]'); 
}); 

そして、このCURLリクエスト

private function sendToken($action, $user, $token) 
{ 
    $query = DB::table('user_base')->join('bases', 'bases.id', '=', 'user_base.base_id') 
            ->where('user_base.user_id', $user); 

    $result = $query->get(); 
    foreach ($result as $row) { 
     $urlAPI = $row->url_api; 
     if ($urlAPI == 'http://appliance.dev/api/auth') { 
      $urlAPI .= '/check'; 
     } 
     $rsp = $this->curl($urlAPI, array(
      'apiKey' => $this->apiKey, 
      $action => true, 
      'uid' => $row->base_uid, 
      'token' => $token 
     )); 
    } 
} 

答えて

0

のログインページのロジック私はweb.phpでルーティングを使用する必要でしたapi.phpの代わりにファイル

関連する問題