2016-04-19 1 views
0

У меня возникла проблема с моей кнопкой входа. Когда пользователь регистрируется, мне нужно изменить login в URL-адресе с чем-то еще, например admin, student (в зависимости от того, какой пользователь зарегистрирован). Проблема в том, что моя кнопка для loggin находится в содержании, которое я использую на каждой странице моего сайта. Можно ли это сделать?Необходимо изменить URL-адрес входа при входе пользователя в систему - Laravel 5.2

Вот кнопка на мой взгляд

<ul class="nav navbar-nav navbar-right"> 
    <li class="{{ set_active(['login']) }}"> 
     <a href="{{ url('login') }}"><span class="glyphicon glyphicon-education"></span> Дневник</a> 
    </li> 
</ul> 

Я добавляю мой AuthController

<?php 

class AuthController { 

    public function getLogin() { 
     return view('auth.login', [ 
     ]); 
    } 

    public function postLogin(\Illuminate\Http\Request $request) { 
     if (Auth::attempt([ 
        'username' => $request->input('username'), 
        'password' => $request->input('password'), 
        'type' => 'admin' 
       ])) { 
      return redirect('admin'); 
     } 


     if (Auth::attempt([ 
        'username' => $request->input('username'), 
        'password' => $request->input('password'), 
        'type' => 'teacher' 
       ])) { 
      return redirect('educator/account'); 
     } 

     if (Auth::attempt([ 
        'username' => $request->input('username'), 
        'password' => $request->input('password'), 
        'type' => 'student' 
       ])) { 
      return redirect('stu'); 
     } 


     return redirect('login')->with('message', [ 
        'type' => 'danger', 
        'message' => 'Грешно потребителско име или парола!' 
     ]); 
    } 

    public function getLogout() { 
     Auth::logout(); 

     return redirect('login'); 
    } 
+0

Не могли бы вы объяснить больше проблем? –

+0

Проблема в том, что мне нужно изменить URL-адрес на кнопку входа в систему, поэтому, когда пользователь регистрирует URL-адрес, чтобы не войти в систему, кроме администратора, например. –

ответ

0

я могу это исправить, добавив в мое Перенаправление Middleware так, что на основе типа пользователя он будет перенаправлен.

public function handle($request, Closure $next, $guard = null) { 
    if (Auth::guard($guard)->check()) { 
     if (Auth::user()->type == 'admin') { 
      return redirect('admin'); 
     } 
     if (Auth::user()->type == 'student') { 
      return redirect('stu'); 
     } 
     if (Auth::user()->type == 'teacher') { 
      return redirect('educator/account'); 
     } else { 
      return redirect('login'); 
     } 
    } 

    return $next($request); 
} 
0

Вы можете проверить, если пользователь в настоящее время проверку подлинности в системе с помощью лезвия:

<ul class="nav navbar-nav navbar-right"> 
    <li class="{{ set_active(['login']) }}"> 
     @if(Auth::check()) 
      @if(Auth::user()->type == 'student') 
      <a href="{{ url('student') }}"> 
      @elseif (Auth::user()->type == 'admin') 
      <a href="{{ url('admin') }}"> 
      @endif 
     @else 
      <a href="{{ url('login') }}"> 
     @endif 

      <span class="glyphicon glyphicon-education"></span> Дневник 
     </a> 
    </li> 
</ul> 
+0

Звонок на неопределенный метод Illuminate \ Database \ Query \ Builder :: getRole() –

+0

Я не использую RoleMiddleware. Я проверяю роль здесь в AuthController. –

+0

'if (Auth :: попытка ([ 'username' => $ request-> input ('username'), 'password' => $ request-> input ('password'), 'type' => 'admin' (вот роль) ])) { return redirect ('admin'); } ' –

0

Возможно, вам захочется использовать именованные маршруты, включая partial views or sub views и передать данные, которые вы хотите включить в URL-адрес кнопки.

Например, ваш маршрут.

Route::get('login', ['as' => 'login', 'uses' => '[email protected]']); 

Route::post('signin', ['as' => 'signin', 'uses' => '[email protected]']); 

Route::get('admin', ['as' => 'admin', 'uses' => '[email protected]']); 

Route::get('educator/teacher', ['as' => 'teacher', 'uses' => '[email protected]']); 

В вашем HomeController.

public function index() 
{ 
    $type = 'login'; 

    return view('home', compact('type')); 
} 

В вашем AuthController.

// Auth controller 

public function postLogin(Request $request) 
{ 
    if (Auth::attempt([ 
     'username' => $request->input('username'), 
     'password' => $request->input('password') 
    ]) { 
     $type = Auth::user()->type; 

     return redirect()->route($type); 
    } 

    return redirect('login')->with('message', 'Your message here'); 
} 

В вашем AdminController.

public function getAdmin() 
{ 
    $type = Auth::user()->type; 

    return view('admin', compact('type')); 
} 

public function getTeacher() 
{ 
    $type = Auth::user()->type; 

    return view('teacher', compact('type')); 
} 

Затем в определении файла loginButton.blade.php в вас видит

// resources/views/partials/loginButton.blade.php 

<ul class="nav navbar-nav navbar-right"> 
    <li class="{{ set_active(['login']) }}"> 
     <a href="{{ url({{type}}) }}"> 
      <span class="glyphicon glyphicon-education"></span> 
      Дневник 
     </a> 
    </li> 
</ul> 

Затем включите его в любой странице вам это нужно до тех пор, как метод визуализации вид передает переменную $ типа к виду. Надеюсь это поможет.

// resources/views/home.blade.php 

<div> 
    @include('partials.loginButton') 

    <!-- Homepage Contents --> 
</div> 
Смежные вопросы