簡體   English   中英

Laravel 5.8,Auth::user() 未使用用戶 model

[英]Laravel 5.8, Auth::user() is not using User model

我的用戶 model 中有一個 function,稱為 isAdmin,如果數據庫中的“Admin”設置為 1,則返回 true,否則返回 false。

這將如何與Auth::user()一起使用?

當我執行Auth::user()->isAdmin()時,它返回"Property [admin] does not exist on this collection instance."

這就是為什么我得出結論它可能不使用用戶 model?

用戶 model

public function isAdmin() {
   if($this->admin == 1) {
        return true;
     } else {
        return false;
   }
}
public function view () 
    {
        if(Auth::check() && Auth::user()->isAdmin()) {
            $user  = User::all();
            $post  = Post::all();
            $visit = Visits::all();


            return view('admin')->with('post', $post)->with('user', $user)->with('visit', $visit);
        } else {
            return redirect()->to('/');
        }
    }

如果我可以建議,對於這個用例,你實際上可以不用額外的 function。 你可以說auth()->user()->admin ,特別是如果數據庫中的 'admin' 列是 boolean 類型。

否則(即使 admin 列不是 boolean 類型)您可以在 model 中設置一個 mutator 方法,如下所示:

public function getIsAdminAttribute()
{
   return (bool) $this->admin;
}

然后檢查您是否可以像這樣訪問它: Auth::user()->isAdminauth()->user()->isAdmin

更好的是,您可能想了解GatePolicies以實現更強大的訪問控制。 https://laravel.com/docs/5.7/authorization

建議,將代碼更改為:

public function isAdmin() {
    return $this->admin;
}

此代碼與您上面的代碼完全相同。

現在在您使用的admin.blade.php中:

$user->isAdmin();

但是在 controller 你有:

$user  = User::all();

返回集合。

您應該對其進行迭代,並檢查每個用戶實例是否是管理員:

$users  = User::all();

在視圖中:

@foreach($users as $user)
 @if($user->isAdmin())
    {{ $user->name }} // some code here..
 @endif
@endforeach

無需做任何事情只需檢查登錄然后 auth()->check() 是否返回 true 然后 auth()->user() 返回用戶

public function view () 
    {
        if(auth()->check() && auth()->user()->isAdmin()) {
            $user  = User::all();
            $post  = Post::all();
            $visit = Visits::all();


            return view('admin')->with('post', $post)->with('user', $user)->with('visit', $visit);
        } else {
            return redirect()->to('/');
        }
    }
public function isAdmin()
    {
        return $this->admin;

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM