瀏覽代碼

admin_showroom can only edit sample of his own showroom

bach 2 年之前
父節點
當前提交
0335212a97
共有 48 個文件被更改,包括 603 次插入10 次删除
  1. 1 0
      config/devel/devel.settings.yml
  2. 3 0
      config/sync/amswap.amswapconfig.yml
  3. 10 0
      config/sync/field.field.node.materiau.body.yml
  4. 8 0
      config/sync/field.field.node.materiau.field_distributor.yml
  5. 5 0
      config/sync/field.field.node.materiau.field_famille.yml
  6. 6 0
      config/sync/field.field.node.materiau.field_localisation_old.yml
  7. 8 0
      config/sync/field.field.node.materiau.field_manufacturer.yml
  8. 6 0
      config/sync/field.field.node.materiau.field_memo.yml
  9. 6 0
      config/sync/field.field.node.materiau.field_short_description.yml
  10. 8 0
      config/sync/field.field.node.materiau.field_tags.yml
  11. 8 0
      config/sync/field.field.node.materiau.field_thesaurus.yml
  12. 1 1
      config/sync/field.field.node.materiau.field_video.yml
  13. 1 1
      config/sync/field.storage.node.body.yml
  14. 4 0
      config/sync/field.storage.node.field_attachments.yml
  15. 4 0
      config/sync/field.storage.node.field_distributor.yml
  16. 4 0
      config/sync/field.storage.node.field_famille.yml
  17. 1 1
      config/sync/field.storage.node.field_fiche_expo.yml
  18. 4 0
      config/sync/field.storage.node.field_index.yml
  19. 1 1
      config/sync/field.storage.node.field_linked_articles.yml
  20. 1 1
      config/sync/field.storage.node.field_linked_materials.yml
  21. 4 0
      config/sync/field.storage.node.field_localisation_old.yml
  22. 4 0
      config/sync/field.storage.node.field_manufacturer.yml
  23. 4 0
      config/sync/field.storage.node.field_materiau_images.yml
  24. 1 1
      config/sync/field.storage.node.field_memo.yml
  25. 4 0
      config/sync/field.storage.node.field_migration.yml
  26. 4 0
      config/sync/field.storage.node.field_reference.yml
  27. 5 1
      config/sync/field.storage.node.field_samples.yml
  28. 1 1
      config/sync/field.storage.node.field_short_description.yml
  29. 4 0
      config/sync/field.storage.node.field_tags.yml
  30. 1 1
      config/sync/field.storage.node.field_thesaurus.yml
  31. 4 0
      config/sync/field.storage.node.field_video.yml
  32. 1 1
      config/sync/field.storage.node.field_workflow.yml
  33. 209 0
      config/sync/gdpr_fields.gdpr_fields_config.node.yml
  34. 13 0
      config/sync/user.role.adherent.yml
  35. 86 0
      config/sync/user.role.admin.yml
  36. 22 0
      config/sync/user.role.admin_showroom.yml
  37. 13 0
      config/sync/user.role.alpha_testeur.yml
  38. 1 0
      config/sync/user.role.anonymous.yml
  39. 1 0
      config/sync/user.role.authenticated.yml
  40. 13 0
      config/sync/user.role.contact_company.yml
  41. 1 0
      config/sync/user.role.free_user.yml
  42. 13 0
      config/sync/user.role.student.yml
  43. 14 0
      config/sync/user.role.translator.yml
  44. 13 0
      config/sync/user.role.unverified.yml
  45. 28 0
      config/sync/views.view.admin_nodes.yml
  46. 20 0
      web/modules/custom/materio_samples/materio_samples.module
  47. 9 0
      web/modules/custom/materio_samples/materio_samples.permissions.yml
  48. 20 0
      web/modules/custom/materio_samples/src/Plugin/Field/FieldWidget/SamplesDefaultWidget.php

+ 1 - 0
config/devel/devel.settings.yml

@@ -0,0 +1 @@
+devel_dumper: default

