亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

允許具有is_request 1 的用戶不登錄

允許具有is_request 1 的用戶不登錄

PHP
慕斯709654 2022-08-05 16:03:03
我目前正在開發一個人們可以提交注冊請求的系統。管理員需要接受請求才能使用戶能夠登錄。在我的數據庫中,我有一個名為“字段”,每次注冊時,此字段默認設置為1(在數據庫中默認設置為1),表示是。當此字段設置為 1 的用戶嘗試登錄時,需要通知他們其帳戶尚未激活。我該如何做到這一點?is_request當用戶嘗試注冊時,會發生以下情況:protected function create(array $data)    {        $users = User::where('role_id', 1)->get();        $user = User::create([            'firstname' => $data['firstname'],            'lastname' => $data['lastname'],            'email' => $data['email'],            'role_id' => 3,            'activated' => 0,            'user_token' => Str::random(32),            'password' => Hash::make($data['password']),        ]);        foreach($users as $admin) {            $admin->notify(new registerRequest($user));        }        Mail::to($user->email)->send(new RegisterRequestSend($user));        return $user;    }當后端的管理員“接受”請求時,該字段將設置為0,用戶需要能夠登錄到應用程序。is_request登錄控制器如下所示class LoginController extends Controller{    /*    |--------------------------------------------------------------------------    | 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;    /**     * Where to redirect users after login.     *     * @var string     */    protected $redirectTo = RouteServiceProvider::HOME;    /**     * Create a new controller instance.     *     * @return void     */    public function __construct()    {        $this->middleware('guest')->except('logout');    }}
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

您可以創建一個全局中間件來檢查用戶是否被接受:


namespace App\Http\Middleware;


use Closure;


class CheckIfAccepted

{

    /**

     * Handle an incoming request.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  \Closure  $next

     * @return mixed

     */

    public function handle($request, Closure $next)

    {

        if (auth()->check() && !auth()->user()->isAccepted) {

            auth()->logout();


            return redirect('not-accepted');

        }


        return $next($request);

    }

}

此中間件將注銷任何未被接受的經過身份驗證的用戶,并將其重定向到您選擇的路由。


更改為包含有關接受狀態的信息的屬性或方法。auth()->user()->isAccepted


如果希望中間件在每次請求時都運行,則可以將其添加為全局中間件,方法是將其添加到 中的 -array 中。$middlewareapp/Http/Kernel.php


您可以在文檔中閱讀有關中間件以及如何創建中間件的更多信息:https://laravel.com/docs/master/middleware


查看完整回答
反對 回復 2022-08-05
?
MM們

TA貢獻1886條經驗 獲得超2個贊

首先,您必須使管理員在收到通知時更新用戶的屬性


User::where('id' , $user_id)->update(['is_request' => 0]);


然后將其添加到您的登錄控制器中


public function credentials(Request $request)

    {

        $credentials = $request->only($this->username(), 'password');

        $credentials = array_add($credentials, 'is_request', 0);

        return $credentials;

    }


查看完整回答
反對 回復 2022-08-05
  • 2 回答
  • 0 關注
  • 134 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號