Я использую laravel 5.7 и сталкиваюсь с некоторыми проблемами при входе в систему с использованием ajax.
Я пробовал много других подобных вопросов, но не смог найти решение.
Вот шаги, за которыми я следую.
Открыть модал для начальной загрузки
Заполнить учетные данные
Отправьте форму, используя ajax и верните false в случае ошибки или true в случае успешного входа
Если возвращено значение true, перенаправить на другую страницу
Но на другой странице я получаю ошибку Trying to get property of non-object
для Auth::user()->id
Вот что я пытаюсь сделать.
Вид:
<form id="login_form" >
@csrf
<div class="form-group">
<label for="emailaddress">{{ __('lang.email_address') }}</label>
<input class="form-control" type="email" id="emailaddress" name="email" required="">
<span class="ajax-error email"></span>
</div>
<div class="form-group">
<label for="password">{{ __('lang.password') }}</label>
<input class="form-control" type="password" required="" id="password" name="password" placeholder="">
<span class="ajax-error password"></span>
</div>
<div class="form-group">
<div class="row">
<div class="col-md-6">
<div class="custom-checkbox">
<input type="checkbox" id="css"> <label for="css">{{ __('lang.remember_me') }}</label>
</div>
</div>
<div class="col-md-6">
<div class="forgot">
<a href="{{url('/admin/forget-password')}}" class="pull-right">{{ __('lang.forgot_your_password') }}</a>
</div>
</div>
</div>
</div>
<div class="form-group row text-center m-t-10">
<div class="col-md-12">
<a id="login-btn" type="submit" class="btn btn-warning btn-login btn-block login_button">{{ __('lang.login') }}</a>
</div>
</div>
<a href="#" class="btn btn-block btn-facebook m-b-10"> <i
class="fab fa-facebook"></i> <span>{{ __('lang.login_with_facebook') }}</span>
</a> <a href="#" class="btn btn-block btn-google m-b-10"> <i
class="fab fa-google-plus"></i> <span>{{ __('lang.login_with_google') }}</span>
</a>
</form>
JQuery:
$('.login_button').click(function(){
$.ajax({
method: "POST",
url: "{{url('/user/login')}}",
data: $('#login_form').serialize()
})
.done(function( msg ) {
var res = JSON.parse(msg);
if(res.validation) {
var error = res.validation;
$.each(error, function( index, value ) {
value = value + '';
var array = value.split(",");
$('.'+index).show();
$('.'+index).text(array[0]);
});
}else if(res.error) {
alert(res.error);
} else if(res.status) {
$('#login_form').hide();
window.location = "{{ Url::to('admin/dashboard') }}";
}
});
});
Контроллер:
public function login(Request $request)
{
$data = [];
$rules = array(
'email'=>'required|email',
'password' => 'required'
);
$post = $request->all();
$validator = Validator::make($post, $rules);
if ($validator->fails()) {
$data['validation'] = $validator->errors();
}else{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
if (Auth::check()) {
$data['status'] = true;
$data['message'] = trans('lang.login_success');
$data['role'] = Auth::user()->role_id;
}
}else{
$data['error'] = trans('lang.user_invalid');
}
}
echo json_encode($data);
}