artox-lab/clarc-bundle

Build Symfony project within Clean Architecture

Maintainers

👁 steepdevs

Package info

github.com/artox-lab/clarc-bundle

Type:symfony-bundle

pkg:composer/artox-lab/clarc-bundle

Statistics

Installs: 30 038

Dependents: 1

Suggesters: 0

Stars: 3

Open Issues: 8

v5.2.17 2023-03-15 08:57 UTC

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT e2a548659bcdd3c1fd300e06259aa3cd9a52c691

  • Artur Turchin <a.turchin.woop@artox.com>

README

Applications that use Symfony Flex

Open a command console, enter your project directory and execute:

$ composer require artox-lab/clarc-bundle

Applications that don't use Symfony Flex

Step 1: Download the Bundle

Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:

$ composer require artox-lab/clarc-bundle

This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.

Step 2: Enable the Bundle

Then, enable the bundle by adding it to the list of registered bundles in the config/bundles.php file of your project:

// config/bundles.php

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

Step 3: Configuration

Configure 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

Security

How to setup get authenticated user permissions API endpoint

  1. Add to your project routes file 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. Setup firewall and access control in config/packages/security.yaml
security:
 firewalls:
 users:
 pattern: ^/v1
 ...
 access_control:
 - { path: ^/v1/, roles: IS_AUTHENTICATED_FULLY }

Note: If you have more than one authenticator - do the setup for each one

How to use RBAC

  1. Setup roles and permissions in config config/packages/artox_lab_clarc.yaml
  2. Require ArtoxLab\Bundle\ClarcBundle\Core\Entity\Security\AuthorizationChecker in your use case / controller
  3. Check user permission $this->authorizationChecker->isGranted('permission_name')

Navigation

  1. Setup config
# 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. Add routes
# 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. Secure routes
# config/packages/security.yaml

security:
 firewalls:
 main:
 pattern: ^/user
 ...
 access_control:
 - { path: ^/user, roles: IS_AUTHENTICATED_FULLY}
  1. Call API GET /user/navigations with authentication

Learn more