+ 3 - 0
config/sync/amswap.amswapconfig.yml

@@ -2,6 +2,9 @@ role_menu_pairs:
   -
     role: admin
     menu: editors
+  -
+    role: admin_showroom
+    menu: editors
 dependencies:
   module:
     - amswap

+ 10 - 0
config/sync/field.field.node.materiau.body.yml

@@ -6,7 +6,17 @@ dependencies:
     - field.storage.node.body
     - node.type.materiau
   module:
+    - allowed_formats
     - text
+    - unique_content_field_validation
+third_party_settings:
+  unique_content_field_validation:
+    unique: false
+    unique_text: ''
+  allowed_formats:
+    wysiwyg: '0'
+    full_html: '0'
+    plain_text: '0'
 id: node.materiau.body
 field_name: body
 entity_type: node

+ 8 - 0
config/sync/field.field.node.materiau.field_distributor.yml

@@ -6,6 +6,14 @@ dependencies:
     - field.storage.node.field_distributor
     - node.type.materiau
     - taxonomy.vocabulary.company
+  module:
+    - unique_content_field_validation
+third_party_settings:
+  unique_content_field_validation:
+    unique: false
+    unique_text: ''
+    unique_multivalue: false
+    unique_multivalue_text: ''
 id: node.materiau.field_distributor
 field_name: field_distributor
 entity_type: node

+ 5 - 0
config/sync/field.field.node.materiau.field_famille.yml

@@ -7,6 +7,11 @@ dependencies:
     - node.type.materiau
   module:
     - options
+    - unique_content_field_validation
+third_party_settings:
+  unique_content_field_validation:
+    unique: false
+    unique_text: ''
 id: node.materiau.field_famille
 field_name: field_famille
 entity_type: node

+ 6 - 0
config/sync/field.field.node.materiau.field_localisation_old.yml

@@ -5,6 +5,12 @@ dependencies:
   config:
     - field.storage.node.field_localisation_old
     - node.type.materiau
+  module:
+    - unique_content_field_validation
+third_party_settings:
+  unique_content_field_validation:
+    unique: false
+    unique_text: ''
 id: node.materiau.field_localisation_old
 field_name: field_localisation_old
 entity_type: node

+ 8 - 0
config/sync/field.field.node.materiau.field_manufacturer.yml

@@ -6,6 +6,14 @@ dependencies:
     - field.storage.node.field_manufacturer
     - node.type.materiau
     - taxonomy.vocabulary.company
+  module:
+    - unique_content_field_validation
+third_party_settings:
+  unique_content_field_validation:
+    unique: false
+    unique_text: ''
+    unique_multivalue: false
+    unique_multivalue_text: ''
 id: node.materiau.field_manufacturer
 field_name: field_manufacturer
 entity_type: node

+ 6 - 0
config/sync/field.field.node.materiau.field_memo.yml

@@ -5,6 +5,12 @@ dependencies:
   config:
     - field.storage.node.field_memo
     - node.type.materiau
+  module:
+    - unique_content_field_validation
+third_party_settings:
+  unique_content_field_validation:
+    unique: false
+    unique_text: ''
 id: node.materiau.field_memo
 field_name: field_memo
 entity_type: node

+ 6 - 0
config/sync/field.field.node.materiau.field_short_description.yml

@@ -5,6 +5,12 @@ dependencies:
   config:
     - field.storage.node.field_short_description
     - node.type.materiau
+  module:
+    - unique_content_field_validation
+third_party_settings:
+  unique_content_field_validation:
+    unique: false
+    unique_text: ''
 id: node.materiau.field_short_description
 field_name: field_short_description
 entity_type: node

+ 8 - 0
config/sync/field.field.node.materiau.field_tags.yml

@@ -6,6 +6,14 @@ dependencies:
     - field.storage.node.field_tags
     - node.type.materiau
     - taxonomy.vocabulary.tags
+  module:
+    - unique_content_field_validation
+third_party_settings:
+  unique_content_field_validation:
+    unique: false
+    unique_text: ''
+    unique_multivalue: false
+    unique_multivalue_text: ''
 id: node.materiau.field_tags
 field_name: field_tags
 entity_type: node

+ 8 - 0
config/sync/field.field.node.materiau.field_thesaurus.yml

@@ -6,6 +6,14 @@ dependencies:
     - field.storage.node.field_thesaurus
     - node.type.materiau
     - taxonomy.vocabulary.thesaurus
+  module:
+    - unique_content_field_validation
+third_party_settings:
+  unique_content_field_validation:
+    unique: false
+    unique_text: ''
+    unique_multivalue: false
+    unique_multivalue_text: ''
 id: node.materiau.field_thesaurus
 field_name: field_thesaurus
 entity_type: node

+ 1 - 1
config/sync/field.field.node.materiau.field_video.yml

@@ -19,7 +19,7 @@ default_value: {  }
 default_value_callback: ''
 settings:
   allowed_providers:
-    youtube: youtube
     vimeo: vimeo
+    youtube: youtube
     youtube_playlist: '0'
 field_type: video_embed_field

+ 1 - 1
config/sync/field.storage.node.body.yml

@@ -8,7 +8,7 @@ dependencies:
     - text
 third_party_settings:
   field_permissions:
-    permission_type: public
+    permission_type: custom
 _core:
   default_config_hash: EBUo7qOWqaiZaQ_RC9sLY5IoDKphS34v77VIHSACmVY
 id: node.body

+ 4 - 0
config/sync/field.storage.node.field_attachments.yml

@@ -3,8 +3,12 @@ langcode: en
 status: true
 dependencies:
   module:
+    - field_permissions
     - file
     - node
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_attachments
 field_name: field_attachments
 entity_type: node

+ 4 - 0
config/sync/field.storage.node.field_distributor.yml

@@ -3,8 +3,12 @@ langcode: en
 status: true
 dependencies:
   module:
+    - field_permissions
     - node
     - taxonomy
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_distributor
 field_name: field_distributor
 entity_type: node

+ 4 - 0
config/sync/field.storage.node.field_famille.yml

@@ -3,8 +3,12 @@ langcode: en
 status: true
 dependencies:
   module:
+    - field_permissions
     - node
     - options
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_famille
 field_name: field_famille
 entity_type: node

+ 1 - 1
config/sync/field.storage.node.field_fiche_expo.yml

@@ -8,7 +8,7 @@ dependencies:
     - node
 third_party_settings:
   field_permissions:
-    permission_type: public
+    permission_type: custom
 id: node.field_fiche_expo
 field_name: field_fiche_expo
 entity_type: node

+ 4 - 0
config/sync/field.storage.node.field_index.yml

@@ -4,7 +4,11 @@ status: true
 dependencies:
   module:
     - computed_field
+    - field_permissions
     - node
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_index
 field_name: field_index
 entity_type: node

+ 1 - 1
config/sync/field.storage.node.field_linked_articles.yml

@@ -7,7 +7,7 @@ dependencies:
     - node
 third_party_settings:
   field_permissions:
-    permission_type: public
+    permission_type: custom
 id: node.field_linked_articles
 field_name: field_linked_articles
 entity_type: node

+ 1 - 1
config/sync/field.storage.node.field_linked_materials.yml

@@ -7,7 +7,7 @@ dependencies:
     - node
 third_party_settings:
   field_permissions:
-    permission_type: public
+    permission_type: custom
 id: node.field_linked_materials
 field_name: field_linked_materials
 entity_type: node

+ 4 - 0
config/sync/field.storage.node.field_localisation_old.yml

@@ -3,7 +3,11 @@ langcode: en
 status: true
 dependencies:
   module:
+    - field_permissions
     - node
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_localisation_old
 field_name: field_localisation_old
 entity_type: node

+ 4 - 0
config/sync/field.storage.node.field_manufacturer.yml

