Условно перенаправить пользователей после входа в рюкзак laravel - PullRequest
0 голосов
/ 07 июня 2019

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

С наилучшими пожеланиями.

Редактировать.

Это код в контроллере входа в систему.

<?php

namespace Backpack\Base\app\Http\Controllers\Auth;

use Backpack\Base\app\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;

class LoginController extends Controller{
protected $data = []; // the information we send to the view

protected $redirectTo = '/home';

/*
|--------------------------------------------------------------------------
| 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 {
    logout as defaultLogout;
}

protected function authenticated(Request $request, $user){
    /*if ( $user->isAdmin() ) {// do your margic here
        return redirect('/home1');
    }*/

    return redirect('/myhome');
}

/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $guard = backpack_guard_name();

    $this->middleware("guest:$guard", ['except' => 'logout']);

    // ----------------------------------
    // Use the admin prefix in all routes
    // ----------------------------------

    // If not logged in redirect here.
    $this->loginPath = property_exists($this, 'loginPath') ? $this->loginPath
        : backpack_url('login');

    // Redirect here after successful login.
    $this->redirectTo = property_exists($this, 'redirectTo') ? $this->redirectTo
        : backpack_url('dashboard');

    // Redirect here after logout.
    $this->redirectAfterLogout = property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout
        : backpack_url();
}

/**
 * Return custom username for authentication.
 *
 * @return string
 */
public function username()
{
    return backpack_authentication_column();
}

/**
 * Log the user out and redirect him to specific location.
 *
 * @param \Illuminate\Http\Request $request
 *
 * @return \Illuminate\Http\Response
 */
public function logout(Request $request)
{
    // Do the default logout procedure
    $this->guard()->logout();

    // And redirect to custom location
    return redirect($this->redirectAfterLogout);
}

/**
 * Get the guard to be used during logout.
 *
 * @return \Illuminate\Contracts\Auth\StatefulGuard
 */
protected function guard()
{
    return backpack_auth();
}

// -------------------------------------------------------
// Laravel overwrites for loading backpack views
// -------------------------------------------------------

/**
 * Show the application login form.
 *
 * @return \Illuminate\Http\Response
 */
public function showLoginForm()
{
    $this->data['title'] = trans('backpack::base.login'); // set the page title
    $this->data['username'] = $this->username();

    return view('backpack::auth.login', $this->data);
}
}

Если я введу этот код в путь

vendor\backpack\base\src\app\Http\Controllers\Auth\LoginController.php

Он отлично работает.Но если я введу код в

app\Http\Controllers\Auth\LoginController.php

Не работает

Я пытаюсь расширить контроллер, как это

use Backpack\Base\app\Http\Controllers\Auth\LoginController as OriginalLoginController;

class MyLoginController extends OriginalLoginController{

 .....
}

1 Ответ

0 голосов
/ 07 июня 2019

Чтобы создать перенаправление в Laravel:

<?php

if($x){
    return redirect()->route('routeName1', [$arr, $of, $params]);
}
else if($y){
    return redirect()->route('routeName2', [$arr, $of, $params]);
}
...