Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 01.03.2017 14:09:57

Как добавить новые поля в форму авторизации laravel + ajax

С регистрацией всё понятно, код валидации тут и видно, где новые поля добавлять и правила проверки
\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

Не в сети

#2 01.03.2017 15:32:09

Re: Как добавить новые поля в форму авторизации laravel + ajax

Нужные методы в трейте AuthenticatesUsers

Тебе надо скопировать то что ты хочешь редактировать в твой контроллер и изменить

Не в сети

#3 01.03.2017 15:49:30

Re: Как добавить новые поля в форму авторизации laravel + ajax

Как я понял, это оно? Тут типа первое - это меил(хотя в форме идёт имя, но в форме это меил), потом пароль, и можно другите поля также вписать, да?

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

Не в сети

#4 01.03.2017 17:49:30

Re: Как добавить новые поля в форму авторизации laravel + ajax

Это валидация переданных данных

Не в сети

#5 01.03.2017 20:07:18

Re: Как добавить новые поля в форму авторизации laravel + ajax

Да, но в формк принимает меил и пароль, а тут первое имя.


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#6 02.03.2017 12:29:53

Re: Как добавить новые поля в форму авторизации laravel + ajax

username() - это не имя, а метод (функция), который возвращает имя поля который у тебя используется в качестве логина

Не в сети

#7 02.03.2017 18:13:15

Re: Как добавить новые поля в форму авторизации laravel + ajax

Спасибо за помощь, но чёт всё равно не понял. В общем, сделал свои представления с формами ларавел, переделал оригинальный мидл, поставил свои маршруты и экшены и теперь полностью уверен в завтрашнем дне.

			
//создай роуты
	///
	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

Не в сети

#8 02.03.2017 19:14:49

Re: Как добавить новые поля в форму авторизации laravel + ajax

С авторизацией тупанул. Вот ок

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

Не в сети

Подвал раздела