2016-09-15 15 views
3

私はLaravel 5.3を使用していて、make:auth artisanコマンドを使用してログイン/登録システムをスキャフォールドしています。私は企業としてのログインをしているので、Companyというテーブルがあります。 Userテーブルの代わりにCompanyテーブルから電子メールとパスワードを取得するために元のsqlを変更するにはどうすればよいですか?Laravel 5.3 Authのユーザーテーブルを変更する

私はすでにプロバイダの一部でconfig/auth.phpファイルに変更しようとしましたが、私は'model' => App\Company::class,'model' => App\User::class,を変更したとき、それはログインし始めたが、関係なく、メールアドレスとパスワードの入力が完全に間違っていた場合。何か案は?

EDIT:でCompanyレジスタとログインした後、それはUsersを招待する能力を有し、従ってオリジナルUserテーブルは

+0

'email' => 'required|email|max:255|unique:users', 

から

は、デフォルトのユーザーテーブルを削除し、それほど難しいことではありませんカスタムを作成します。 –

+0

@Iftikharuddin私の編集を参照してください –

答えて

7

Laravel 5.3のままでなければならない認証の実装の変化を有しています。私にとって、この方法で解決しました。

最初に、識別に使用する基準を満たす会社テーブルをデータベースに用意してください。したがって、名前、電子メール、パスワード、およびremember_token列が必要です。詳細はhereです。

config/auth.phpで、ユーザーモデルを会社のクラスに変更します。

'providers' => [ 
    'users' => [ 
     'driver' => 'eloquent', 
     'model' => App\Company::class, 
    ], 

認証を拡張するアプリケーションフォルダ内の会社のクラスを作成し、これを使用:Companyクラスで

use Illuminate\Foundation\Auth\User as Authenticatable; 

、入力可能なと隠しフィールドを定義します。

use App\Company; 

RegisterController.php変更で
class Company extends Authenticatable { 

protected $fillable = [ 
    'name', 'email', 'password', 
]; 

protected $hidden = [ 
    'password', 'remember_token', 
]; 
} 

"使用のApp \ユーザー" は、当社とRegisterController.phpでバリ関数を作成し調整は::

を作成
protected function create(array $data) 
{ 
    return Company::create([ 
     'name' => $data['name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 
} 

protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'name' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:companies', 
     'password' => 'required|min:6|confirmed', 
    ]); 
} 

'email' => '必須|メール|最大:255 |ユニーク:企業 '
(会社のモデルの表名は会社になります)

1

registerContollerで検証を変更することを忘れないでください。

'email' => 'required|email|max:255|unique:company', 
関連する問題