当前位置: 首页 > 知识库问答 >
问题:

如何检查用户是管理员或不是在laravel刀片视图

万知
2023-03-14

我有过

类用户表

+==============+
|     User     |
+==============+
|      id      |
+--------------+
|   firstname  |
+--------------+
|    lastname  |
+--------------+
|     email    |
+--------------+
|   password   |
+--------------+

还有我的角色表

+==============+
|     Roles    |
+==============+
|      id      |
+--------------+
|     name     |
+--------------+

而我的角色用户表是

+=============+
|  role_user  |
+=============+
|   user_id   |
+-------------+
|   role_id   |
+-------------+

如何检查当前登录的用户是管理员还是普通用户?

共有3个答案

单于奇略
2023-03-14

角色php

use Illuminate\Database\Eloquent\Model;

class Role extends Model {

    protected $fillable = [
        'name'
    ];

    /**
     * A role can have many users.
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function users() {

        return $this->belongsToMany('App\User');
    }

}

然后,您可以将其添加到用户模型

public function isAdmin()
{
    foreach ($this->roles()->get() as $role)
    {
        if ($role->name == 'Admin')
        {
            return true;
        }
    }
}

查看

@if(Auth::check())
    @if (Auth::user()->isAdmin())
        <h2>Admin user enter code here<h2>
    @endif
@endif
龚国源
2023-03-14

它不是用于此简单功能的ACL您甚至不需要数据库表角色您可以添加额外的tinyInteger状态列并添加数字,例如:

  • 0=禁用

要使其功能化,请在您的User.php中添加以下代码。

public function isDisabled ()
{
    return $this->statusCheck();
}

public function isVisitor ()
{
    return $this->statusCheck(1);
}

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

protected function statusCheck ($status = 0)
{
    return $this->status === $status ? true : false;
}

要签入blade模板,您可以添加

@if(Auth::user()->isDisabled())
    You are not Active
@elseif(Auth::user()->isVisitor())
    Welcome to example.com
@elseif(Auth::user()->isAdmin())
    Welcome Admin
@endif

此外,您还可以制作刀片自定义指令,将此代码粘贴到app/providers/AppServiceProvider。phpboot()方法中。

// Blade custom directives for isAdmin

    Blade::directive('isAdmin', function() {
        return "<?php if(Auth::user()->isAdmin()): ?>";
    });

    Blade::directive('endisAdmin', function() {
        return "<?php endif; ?>";
    });

// Blade custom directives for isVisitor

    Blade::directive('isVisitor', function() {
        return "<?php if(Auth::user()->isVisitor()): ?>";
    });

    Blade::directive('endisVisitor', function() {
        return "<?php endif; ?>";
    });

// Blade custom directives for isDisabled

    Blade::directive('isDisabled', function() {
        return "<?php if(Auth::user()->isDisabled()): ?>";
    });

    Blade::directive('endisDisabled', function() {
        return "<?php endif; ?>";
    });

要调用它,您需要在blade视图中写入以下行

@isAdmin()
     Welcome Admin
@endisAdmin

@isVisitor()
     Welcome to example.com
@endisVisitor

@isDisabled()
     Your are not active
@endisDisabled

简而言之,laravel为您提供了许多解决问题的方法,这取决于您的需求和应用程序结构。

郑帅
2023-03-14

您需要在用户模型中添加角色关系,如下所示:

public function roles() 
{
   return $this->belongsToMany(App\Role::class);
}

现在您需要创建isAdmin用户,如下所示:

public function isAdmin() 
{
   return in_array(1, $this->roles()->pluck('role_id')->all());
}

作为1,输入管理员角色的id。当然,它也可以用其他方式定义,但一切都取决于它将如何使用。

也可以这样定义:

public function isAdmin() 
{
   return $this->roles()->where('role_id', 1)->first();
}

现在,在刀片中,您可以执行以下操作:

@if (auth()->check())
   @if (auth()->user()->isAdmin())
      Hello Admin
   @else
      Hello standard user
   @endif
@endif
 类似资料:
  • 所以,我正在尝试检查用户是否在某个消息中被@过。这就是我目前拥有的: (它包装在客户端中。当检测到消息发送时) 我在这里做错了什么?

  • 我在显示管理视图时遇到一个小问题。我搜索了一下,但没有找到好的解决办法。我有一个会议桌,它存储两个不同用户的ID,并根据登录的用户显示记录。 我分配给变量

  • 超级管理员、管理员和用户。超级管理员可以为用户和管理员创建用户名、密码和用户类型(单选按钮)。我想做的是,当我输入登录用户名和密码时,系统将自动知道该用户是管理员或用户。如何获取已插入sql db的单选按钮的数据 如何获取已经存储在sql db中的用户类型(单选按钮)的数据。然后将其放入if条件。如果我的问题是正确的,但我想要的是区分用户和管理员。谢谢!输出 MainActivity.java 输

  • 问题内容: 目前这是我的看法 这是输出 我想展示这样的东西 问题答案: 很简单 首先将解码后的变量发送到视图(请参见Laravel Views): 然后只需使用常见的刀片构造(请参见Laravel模板制作):

  • 我偶尔收到以下信息: 这发生在具有表的页面中,其中的行延伸到视点之后。 我用来在表中选择随机行的方法 是否有一种方法来检查是否有元素在#Focus之后?

  • 我有变量 ,我想检查变量是否在laravel刀片文件中设置。我已经尝试作为 但是没有运气。如何检查变量设置或没有在Laravel5.3刀片文件。