---
# System prepended metadata

title: '@auth@endauth實現部分頁面權限'
tags: [laravel.7, blade, laravel]

---

# @auth@endauth實現部分頁面權限
#### 好用的Blade語法實例01
laravel的blade語法中，有一些語法可以選擇隱藏或者展示程式碼，讓一些人看得到一些人看不到。

主要是：
:::success
`@auth`登入才能看到這行字 `@endauth`
:::
跟
:::success
`@guest`不用登入就能看到這行字`@endguest`
:::
進階的作法是
:::info
`@auth`登入才看得到這行字`@else`不用登入就能看到這行，但是登入後看不到`@endauth`
:::


如果想要設置更複雜的篩選條件可以用下面這個
:::warning
`@if(條件)`符合條件才看得到`@endif`
:::
最近剛好在研究使用者的多層權限，我在使用者的user資料表中添加了一個欄位`role`，當中用數字1~4代表不同的權限階層，假設我只想讓某個權限階層的人，比如階層1，只有這個階層可以看到某段程式碼，像下面這樣：
```php=
@if (Auth::user()->role == '1')				
    <div class="card-footer text-muted">
        <a href="/product/edit/{{$product->id}}" class="btn btn-warning"><i class="fas fa-edit"></i></a>
        <a href="/product/delete/{{$product->id}}" class="btn btn-danger"><i class="fas fa-trash-alt"></i></a>
    </div>	
@endif
```
:::info
上面的意思是，當這個帳號的權限是1的時候(使用者欄位role=1)，他才能看到這一段被包起來的程式碼。
:::
![](https://i.imgur.com/AvNOapW.png)![](https://i.imgur.com/g9Z72cD.png)
:::info
上面左側的圖(手機版是上圖)，是權限不符合的人看到的樣子。
右側的圖(手機版的下圖)是權限符合的人看到的樣子。
:::
:::danger
不過這個語法在遇到訪客(未登入者)的時候，會出現報錯，後來找到了解法。
[報錯續集跟...解法?(點我)](https://hackmd.io/@codehome/S14DgByat)
:::

###### tags: `laravel` `laravel.7` `blade`


