1. 程式人生 > >laravel按使用者型別來顯示或隱藏欄位

laravel按使用者型別來顯示或隱藏欄位

在api開發中,有時候需要對自己以外的其他普通使用者隱藏欄位,比如隱藏手機號。而對於admin使用者,則又不需要隱藏手機號。

所以,需要設計一種能夠簡單的根據不同使用者來顯示或隱藏欄位的方式。

方法基於laravel實現

use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    /**
     * 重寫toArray方法
     */
    public function toArray(){
        //獲取api使用者
        $me=app(Request::class)->user("api");
        if ($me!=null)
        {
            if ($me instanceof AdminUser)
            {
                //如果是admin使用者
                //TODO:使用admin使用者的顯示規則
            }else if($me instanceof User){
                if ($me->id==$this->id)
                {
                    //如果是自己
                    //TODO:使用面向自己的顯示規則
                }else{
                    //如果是其他普通使用者
                    //TODO:使用面向其他普通使用者的顯示規則
                }
            }
        }
        return parent::toArray();
    }
}

 這樣實現後,就不需要針對每一個api去修改規則了