0
すべてのCRMで同じログインページがあります。カール要求によるユーザ認証
この仕組みは次のとおりです。
- は、パスワードを入力し、
- ログインユーザが、CRM に
- 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
));
}
}