Sto cercando di implementare un sistema di login in cui l'utente verrà reindirizzato solo se è presente un parametro get nell'URL, altrimenti verrà reindirizzato a la pagina del profilo.Laravel 5 come utilizzare il parametro get dall'URL con il metodo di accesso del controller
Quindi, se l'URI è qualcosa di simile (nessun parametro get)
/login
se il successo, l'utente sarà reindirizzare alla pagina del profilo.
Ma se l'URI ha il parametro get come per esempio
/login?r=articles
l'utente verrà reindirizzato alla pagina di articoli al posto di quella di default alla pagina del profilo.
La domanda è, nel controller, come può farlo, se possibile, o come posso verificare il parametro get?
routes.php
// Signin
Route::post('/account/signin', [
'uses' => '[email protected]',
'as' => 'user.signin',
]);
UserController.php
// Signin
public function postSignIn(Request $request)
{
$this->validate($request, [
'login-email' => 'required|email',
'login-password' => 'required'
]);
if (Auth::attempt(['email' => $request['login-email'], 'password' => $request['login-password']]))
{
// Tried this, isn't working... (maybe something's missing ??)
$redirect = $request->input('r');
if ($redirect) {
return redirect()->route($redirect);
}
// -->
return redirect()->route('user.account');
}
return redirect()->back();
}
signin.blade.php
<form role="form" action="{{ route('user.signin') }}" method="post" class="login-form" name="login">
<div class="form-group {{ $errors->has('login-email') ? 'has-error' : '' }}">
<label class="sr-only" for="email">Email</label>
<input type="text" name="login-email" value="{{ Request::old('login-email') }}" placeholder="Email..." class="form-username form-control" id="form-username">
</div>
<div class="form-group {{ $errors->has('login-password') ? 'has-error' : '' }}">
<label class="sr-only" for="password">Password</label>
<input type="password" name="login-password" value="{{ Request::old('login-password') }}" placeholder="Password..." class="form-password form-control" id="form-password">
</div>
<div class="form-group">
<input type="checkbox" name="remember" value="{{ Request::old('remember') }}" id="remember">
Remember
</div>
<button type="submit" class="btn">Sign in!</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>
Grazie.
Aggiornato
Grazie a tutti per le vostre risposte, il fatto è che sto ancora conoscere laravel e questo è probabilmente il motivo non riesco a implementare nel modo giusto le soluzioni che voi ragazzi condiviso.
Detto questo, ho funzionato creando un campo nascosto condizionale che contiene il valore della query e in questo modo una volta che l'utente ha inviato il modulo, verrà passato con il resto degli argomenti $ response.
signin.blade.php
<form role="form" action="{{ route('user.signin') }}" method="post" class="login-form" name="login">
<div class="form-group {{ $errors->has('login-email') ? 'has-error' : '' }}">
<label class="sr-only" for="email">Email</label>
<input type="text" name="login-email" value="{{ Request::old('login-email') }}" placeholder="Email..." class="form-username form-control" id="form-username">
</div>
<div class="form-group {{ $errors->has('login-password') ? 'has-error' : '' }}">
<label class="sr-only" for="password">Password</label>
<input type="password" name="login-password" value="{{ Request::old('login-password') }}" placeholder="Password..." class="form-password form-control" id="form-password">
</div>
<div class="form-group">
<input type="checkbox" name="remember" value="{{ Request::old('remember') }}" id="remember">
Remember
</div>
<button type="submit" class="btn">Sign in!</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">
<!-- Verify condition -->
@if(isset($_GET['referer']))
<input type="hidden" name="referer" value="{{ $_GET['referer'] }}">
@endif
</form>
UserController.php
// Signin
public function postSignIn(Request $request)
{
$this->validate($request, [
'login-email' => 'required|email',
'login-password' => 'required'
]);
if (Auth::attempt(['email' => $request['login-email'], 'password' => $request['login-password']]))
{
// Check for the new argument 'referer'
if (isset($request->referer)) {
return redirect()->route($request->referer);
}
// -->
return redirect()->route('user.account');
}
return redirect()->back();
}
Come così, funziona.
Non so se è un modo praticabile e sicuro per farlo in Laravel 5, ma funziona.
per favore accetta la mia risposta – msonowal
scusa @ManashSonowal ma non riesco ancora a farlo funzionare ... – Bruno