@@ -3,8 +3,12 @@ langcode: en
 status: true
 dependencies:
   module:
+    - field_permissions
     - node
     - taxonomy
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_manufacturer
 field_name: field_manufacturer
 entity_type: node

+ 4 - 0
config/sync/field.storage.node.field_materiau_images.yml

@@ -3,9 +3,13 @@ langcode: en
 status: true
 dependencies:
   module:
+    - field_permissions
     - file
     - image
     - node
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_materiau_images
 field_name: field_materiau_images
 entity_type: node

+ 1 - 1
config/sync/field.storage.node.field_memo.yml

@@ -7,7 +7,7 @@ dependencies:
     - node
 third_party_settings:
   field_permissions:
-    permission_type: public
+    permission_type: custom
 id: node.field_memo
 field_name: field_memo
 entity_type: node

+ 4 - 0
config/sync/field.storage.node.field_migration.yml

@@ -3,8 +3,12 @@ langcode: en
 status: true
 dependencies:
   module:
+    - field_permissions
     - node
     - workflow
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_migration
 field_name: field_migration
 entity_type: node

+ 4 - 0
config/sync/field.storage.node.field_reference.yml

@@ -4,7 +4,11 @@ status: true
 dependencies:
   module:
     - computed_field
+    - field_permissions
     - node
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_reference
 field_name: field_reference
 entity_type: node

+ 5 - 1
config/sync/field.storage.node.field_samples.yml

@@ -3,8 +3,12 @@ langcode: en
 status: true
 dependencies:
   module:
+    - field_permissions
     - materio_samples
     - node
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_samples
 field_name: field_samples
 entity_type: node
@@ -12,7 +16,7 @@ type: materio_samples_field
 settings: {  }
 module: materio_samples
 locked: false
-cardinality: -1
+cardinality: 4
 translatable: true
 indexes: {  }
 persist_with_no_fields: false

+ 1 - 1
config/sync/field.storage.node.field_short_description.yml

@@ -7,7 +7,7 @@ dependencies:
     - node
 third_party_settings:
   field_permissions:
-    permission_type: public
+    permission_type: custom
 id: node.field_short_description
 field_name: field_short_description
 entity_type: node

+ 4 - 0
config/sync/field.storage.node.field_tags.yml

@@ -3,8 +3,12 @@ langcode: en
 status: true
 dependencies:
   module:
+    - field_permissions
     - node
     - taxonomy
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_tags
 field_name: field_tags
 entity_type: node

+ 1 - 1
config/sync/field.storage.node.field_thesaurus.yml

@@ -8,7 +8,7 @@ dependencies:
     - taxonomy
 third_party_settings:
   field_permissions:
-    permission_type: public
+    permission_type: custom
 id: node.field_thesaurus
 field_name: field_thesaurus
 entity_type: node

+ 4 - 0
config/sync/field.storage.node.field_video.yml

@@ -3,8 +3,12 @@ langcode: en
 status: true
 dependencies:
   module:
+    - field_permissions
     - node
     - video_embed_field
+third_party_settings:
+  field_permissions:
+    permission_type: custom
 id: node.field_video
 field_name: field_video
 entity_type: node

+ 1 - 1
config/sync/field.storage.node.field_workflow.yml

@@ -8,7 +8,7 @@ dependencies:
     - workflow
 third_party_settings:
   field_permissions:
-    permission_type: public
+    permission_type: custom
 id: node.field_workflow
 field_name: field_workflow
 entity_type: node

+ 209 - 0
config/sync/gdpr_fields.gdpr_fields_config.node.yml

@@ -48,6 +48,215 @@ bundles:
       rtf: 'no'
       rta: 'no'
       enabled: false
+      anonymizer: email_anonymizer
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_samples:
+      bundle: materiau
+      name: field_samples
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: email_anonymizer
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_short_description:
+      bundle: materiau
+      name: field_short_description
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: email_anonymizer
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    body:
+      bundle: materiau
+      name: body
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: email_anonymizer
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_attachments:
+      bundle: materiau
+      name: field_attachments
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_distributor:
+      bundle: materiau
+      name: field_distributor
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_famille:
+      bundle: materiau
+      name: field_famille
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_materiau_images:
+      bundle: materiau
+      name: field_materiau_images
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_index:
+      bundle: materiau
+      name: field_index
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_linked_articles:
+      bundle: materiau
+      name: field_linked_articles
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_linked_materials:
+      bundle: materiau
+      name: field_linked_materials
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_localisation_old:
+      bundle: materiau
+      name: field_localisation_old
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_manufacturer:
+      bundle: materiau
+      name: field_manufacturer
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_memo:
+      bundle: materiau
+      name: field_memo
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_migration:
+      bundle: materiau
+      name: field_migration
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_reference:
+      bundle: materiau
+      name: field_reference
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_tags:
+      bundle: materiau
+      name: field_tags
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_thesaurus:
+      bundle: materiau
+      name: field_thesaurus
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_video:
+      bundle: materiau
+      name: field_video
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
+      anonymizer: ''
+      notes: ''
+      relationship: 0
+      sars_filename: ''
+    field_workflow:
+      bundle: materiau
+      name: field_workflow
+      entity_type_id: node
+      rtf: 'no'
+      rta: 'no'
+      enabled: false
       anonymizer: ''
       notes: ''
       relationship: 0

+ 13 - 0
config/sync/user.role.adherent.yml

@@ -20,6 +20,19 @@ permissions:
   - 'update own commerce_license'
   - 'update own member profile'
   - 'use jsonrpc services'
+  - 'view body'
+  - 'view field_attachments'
+  - 'view field_distributor'
+  - 'view field_fiche_expo'
+  - 'view field_linked_articles'
+  - 'view field_linked_materials'
+  - 'view field_manufacturer'
+  - 'view field_materiau_images'
+  - 'view field_reference'
+  - 'view field_samples'
+  - 'view field_tags'
+  - 'view field_thesaurus'
+  - 'view field_video'
   - 'view own commerce_license'
   - 'view own flag lists'
   - 'view own member profile'

+ 86 - 0
config/sync/user.role.admin.yml

@@ -45,6 +45,7 @@ permissions:
   - 'cancel any commerce_subscription'
   - 'change own username'
   - 'create article content'
+  - 'create body'
   - 'create commerce_billing_schedule'
   - 'create commerce_license'
   - 'create commerce_promotion'
@@ -57,10 +58,25 @@ permissions:
   - 'create default workflow_transition'
   - 'create enregistrement content'
   - 'create evenement content'
+  - 'create field_attachments'
   - 'create field_company'
+  - 'create field_distributor'
+  - 'create field_famille'
+  - 'create field_fiche_expo'
+  - 'create field_linked_articles'
+  - 'create field_linked_materials'
+  - 'create field_manufacturer'
+  - 'create field_materiau_images'
   - 'create field_member_type'
+  - 'create field_migration'
+  - 'create field_samples'
+  - 'create field_short_description'
   - 'create field_showroom'
   - 'create field_showroom_files'
+  - 'create field_tags'
+  - 'create field_thesaurus'
+  - 'create field_video'
+  - 'create field_workflow'
   - 'create generique workflow_transition'
   - 'create materiau content'
   - 'create migration workflow_transition'
@@ -108,14 +124,46 @@ permissions:
   - 'edit any simplenews_issue content'
   - 'edit any static content'
   - 'edit any thematique content'
+  - 'edit body'
   - 'edit expo_fiches config page entity'
+  - 'edit field_attachments'
   - 'edit field_company'
+  - 'edit field_distributor'
+  - 'edit field_famille'
+  - 'edit field_fiche_expo'
+  - 'edit field_linked_articles'
+  - 'edit field_linked_materials'
+  - 'edit field_manufacturer'
+  - 'edit field_materiau_images'
   - 'edit field_member_type'
   - 'edit field_memo'
+  - 'edit field_migration'
+  - 'edit field_samples'
+  - 'edit field_short_description'
   - 'edit field_showroom'
   - 'edit field_showroom_files'
+  - 'edit field_tags'
+  - 'edit field_thesaurus'
+  - 'edit field_video'
+  - 'edit field_workflow'
+  - 'edit own body'
   - 'edit own enregistrement content'
+  - 'edit own field_attachments'
+  - 'edit own field_distributor'
+  - 'edit own field_famille'
+  - 'edit own field_fiche_expo'
+  - 'edit own field_linked_articles'
+  - 'edit own field_linked_materials'
+  - 'edit own field_manufacturer'
+  - 'edit own field_materiau_images'
+  - 'edit own field_migration'
+  - 'edit own field_samples'
+  - 'edit own field_short_description'
   - 'edit own field_showroom_files'
+  - 'edit own field_tags'
+  - 'edit own field_thesaurus'
+  - 'edit own field_video'
+  - 'edit own field_workflow'
   - 'edit own flag lists'
   - 'edit own migration workflow_transition'
   - 'edit own note content'
@@ -153,6 +201,8 @@ permissions:
   - 'execute workflow_node_given_state_action node'
   - 'execute workflow_node_next_state_action node'
   - 'flag dossier other items'
+  - materio_samples_edit_any_sample
+  - materio_samples_edit_materiaux_titles
   - 'revert all revisions'
   - 'revert any corpus_documents workflow_transition'
   - 'revert any generique workflow_transition'
@@ -212,6 +262,7 @@ permissions:
   - 'view any member profile'
   - 'view article revisions'
   - 'view autre_son revisions'
+  - 'view body'
   - 'view commerce_billing_schedule'
   - 'view commerce_order'
   - 'view commerce_promotion'
@@ -219,14 +270,49 @@ permissions:
   - 'view default commerce_order'
   - 'view enregistrement revisions'
   - 'view evenement revisions'
+  - 'view field_attachments'
   - 'view field_company'
+  - 'view field_distributor'
+  - 'view field_famille'
+  - 'view field_fiche_expo'
+  - 'view field_index'
+  - 'view field_linked_articles'
+  - 'view field_linked_materials'
+  - 'view field_localisation_old'
+  - 'view field_manufacturer'
+  - 'view field_materiau_images'
   - 'view field_member_type'
   - 'view field_memo'
+  - 'view field_migration'
+  - 'view field_reference'
+  - 'view field_samples'
+  - 'view field_short_description'
   - 'view field_showroom'
+  - 'view field_tags'
+  - 'view field_thesaurus'
+  - 'view field_video'
+  - 'view field_workflow'
   - 'view frontpage revisions'
   - 'view materiau revisions'
   - 'view member profile'
   - 'view online commerce_store'
+  - 'view own body'
+  - 'view own field_attachments'
+  - 'view own field_distributor'
+  - 'view own field_famille'
+  - 'view own field_fiche_expo'
+  - 'view own field_index'
+  - 'view own field_linked_articles'
+  - 'view own field_linked_materials'
+  - 'view own field_manufacturer'
+  - 'view own field_materiau_images'
+  - 'view own field_migration'
+  - 'view own field_samples'
+  - 'view own field_short_description'
+  - 'view own field_tags'
+  - 'view own field_thesaurus'
+  - 'view own field_video'
+  - 'view own field_workflow'
   - 'view own flag lists'
   - 'view own profile'
   - 'view own unpublished content'

+ 22 - 0
config/sync/user.role.admin_showroom.yml

@@ -7,13 +7,35 @@ label: 'Admin Showroom'
 weight: 0
 is_admin: null
 permissions:
+  - 'access administration pages'
   - 'access materio search'
+  - 'access site in maintenance mode'
+  - 'access toolbar'
+  - 'access user profiles'
   - 'add flag lists'
+  - 'change own username'
   - 'create note content'
