为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查用户角色并在 laravel 中显示选择选项

如何检查用户角色并在 laravel 中显示选择选项

PHP
慕仙森 2023-04-02 15:12:16
我有不同角色的用户,如管理员、员工、秘书等。我有一个发送信件的页面,在这个页面中我有一个select option显示指标。我希望当具有秘书角色的用户打开此页面时,看到所有指标,但具有其他角色的其他用户只能看到一个指标,如内部信件,我该怎么做?role我和之间有关系user:用户模型public function roles(){    return $this->belongsToMany(Role::class);}好榜样public function users(){    return $this->belongsToMany(User::class);}这是select option在发送信件页面:<select class="col-12 border mt-2 pt-2" name="indicator_id">        @foreach($indicators as $indicator)                <option value="{{ $indicator->id }}">{{ $indicator->name }}</option>        @endforeach</select>如您所见,指标来自其他地方。这是显示发送信件页面的信件控制器:$indicators = Indicator::all();return view('Letter.add', compact('indicators'));
查看完整描述

1 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

将此功能添加到检查用户角色的用户模型中:


   /**

 * Check if this user belongs to a role

 *

 * @return bool

 */

 public function hasRole($role_name)

 {

     foreach ($this->roles as $role){


         //I assumed the column which holds the role name is called role_name

         if ($role->role_name == $role_name)

             return true;

      }

     return false;

 }

现在在您看来,您可以这样称呼它:


<select class="col-12 border mt-2 pt-2" name="indicator_id">

    @foreach($indicators as $indicator)    

          @if (Auth::user()->hasRole('Secretary'))

                <option value="{{ $indicator->id }}">{{ $indicator->name }}</option>

          @elseif (!Auth::user()->hasRole('Secretary') && {{ $indicator->name }} == 'internalLetter')

               <option value="{{ $indicator->id }}">Internal Letter</option>

          @endif

    @endforeach   


</select>


查看完整回答
反对 回复 2023-04-02
  • 1 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信