artox-lab/clarc-bundle

在Clean Architecture中构建Symfony项目

安装次数: 25,328

依赖者: 1

建议者: 0

安全: 0

星星: 4

关注者: 4

分支: 5

开放问题: 8

类型:symfony-bundle


README

使用Symfony Flex的应用程序

打开命令行,进入您的项目目录并执行

$ composer require artox-lab/clarc-bundle

不使用Symfony Flex的应用程序

步骤 1: 下载Bundle

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

$ composer require artox-lab/clarc-bundle

此命令需要您已全局安装Composer,如Composer文档中的安装章节所述。

步骤 2: 启用Bundle

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

// config/bundles.php

return [
    // ...
    ArtoxLab\Bundle\ClarcBundle\ArtoxLabClarcBundle::class => ['all' => true],
];

步骤 3: 配置

配置Bundle

# config/packages/artox_lab_clarc.yaml

artox_lab_clarc:
    api:
        serializer:
            class: \ArtoxLab\Bundle\ClarcBundle\Core\Interfaces\UI\API\Transformers\Serializers\NullObjectArraySerializer
    security:
        rbac:
            permissions:
                ROLE_MAINTAINER:
                    - show

安全

如何设置获取认证用户权限 API端点

  1. 将以下内容添加到您的项目路由文件config/routes.yaml
artox_lab_clarc_bundle_user_permissions:
    path: /v1/user/permissions
    controller: ArtoxLab\Bundle\ClarcBundle\Core\Interfaces\UI\API\Controllers\PermissionController::permissions
    methods: GET
  1. config/packages/security.yaml中设置防火墙和访问控制
security:
    firewalls:
      users:
          pattern: ^/v1
          ...
    access_control:
        - { path: ^/v1/, roles: IS_AUTHENTICATED_FULLY }

注意:如果您有多个认证器 - 为每个认证器进行设置

如何使用RBAC

  1. 在配置config/packages/artox_lab_clarc.yaml中设置角色和权限
  2. 在您的用例/控制器中要求ArtoxLab\Bundle\ClarcBundle\Core\Entity\Security\AuthorizationChecker
  3. 检查用户权限$this->authorizationChecker->isGranted('permission_name')

导航

  1. 设置配置
# config/packages/artox_lab_clarc.yaml

artox_lab_clarc:
    navigation:
        left_menu:
            show_orphaned_root: false
            items:
                -   icon: portfolio
                    title: Управление компаниями
                    children:
                        -   icon: something
                            link: /companies
                            title: Компании
                            permissions: company.list
                        -   link: /companies/add
                            title: Добавить компанию
                            permissions: [company.create]
  1. 添加路由
# config/routes.yaml

artox_lab_admin_user_navigations:
    path: /user/navigations
    controller: ArtoxLab\Bundle\ClarcBundle\Core\Interfaces\UI\API\Controllers\NavigationController::userNavigation
    methods: GET
  1. 保护路由
# config/packages/security.yaml

security:
    firewalls:
        main:
            pattern: ^/user
            ...
    access_control:
        - { path: ^/user, roles: IS_AUTHENTICATED_FULLY}
  1. 使用认证调用API GET /user/navigations

了解更多