+  - 'edit any materiau content'
+  - 'edit field_samples'
   - 'edit own flag lists'
   - 'edit own note content'
   - 'flag dossier other items'
   - 'unflag dossier other items'
   - 'use jsonrpc services'
+  - 'view body'
+  - 'view field_attachments'
+  - 'view field_distributor'
+  - 'view field_fiche_expo'
+  - 'view field_linked_articles'
+  - 'view field_linked_materials'
+  - 'view field_localisation_old'
+  - 'view field_manufacturer'
+  - 'view field_materiau_images'
+  - 'view field_reference'
+  - 'view field_samples'
+  - 'view field_tags'
+  - 'view field_thesaurus'
+  - 'view field_video'
   - 'view own flag lists'
   - 'view printer friendly versions'
+  - 'view the administration theme'

+ 13 - 0
config/sync/user.role.alpha_testeur.yml

@@ -20,6 +20,19 @@ permissions:
   - 'update own commerce_license'
   - 'update own member profile'
   - 'use jsonrpc services'
+  - 'view body'
+  - 'view field_attachments'
+  - 'view field_distributor'
+  - 'view field_fiche_expo'
+  - 'view field_linked_articles'
+  - 'view field_linked_materials'
+  - 'view field_manufacturer'
+  - 'view field_materiau_images'
+  - 'view field_reference'
+  - 'view field_samples'
+  - 'view field_tags'
+  - 'view field_thesaurus'
+  - 'view field_video'
   - 'view own commerce_license'
   - 'view own flag lists'
   - 'view own member profile'

+ 1 - 0
config/sync/user.role.anonymous.yml

@@ -31,6 +31,7 @@ permissions:
   - 'use text format wysiwyg'
   - 'view commerce_product'
   - 'view expo_fiches config page entity'
+  - 'view field_short_description'
   - 'view field_showroom_files'
   - 'view materio_product_type commerce_product'
   - 'view privacy_policy config page entity'

+ 1 - 0
config/sync/user.role.authenticated.yml

@@ -42,6 +42,7 @@ permissions:
   - 'use text format wysiwyg'
   - 'view commerce_product'
   - 'view expo_fiches config page entity'
+  - 'view field_short_description'
   - 'view field_showroom_files'
   - 'view materio_product_type commerce_product'
   - 'view own commerce_order'

+ 13 - 0
config/sync/user.role.contact_company.yml

@@ -11,5 +11,18 @@ permissions:
   - 'display eu cookie compliance popup'
   - 'update own contact_company profile'
   - 'update own member profile'
+  - 'view body'
+  - 'view field_attachments'
+  - 'view field_distributor'
+  - 'view field_fiche_expo'
+  - 'view field_linked_articles'
+  - 'view field_linked_materials'
+  - 'view field_manufacturer'
+  - 'view field_materiau_images'
+  - 'view field_reference'
+  - 'view field_samples'
+  - 'view field_tags'
+  - 'view field_thesaurus'
+  - 'view field_video'
   - 'view own contact_company profile'
   - 'view own member profile'

+ 1 - 0
config/sync/user.role.free_user.yml

@@ -10,4 +10,5 @@ permissions:
   - 'create member profile'
   - 'display eu cookie compliance popup'
   - 'update own member profile'
+  - 'view field_thesaurus'
   - 'view own member profile'

+ 13 - 0
config/sync/user.role.student.yml

@@ -19,6 +19,19 @@ permissions:
   - 'unflag dossier other items'
   - 'update own member profile'
   - 'use jsonrpc services'
+  - 'view body'
+  - 'view field_attachments'
+  - 'view field_distributor'
+  - 'view field_fiche_expo'
+  - 'view field_linked_articles'
+  - 'view field_linked_materials'
+  - 'view field_manufacturer'
+  - 'view field_materiau_images'
+  - 'view field_reference'
+  - 'view field_samples'
+  - 'view field_tags'
+  - 'view field_thesaurus'
+  - 'view field_video'
   - 'view own flag lists'
   - 'view own member profile'
   - 'view printer friendly versions'

