Hiện tại mình đang gặp tình huống này, mong mọi người giúp đỡ.
Mình có 2 loại trang, User và Admin.
- Admin : cần email và password login
- User: chỉ cần email để login
Mình đang viết 2 loại middleware như sau
IsMember.php dùng để check xem có phải User hay không :
<?php
namespace App\Http\Middleware;
use Auth;
use Closure;
class IsMember
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::check() ) {
return $next($request);
}
return redirect('/auth');
}
}
IsAdmin.php check có phải là admin hay không :
<?php
namespace App\Http\Middleware;
use Auth;
use Closure;
class IsAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
var_dump(Auth::user());
if (Auth::check()) {
if (Auth::user()->role == 1) {
return $next($request);
}
return redirect('/');
}
return redirect('/login');
}
}
Ở admin thì mình dùng Authentication của Laravel để login
Còn ở trang user do đặc điểm chỉ dùng email để login vào nên mình viết như sau:
<?php
namespace App\Http\Controllers\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
use Auth;
class UserController extends Controller
{
public function showLoginForm()
{
return view('user.login');
}
public function login(Request $request)
{
$validatedData = $request->validate([
'email' => 'required|email'
]);
$user = User::where('email', trim($request->input('email')))->first();
if (!$user) {
return redirect('/auth')->withErrors('This email is not valid');
} else {
Auth::login($user);
return redirect('/');
}
}
}
Vấn đề xảy ra: Nếu ai đó biết được email của admin thì sẽ log in được vào trang user, sau đó từ user chuyển sang admin mà không cần nhập password. Ai có cao kiến gì về vấn đề này giúp mình được không? Mình cảm ơn trước.