nexthb / symfony-permission

本包最新版本(dev-master)没有可用的许可证信息。

dev-master 2021-06-12 18:55 UTC

This package is not auto-updated.

Last update: 2024-09-30 08:40:06 UTC


README

将用户与角色关联。安装

第一步:下载Bundle

打开命令行,进入您的项目目录,并执行以下命令以下载此Bundle的最新稳定版本

$ composer require nexthb/symfony-permission

此命令要求您已全局安装Composer,请参阅Composer文档中的安装章节

第二步:启用Bundle

在Symfony中,该包将自动激活。但如果出现错误,您可以手动安装它。

然后,将Bundle添加到项目中config/bundles.php文件中注册的Bundle列表中,以启用该Bundle

<?php
// config/bundles.php

return [
    //...
     next\SymfonyPermissionBundle\SymfonyPermissionBundle::class => ['all' => true]
];

第三步:创建用户、角色、类

A) 创建用户类

为您的应用程序创建用户类。此类可以看起来和表现成任何您想要的:添加任何您认为有用的属性或方法。这是您的用户类。

<?php 
//...
use \next\SymfonyPermissionBundle\Model\BaseUser;
/**
 * @ORM\Entity(repositoryClass=UserRepository::class)
 * @UniqueEntity(fields={"email"}, message="There is already an account with this email")
 * @ORM\HasLifecycleCallbacks()
 */
class User extends BaseUser
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private ?int $id = null;
    /**
     * @ORM\ManyToMany(targetEntity=Role::class, inversedBy="users",cascade={"persist"})
     */
    protected $accessRoles;
}
B) 创建角色类

为您的应用程序创建角色类。此类可以看起来和表现成任何您想要的:添加任何您认为有用的属性或方法。这是您的角色类。

use next\SymfonyPermissionBundle\Model\Role as BaseRole;
/**
 * @ORM\Entity(repositoryClass=RoleRepository::class)
 * @ORM\HasLifecycleCallbacks()
 */
class Role extends BaseRole
{
    /**
     * @ORM\Column(type="string", length=100)
     */
    protected string $name;
    /**
     * @ORM\ManyToMany(targetEntity=User::class, mappedBy="roles")
     */
    protected $users;
}

第四步:设置Bundle

为设置创建一个“symfony_permission.yaml”文件。

# config/packages/symfony_permission.yaml

symfony_permission:
  user: App\Entity\User
  role: App\Entity\Role
  • user: 定义 'User' 类地址
  • role: 定义 'Role' 类地址

第五步:它做什么

此包允许您在数据库中管理用户和角色。安装后,您可以执行类似以下操作

PHP
  $user->hasRole($role);
  $user->hasAllRole($role,$role1);
  $user->hasAnyRole([$role,$role1]);
命令
 php bin/console next:user:create
 php bin/console next:role:create