+ 14 - 0
config/sync/user.role.translator.yml

@@ -14,6 +14,20 @@ permissions:
   - 'edit own flag lists'
   - 'edit own note content'
   - 'flag dossier other items'
+  - materio_samples_edit_materiaux_titles
   - 'unflag dossier other items'
+  - 'view body'
+  - 'view field_attachments'
+  - 'view field_distributor'
+  - 'view field_fiche_expo'
+  - 'view field_linked_articles'
+  - 'view field_linked_materials'
+  - 'view field_manufacturer'
+  - 'view field_materiau_images'
+  - 'view field_reference'
+  - 'view field_samples'
+  - 'view field_tags'
+  - 'view field_thesaurus'
+  - 'view field_video'
   - 'view own flag lists'
   - 'view printer friendly versions'

+ 13 - 0
config/sync/user.role.unverified.yml

@@ -9,3 +9,16 @@ is_admin: null
 permissions:
   - 'display eu cookie compliance popup'
   - 'execute materio persisted graphql requests'
+  - 'view body'
+  - 'view field_attachments'
+  - 'view field_distributor'
+  - 'view field_fiche_expo'
+  - 'view field_linked_articles'
+  - 'view field_linked_materials'
+  - 'view field_manufacturer'
+  - 'view field_materiau_images'
+  - 'view field_reference'
+  - 'view field_samples'
+  - 'view field_tags'
+  - 'view field_thesaurus'
+  - 'view field_video'

+ 28 - 0
config/sync/views.view.admin_nodes.yml

@@ -29,7 +29,9 @@ dependencies:
     - taxonomy.vocabulary.tags
     - taxonomy.vocabulary.thesaurus
     - user.role.admin
+    - user.role.admin_showroom
     - user.role.root
+    - user.role.translator
   module:
     - better_exposed_filters
     - computed_field
@@ -64,6 +66,7 @@ display:
         type: role
         options:
           role:
+            translator: translator
             admin: admin
             root: root
       cache:
@@ -2297,6 +2300,7 @@ display:
         row: false
         filters: false
         filter_groups: false
+        access: false
       fields:
         views_bulk_operations_bulk_form:
           id: views_bulk_operations_bulk_form
@@ -4470,6 +4474,14 @@ display:
         operator: AND
         groups:
           1: AND
+      access:
+        type: role
+        options:
+          role:
+            translator: translator
+            admin_showroom: admin_showroom
+            admin: admin
+            root: root
     cache_metadata:
       max-age: 0
       contexts:
@@ -4712,6 +4724,7 @@ display:
         filter_groups: false
         style: false
         row: false
+        access: false
       fields:
         views_bulk_operations_bulk_form:
           id: views_bulk_operations_bulk_form
@@ -6054,6 +6067,13 @@ display:
       row:
         type: fields
         options: {  }
+      access:
+        type: role
+        options:
+          role:
+            translator: translator
+            admin: admin
+            root: root
     cache_metadata:
       max-age: 0
       contexts:
@@ -6290,6 +6310,7 @@ display:
         row: false
         filters: false
         filter_groups: false
+        access: false
       fields:
         views_bulk_operations_bulk_form:
           id: views_bulk_operations_bulk_form
@@ -7621,6 +7642,13 @@ display:
         operator: AND
         groups:
           1: AND
+      access:
+        type: role
+        options:
+          role:
+            translator: translator
+            admin: admin
+            root: root
     cache_metadata:
       max-age: 0
       contexts:

+ 20 - 0
web/modules/custom/materio_samples/materio_samples.module

@@ -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;
+  }
+}

+ 9 - 0
web/modules/custom/materio_samples/materio_samples.permissions.yml

@@ -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

+ 20 - 0
web/modules/custom/materio_samples/src/Plugin/Field/FieldWidget/SamplesDefaultWidget.php

@@ -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;