admin_showroom can only edit sample of his own showroom
This commit is contained in:
20
web/modules/custom/materio_samples/materio_samples.module
Normal file
20
web/modules/custom/materio_samples/materio_samples.module
Normal 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;
|
||||
}
|
||||
}
|
@@ -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
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user