2016-05-23 11 views
0

私はChannelというモデルを持っていますが、購入したかどうかによって公開されているものもあれば私的に入手可能なものもあります。Laravel Modelユーザーがログインしたかどうかに基づいて返されるフィールド

ログインしていない、またはチャンネルを購入していない場合、いくつかのフィールドへのアクセスを制限する最良の方法は何か不思議でした。

これはRestFUL APIで使用されており、JWTを使用しているため、いつでもヘッダーが存在するかどうかを確認できます。

モデルでLaravelのtoArray関数をオーバーライドし、要件が満たされていない場合は特定のフィールドを設定解除することを考えていましたが、これがベストプラクティスであるかどうかはわかりません。

アイデア?

答えて

1

toArray()とおそらくはtoJson()を上書きすることになりますが、私にはこれは「ジャンク」と感じます。あなたがすることによってこれを行うだろう

$model = \App\MyModel::find($id); 
return $model->adaptFieldsToAuthStatus(); 

:モデルはJSONとしてレンダリングされるときに応答を返す前$hidden配列を変えるチェーン可能メソッドを作成することができるようにフィールド

$hidden配列のコントロールは、返されます$hidden配列にフィールドを追加adaptFieldsToAuthStatus()機能で条件文の束を持つ:

if (Auth::check()) { 

    $this->hidden[] = 'super_secret_field_name'; 
    $this->hidden[] = 'super_secret_field_name2'; 

} 

// Return the instance of the class so it's chainable. 
return $this; 

私はそれが私はそれを行うだろうかと思います。

関連する問題