У меня есть вопрос относительно событий с Laravel 4.2 ... В настоящее время у меня есть прослушиватель событий на «auth.login» ... некоторые строки кода выполняются при входе пользователя в веб-версию ... однако я хотел бы выполнить другое действие, если пользователь зарегистрировался через контроллер API, например: ApiController @ postLogin (моя мобильная версия).L4.2 Событие: знаете, откуда произошло увольнение?
код в моем родном контроллере:
if (Auth::attempt(['email' => Input::get('login'), 'password' => Input::get('password')]) OR Auth::attempt(['username' => Input::get('login'), 'password' => Input::get('password')]))
{
return Redirect::intended(URL::route('dashboard.index'));
}
else
{
return Redirect::action('[email protected]')->with('poplogin', true)->with('badcredentials',true)->withInput();
}
Код в global.php (слушатель событий)
Event::listen('auth.login', function($user)
{
//Put Login_attemp in Database for Last activity, etc
$user->login_attemp()->create(['login_ip'=>$_SERVER['REMOTE_ADDR'],'login_time'=> date('Y-m-d H:i:s',time())]);
$user->last_logged = date('Y-m-d H:i:s',time());
$user->save();
Session::flash('justlogged',true);
//other code that I didnt include..........
});
код в моем ApiController
public function getRefreshData() {
//check the token
$token = Input::get('token');
$username = Input::get('username');
$user = User::where('api_token', $token)
->where('username', $username)
->first();
if(!$user || !$token) {
return Response::json([
'error' => true,
'message' => 'Invalid Token, please re login',
'code' => 401],
401
);
}
Auth::login($user);
//5 last Timesheets + tslines, for pre-load at log-in in phone memory
//Not inserting possible creation dates between, to keep phone app 100% independent
$timesheets = $user->timesheets()->orderBy('startdate', 'DESC')->take(10)->with('tslines')->get();
//Other code that I didnt include
);
return $response;
}
Я не могу контролировать исполнение событие «auth.login» самостоятельно .. стрельба вручную с параметром просто сработала бы дважды (я думаю?)
Есть ли способ определить, откуда произошло событие в событии: прослушать и не вставлять «вход в систему attemp» (мой код в прослушивателе событий) каждый раз, когда я использую функцию getRefreshData() в моем API? Да, мне нужно зарегистрировать пользователя в моей функции API (для другого кода, который не включен)
Я добавил код и точность ... Если I Event :: fire ('auth.login') вручную, я просто запустил бы это событие дважды? Laravel автоматически включит auth.логин после Auth: attemp или Auth: login ($ user), но я не хочу, чтобы прослушиватель событий выполнялся с APIController – raphjutras
Ок, см. мое редактирование, сообщите мне, если он работает! –
После нескольких исследований я наконец нашел более четкий способ сделать это ^^ Я сам ответил на мой пост Спасибо за вашу помощь @ Josh Rumbut – raphjutras