Laravel Print 根据用户的权限选择选项

Posted

技术标签:

【中文标题】Laravel Print 根据用户的权限选择选项【英文标题】:Laravel Print select options accordingly user's permission 【发布时间】:2021-06-10 12:44:30 【问题描述】:

希望你一切顺利。

我正在使用 spatie 的权限包来管理我的用户的角色和权限。

我有 4 个角色

    管理员 超级经销商 经销商 零售商

在我的用户创建中,我使用Spatie\Permission\Models\Role 角色模型获取了所有角色......并且 foreach 循环生成选择值,但转折就在这里。 管理员可以创建所有类型的用户,但超级经销商只能创建经销商和零售商,经销商只能创建零售商。如何根据用户角色生成选项?

目前我写了这段代码,但它根本不工作

<select wire:model="role" name="role" class="block mt-1 w-full border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-sm block mt-1 w-full">
                <option value="" selected>Please select an option</option>
                @forelse ($roles as $role)
                
                    
                @role('admin')
                    @if ($role == 'admin' || $role == 'super distributor' )
                        <option value=" $role->name "> Str::ucfirst($role->name) </option> 
                    @endif
                @endrole 
                    
                @empty
                    <option >There is no roles available</option>  
                @endforelse
            </select>

提前致谢

编辑:感谢 @Abdul Rehman 的解决方案。

我稍微修改了一下,这是最终的解决方案

public function mount()
    
        $this->roles = $this->getRoles();
    

    public function getRoles()
    
        return [
            'admin' => Role::all(),
            'super distributor' => Role::whereIn('name', ['distributor','retailer','user'])->get(),
            'distributor' => Role::whereIn('name', ['retailer'])->get(),
            'retailer' => [],
            'user' => [],
        ][auth()->user()->roles->pluck('name')[0]];
    

【问题讨论】:

【参考方案1】:

从控制器处理这个事情不要让所有角色都获得基于哪个用户登录的角色。

喜欢

if(auth()->user()->hasRole('Admin'))
 Role::all() //write query to fetch all roles


if(auth()->user()->hasRole('Super Distributor'))
 Role::whereIn('id', [distributor_id,retailer_id])->get(); //write query to get only  distributor and retailer role

像上面的查询一样获取其他人。

【讨论】:

这是个好主意..我会在稍后将其标记为已解决。

以上是关于Laravel Print 根据用户的权限选择选项的主要内容,如果未能解决你的问题,请参考以下文章

从 $.load 获得的数组作为选择选项 Laravel Form

如何根据用户在 Laravel 5 中的角色选择用户?

使用 AJAX 和 Laravel 5.8 的动态依赖选择选项

在 Laravel Query Builder 中根据他们的技能以及匹配的技能选择用户

Android如何根据选择器意图中的用户操作请求权限

laravel - 在正确的选项卡中显示验证错误