Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
С регистрацией всё понятно, код валидации тут и видно, где новые поля добавлять и правила проверки
\app\Http\Controllers\Auth\RegisterController.php
Код валидации входа находится здесь и я его не понимаю. Мне нужно добавить новые поля для авторизации, но где это сделать?
\app\Http\Controllers\Auth\LoginController.php
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest', ['except' => 'logout']);
}
}
А ещё как, если что, перевести форму входа на ajax?
Изменено Kirir (01.03.2017 14:10:56)
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
Нужные методы в трейте AuthenticatesUsers
Тебе надо скопировать то что ты хочешь редактировать в твой контроллер и изменить
Не в сети
Как я понял, это оно? Тут типа первое - это меил(хотя в форме идёт имя, но в форме это меил), потом пароль, и можно другите поля также вписать, да?
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required', 'password' => 'required',
]);
}
Изменено Kirir (01.03.2017 15:53:09)
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
Это валидация переданных данных
Не в сети
Да, но в формк принимает меил и пароль, а тут первое имя.
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
username() - это не имя, а метод (функция), который возвращает имя поля который у тебя используется в качестве логина
Не в сети
Спасибо за помощь, но чёт всё равно не понял. В общем, сделал свои представления с формами ларавел, переделал оригинальный мидл, поставил свои маршруты и экшены и теперь полностью уверен в завтрашнем дне.
//создай роуты
///
Route::group(['middleware' => 'guest'], function () {
Route::get('/login', function () {
return view('main_views.form.auth_form');
});
Route::get('/register', function () {
return view('main_views.form.registr_form');
});
Route::post('/create_user', array( 'as'=> 'create_user' , 'uses' => 'HomeController@create_user'));
Route::post('/auth', array('as' => 'auth', 'uses' => 'HomeController@auth'));
});
Route::post('/logout', function () {
//сработает только когда юзер авторизирован
if (Auth::guest() == false ) {
Auth::logout();
return redirect('/');
}
});
Route::get('/user/{nameUser}', function () {
//return view('welcome');
return view('main_views.form.user');
});
///////////////////
//создай экшны в контрполлерах
public function create_user(Request $request)
{
$arr = $request->all();
$arr['password'] = 10;
$rules = array(
'name' => 'required|max:255',
'age' => 'required|max:2',
'gender' => 'required',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed'
);
$validator = Validator::make($request->all(), $rules);
if ($validator->fails() == false)
{
$user = new User;
$arr = $request->all();
$pass = bcrypt( $arr['password'] );
$arr['password'] = $pass;
$arr['password_confirmation'] = $pass;
$user = $user->create($arr );
Auth::loginUsingId( $user->id , true);
return redirect('user/'.$user->name);
}
else return redirect()->back()->withInput()->withErrors($validator);
}
public function auth(Request $request)
{
$arr = $request->all();
$rules = array(
'email' => 'required',
'password' => 'required|min:6|confirmed'
);
$validator = Validator::make( $arr, $rules);
$pass = bcrypt( $arr['password'] );
$arr['password'] = $pass;
$arr['password_confirmation'] = $pass;
if ($validator->fails() == false)
{
$user = User::where('email', '=', $request->email )->select('id','name')->first();
Auth::loginUsingId( $user->id , true);
return redirect('user/'.$user->name);
}
else return redirect()->back()->withInput()->withErrors($validator);
}
//в стандартном RedirectIfAuthenticated.php переопредели хендлер
public function handle($request, Closure $next, $guard = null)
{
/* if (Auth::guard($guard)->check()) {
return redirect('/home');
}
*/
if (Auth::guest() ==false ) return redirect('/'); //когда авторизирован, будет перевод на главную
return $next($request);
}
Изменено Kirir (02.03.2017 18:13:43)
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
С авторизацией тупанул. Вот ок
if (Auth::attempt(['email' => $request->email, 'password' => $request->password],true)) {
$user = User::where('email', '=', $request->email )->select('name')->first();
return redirect('user/' . $user->name);
} else {
return redirect()->back()->withInput()->with( array('message'=>'Введите существующий mail и пароль для входа'));
}
Изменено Kirir (02.03.2017 19:15:01)
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети