2017-11-11 87 views
0

我正在爲我的俱樂部構建會員數據庫應用程序。我正在使用Laravel 5來構建此解決方案。如何在laravel應用程序中不爲用戶使用電子郵件

我有標準的身份驗證設置和包含大部分成員數據的配置文件表。所有成員都進行了配置,但不一定是活躍用戶。

我想要做的是用激活替換註冊。創建用戶和配置文件,然後默認禁用,除非管理員授予成員登錄權限。這樣,嘗試將配置文件附加到新用戶更簡單。

當被授予時,用戶將通過提供他們的個人資料數據中的一對值來激活他們的用戶訪問,以驗證他們是誰。從那裏,他們更改密碼,並可以看到他們的個人資料。

我的問題是我如何在這種情況下用激活替換註冊?謝謝。

+0

雖然這不是一個「答案」(這是註釋部分畢竟),我會說,你應該考慮對這些帳戶設置過期時間和運行一個定時的Cron工作去除它們,沒有任何意義使數據庫與數百個「死亡」記錄混淆起來。 – ArtisticPhoenix

+0

通常情況下,您希望發送含有某種散列「代碼」的電子郵件,並在使用指向的頁面時將該帳戶翻轉。在laravel我不知道,從來沒有使用它。我只使用PHP – ArtisticPhoenix

回答

0

多種方法可以達到這一活動

  1. 可以保持在用戶表中的屬性,無論他是否被激活,所以即使他登錄一邊瀏覽網站,如果用戶不激活,他會顯示有限的內容和等待激活的通知
  2. 如果你不想讓我看到任何東西,如果沒有激活,那麼你可以重寫LoginController中的認證功能,並強制註銷錯誤消息等待激活

例如

<?php 

namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 
use Illuminate\Http\Request; 

class LoginController extends Controller 
{ 

    use AuthenticatesUsers; 
... 

    /** 
    * The user has been authenticated. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param mixed $user 
    * @return mixed 
    */ 
    protected function authenticated(Request $request, $user) 
    { 
     if (!$user->activated) { 
      \Auth::logout(); 
      return redirect()->route('login')->with('error', 'Awaiting activation'); 
     } 
    } 
} 

瞭解更多關於身份驗證 - https://laravel.com/docs/5.5/authentication#authenticating-users

如果你想要去的第一種方式,以進一步保護它,你可以創建一箇中間件,並有它要求每一個路線,以確保用戶不要使用URL來緩和不必要的訪問。

<?php 

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Support\Facades\Auth; 

class ActivatedUser 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     $user = Auth::user(); 
     if (!$user->activated) { 
      Auth::logout(); 
      return redirect()->route('login')->with('error', 'Awaiting activation'); 
     } 
     return $next($request); 
    } 
} 

瞭解更多關於中間件 - https://laravel.com/docs/5.5/middleware

+0

這是美麗的信息。,這使我走向我的目標很遠。我們的代碼在哪裏注入「激活」頁面?我希望用戶必須將值插入到表單中以證明他們是誰,因此他們是要激活的用戶帳戶? – arcee123

+0

不明白您要查看的用戶必須輸入哪些信息,如果管理員正在批准該帳戶,在管理控制檯上,他可以通過激活字段上的_where_子句輕鬆查看未激活的帳戶,並有一個激活按鈕只是將'0'變成'1' – rsakhale

相關問題