2016-12-06 3 views
0

Когда пользователь входит в систему, я хочу, чтобы они были перенаправлены на страницу своего профиля, а не на главную страницу. У меня есть метод в другом контроллере, который получает профиль пользователя. Не уверен, что мне нужно сделать, поскольку профиль пользователя принимает переменную имени пользователя, но когда пользователь входит в систему, я только прошу указать адрес электронной почты и пароль.Перенаправление на страницу профиля после авторизации в laravel

Мой файл маршрута, но следующий метод находится в другом контроллере от контроллера аутентификации.

Route::get('/user/{username}', [ 
    'uses' => '[email protected]', 
    'as' => 'profile.index', 
    'middleware' => ['auth'], 
    ]); 

Мой следующий метод находится в моем контроллере аутентификации.

public function postSignin(Request $request) 
{ 
    $this->validate($request, [ 
     'email' => 'required', 
     'password' => 'required', 

     ]); 

    if (!Auth::attempt($request->only(['email', 'password']),  $request->has('remember'))) { 
     return redirect()->back()->with('info' , 'Could not sign you in with that info.'); 
    } 

     $user= User::where('username', $username)->first(); 
     return redirect()->route('profile.index') 
     ->with('info', 'You are now signed in.') 
     ->with('user', $user); 
    } 

Ниже в моем профиле контроллер ..

public function getProfile($username) 
{ 
    $user= User::where('username', $username)->first(); 

    if (!$user){ 
     abort(404); 
    } 
    return view('profile.index') 
     ->with('user', $user); 
} 

ответ

0

Чтобы правильно построить маршрут, вам нужно передать имя пользователя здесь:

$user = User::where('username', $username)->first(); 
    return redirect()->route('profile.index', ['username' => $user->username]) 
    ->with('info', 'You are now signed in.') 
    ->with('user', $user); 
+0

Я пробовал это, но я получаю имя пользователя undefined. Не знаю, как я могу это сделать, когда я только передаю по электронной почте и пароль – Slillz

+0

Это всего лишь пример, помощник, я не знаю вашу структуру базы данных, но вы должны, факт, что вам нужно передать что-то на этот маршрут, чтобы правильно его построить –

+0

Да, в моей базе данных мое имя пользователя - «имя пользователя», но я получаю ... Отсутствуют необходимые параметры для [Route: profile.index] [URI: user/{username}]. – Slillz

0

Получить имя из электронной почты предоставил и передал переменную $username на маршрут:

public function postSignin(Request $request) 
{ 
     if (!Auth::attempt($request->only(['email', 'password']),$request->has('remember'))) 
     { 
      return redirect()->back()->with('info' , 'Could not sign you in with that info.'); 
     } 

    $username=User::where(['email'=>$request->email])->first()->username; 
    return redirect()->route('profile.index')->with('username', $username); 
} 
+0

Когда я попробовал, у меня получилась ошибка: Отсутствуют требуемые параметры для [Route: profile.index] [URI: user/{username}]. – Slillz

+0

@Slillz 'return redirect ('user/{$ username}');' –

+0

Они мне предоставили: NotFoundHttpException в строке Application Application.php 902: – Slillz

Смежные вопросы