2017-06-03 18 views
0

サブドメインに基づく認証に複数のテーブルを使用しようとしています。したがって、実行時にSentinelのsetModel関数を使用してモデルインスタンスを設定しようとしています。私のルートでそうLaravel Sentinel setModelが間違ったテーブルにアクセスしています

私が持っているいくつかの単純な論理ファイル:ロジックは1つのURLであること

if (Request::getHost() == $url) { 
    Sentinel::getUserRepository()->setModel('App\Client'); 
} else { 
    Sentinel::getUserRepository()->setModel('App\User'); 
} 

は、一つのモデルを使用し、他は他のモデルを使用しています。私は私のようなリターンを得るdd(Sentinel::getUserRepository());行うことでApp\Clientをロードしようとしていたときに今、:

:これは素晴らしいです

IlluminateUserRepository {#113 ▼ 
    #hasher: NativeHasher {#114} 
    #model: "App\Client" 
    #dispatcher: Dispatcher {#23 ▶} 
    #dispatcherStatus: true 
} 

を私はSentinel::getUser();を呼び出すときに、しかし、私は次のような出力が残されています

EloquentUser {#230 ▼ 
    #table: "users" 
    #fillable: array:5 [▶] 
    #hidden: array:1 [▶] 
    #persistableKey: "user_id" 
    #persistableRelationship: "persistences" 
    #loginNames: array:1 [▶] 
    #connection: "mysql" 
    #primaryKey: "id" 
    #keyType: "int" 
    +incrementing: true 
    #with: [] 
    #withCount: [] 
    #perPage: 15 
    +exists: true 
    +wasRecentlyCreated: false 
    #attributes: array:12 [▶] 
    #original: array:12 [▶] 
    #casts: [] 
    #dates: [] 
    #dateFormat: null 
    #appends: [] 
    #events: [] 
    #observables: [] 
    #relations: [] 
    #touches: [] 
    +timestamps: true 
    #visible: [] 
    #guarded: array:1 [▶] 
    #permissionsInstance: null 
} 

App\ClientモデルではなくApp\Userモデルを指しています。

なぜ、私は参照しようとしているモデルを見てSentinelの機能を得ることができないようです。

私のクライアントモデルが参考になりました。

namespace App; 

class Client extends \Cartalyst\Sentinel\Users\EloquentUser 
{ 
    /** 
    * The fields for sentinel to authenticate (login) 
    * 
    * @var array 
    */ 
    protected $loginNames = ['email']; 

    /** 
    * The table associated with model. 
    * 
    * @var String 
    */ 
    protected $table = 'clients'; 

    /** 
    * Used for mass assignment fields. 
    * 
    * @var Array 
    */ 
    protected $fillable = ['email', 'password', 'permissions', 'last_login', 'first_name', 'last_name']; 
} 

あなたはイムは、私が何をしようとしています何を達成していない見ることができますしかし、私は、GitHubのWikiのからthis guideを使用しています。

ランタイム中にモデルを設定するこの方法を使用し、すべてのセンチネルコマンドで正しいモデルを使用するにはどうすればよいですか?

答えて

0

同じ問題に遭遇した人には、これをcartalyst/sentinelリポジトリの問題としてフラグを立て、いくつかのフィードバックが提供されました。上記指定されたモデルにアクセスするようSentinel::getUser()、この方法によって

Sentinel::getUserRepository()->setUsersModel('App\Client'); 
Sentinel::getPersistenceRepository()->setUsersModel('App\Client'); 

溶液は、ユーザリポジトリを設定するだけでなく、永続リポジトリにモデルを定義することだけではありません。

https://github.com/cartalyst/sentinel/issues/367

関連する問題