Rättigheter & roller

Varför rättigheter och roller?

  • Bestämma tillgång till sökvägar.
  • Bestämma vem som ska kunna hantera & se vilket innehåll.
  • Bestämma vem som ska ha tillgång till viss funktionalitet.

Olika typer av kontroller

  • _permission
  • _role
  • _custom_access

_Permission

Text

_Permission

hello_world.content:
  path: '/hello-world-permissions'
  defaults:
    _controller: '\Drupal\hello_world_permissions\Controller\HelloWorldPermissionsController::content'
    _title: 'Hello Permissions'
  requirements:
    _permission: 'access hello world page'

Anger vilken rättighet som ska styra tillgång till vår route.

_Permission

access hello world page:
  title: 'Access hello world page'

Definera egena permissions

hello_world_permissions.permissions.yml

_Role

Anger vilken roll som ska få tillgång till ens route. 

hello_world.content:
  path: '/hello-world-permissions'
  defaults:
    _controller: '\Drupal\hello_world_permissions\Controller\HelloWorldPermissionsController::content'
    _title: 'Hello Permissions'
  requirements:
    _role: 'administrator'

_Custom

Används vid mer komplexa scenario

hello_world.content:
  path: '/hello-world-permissions'
  defaults:
    _controller: '\Drupal\hello_world_permissions\Controller\HWPController::content'
    _title: 'Hello Permissions'
  requirements:
    _custom_access:  '\Drupal\hello_world_permissions\Controller\HWPController::access'

_Custom

Används vid mer komplexa scenario

use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Access\AccessResult;

  /**
   * Check access for page.
   *
   * @return array
   */
  public function access(AccountInterface $account) {
    if ($account->getAccountName() == 'root') {
      return AccessResult::allowed();
    }
    else {
      return AccessResult::forbidden();
    }
  }

Uppgift 1

  1. Skapa en ny roll med namnet "VIP"
  2. Skapa en ny användare och ge användaren rollen "VIP".
  3. Skapa en modul med en ny route till en controller.
  4. Skapa en ny rättighet för sökvägen.
  5. Ge rollen "VIP" tillgång till sökvägen.

Uppgift 2

  1. Skapa en modul med en ny route till en controller.
  2. Skapa en access metod.
  3. Låt enbart användare med namnet på kontot ni skapade i uppgift 1 få tillgång till kontot.

Rättigheter & Roller

By Erik Johansson

Rättigheter & Roller

  • 681