admin_showroom can only edit sample of his own showroom

This commit is contained in:
2021-12-08 21:41:41 +01:00
parent 9cc1152f6b
commit 0335212a97
48 changed files with 603 additions and 10 deletions

View File

@@ -0,0 +1,20 @@
<?php
/**
* @file
* Contains materio_sapi.module.
*/
use Drupal\Core\Routing\RouteMatchInterface;
use Solarium\QueryType\Select\Query\Query;
use Drupal\search_api\Query\QueryInterface;
use Drupal\Core\Template\Attribute;
function materio_samples_form_node_materiau_edit_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id){
// get current user
$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
if(!$user->hasPermission('materio_samples_edit_materiaux_titles')){
$form['title']['#access'] = false;
}
}

View File

@@ -0,0 +1,9 @@
materio_samples_edit_materiaux_titles:
title: 'Edit titles of content type materiau'
description: 'Edit titles of content type materiau'
restrict access: true
materio_samples_edit_any_sample:
title: 'Edit any sample'
description: 'Edit any sample'
restrict access: true

View File

@@ -98,6 +98,25 @@ class SamplesDefaultWidget extends WidgetBase {
// '#field_prefix' => '<div class="container-inline">',
// '#field_suffix' => '</div>',
// ];
$disabled = true;
// get current user
$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
if($user->hasPermission('materio_samples_edit_any_sample')){
// check perms to edit any
$disabled = false;
}else if($disabled){
// get user showroom if any
$showrooms = $user->get('field_showroom')->referencedEntities();
// enable/disable field reagarding showroom
foreach($showrooms as $showroom){
if($term->id() == $showroom->id()){
$disabled = false;
break;
}
}
}
$element['target_id'] = [
'#type' => 'hidden',
'#default_value' => $target_id,
@@ -109,6 +128,7 @@ class SamplesDefaultWidget extends WidgetBase {
'#size' => 10,
'#maxlength' => 15,
'#attributes' => ['class' => ['container-inline']],
'#disabled' => $disabled,
];
// return ['value' => $element];
return $element;