在项目开发里面,我遇到了这么一个需求,就是对于node的title字段,编辑内容的角色不允许对title进行编辑。title字段是创建内容类型时自动生成的字段,不能在drupal8后台直接配置权限,所以我需要用代码自定义一个权限。

1.在/modules/custom下自定义一个模块,我的模块名为one_node_title_permission

2.新建三个文件,分别为one_node_title_permission.info.yml,one_node_title_permission.module,one_node_title_permission.permissions.yml

注意:文件名必须与模块名相对应

3.在one_node_title_permission.info.yml文件中,配置模块信息如下

name: One Node Title Permission
description: 'Add permission for the title of node.'
type: module
core: 8.x
package: one

4.在one_node_title_permission.permissions.yml文件中,配置的是我要添加的权限信息,如下所示

one_node_title_permission permission:
title: 'Edit own value for field field_title'
restrict access: false

5.这样,基本的权限已经配置好了。在本地drupal8中的/admin/modules目录下,找到刚刚新加的module并勾选,如下图所示

然后install

6.在/admin/people/permissions页面中,选中一个角色进行权限的配置,勾选刚刚自定义的权限并保存

7.上面我们仅仅只是添了一条权限,权限所对应的功能还没有加,所以我要在one_node_title_permission.module添加

one_node_title_permission_form_alter函数,在该函数里面添加我需要的代码。注意,该函数名是模块名+_form_alter
<?php

/**
* @file
* One Contact US Module.
*/ use Drupal\Core\Form\FormStateInterface; /**
* Implements hook_form_alter().
*/
function one_node_title_permission_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$route_match = \Drupal::routeMatch();//获取当前路径
$user = \Drupal::currentUser();//获取当前用户角色
$access = !$user->hasPermission('one_node_title_permission permission');//判断是否有此权限,没有返回false
if ($route_match->getRouteName() == 'entity.node.edit_form' && $access) {
$form['title']['#disabled'] = 'disabled';//对‘title’字段不可编辑
}
}

在上面的代码里,我具体要实现的功能是在node的编辑页面里面,对不具有该权限的用户,不允许对title字段编辑。

drupal 8 ——自定义权限的更多相关文章

  1. Android自定义权限和使用权限

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 自定义权限,主要用于保护被赋予权限的组件.如无权限与有权限,正如public与private的对类保 ...

  2. Android权限安全(3)权限的分级和自定义权限

    Android的不同权限分级 Normal 一般apk都可以用, Dangerous 一般apk都可以用,但有提示 SignatureOrSystem 特定的private key签名的或系统的apk ...

  3. android - 解决“应用自定义权限重名”

    背景 现场的开发今天跟我说,测试包装不上!报错"应用自定义权限重名"!!! 网上百度下关键字,发现魅族手机有这个毛病,顺藤摸瓜:"http://bbs.flyme.cn/ ...

  4. 关于 DotNetCore 的自定义权限管理

    1.自定义权限需要扩展 Microsoft.AspNetCore.Authentication 实现一套接口 IAuthenticationHandler, IAuthenticationSignIn ...

  5. SharePoint REST API - 使用REST接口对列表设置自定义权限

    博客地址:http://blog.csdn.net/FoxDave SharePoint网站.列表和列表项都属于SecurableObject类型.默认情况下,一个安全对象继承父级的权限.对一个对 ...

  6. Salesforce自定义权限简介

    自定义权限(Custom Permission) Salesforce默认提供了多种方式设定用户的权限,比如简档.权限集等.在这些设定中,已经包括了系统中的对象.应用.字段.页面布局等组件,管理员或开 ...

  7. 如何给EOS账户设置自定义权限

    https://bihu.com/article/1508858 EOS从上线以后,不断有传出token被盗的消息,安全无小事,我们一定要重视,今天从EOS帐户自己定义权限的角度来谈谈如何做好账户的安 ...

  8. Android自定义权限

    一.自定义权限 自定义权限,一般是考虑到应用共享组件时的安全问题.我们知道在四大组件 AndroidManifest 中注册的时候,添加 exported = "true" 这一属 ...

  9. Orchard 前台权限与自定义权限

    一:关于前台权限 1:只允许自己看到 首先,我们需要确定在 Role 设置页面,用户所对应的 View Page by others 和 View all content 未被选中.备注,我们首先和得 ...

随机推荐

  1. SpringMVC断言--Assert

    Web 应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回.类似的,当我们在编写类的方法时,也常常需要对方法入参进行合 法性检查,如果入参不符合要求,方法将通过抛出异 ...

  2. C++模板的特化与偏特化

    http://cppblog.com/SmartPtr/archive/2007/07/04/27496.html (1) 类模板定义一个栈的类模板,它可以用来容纳不同的数据类型 template & ...

  3. doT js模板入门 3

    for 循环前推断循环的list是否为空 <script id="invoiceListDot" type="text/x-dot-template"&g ...

  4. influxDB系列(二)--查看数据库的大小

    google 搜索了好多文档,终于发现了这个靠谱的回答. https://groups.google.com/forum/#!topic/influxdb/I5eady_Ta5Y You can se ...

  5. 大话USB驱动之总线驱动程序

    转载注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/25040009 总线驱动是不用改的.内核都帮我们做好了.为了了解整个USB驱动的体 ...

  6. Android开发之利用SQLite进行数据存储

    Android开发之利用SQLite进行数据存储 Android开发之利用SQLite进行数据存储 SQLite数据库简单介绍 Android中怎样使用SQLite 1 创建SQLiteOpenHel ...

  7. LeetCode 172. Factorial Trailing Zeroes (阶乘末尾零的数量)

    Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in log ...

  8. eclipse 自己主动为getter和setter加入中文凝视

    在我们使用eclipse进行开发的时候经常会使用到eclipse自己主动生成getter和setter的功能,然后大多情况下eclipse为我们生成的getter和setter都是无法在项目中使用的. ...

  9. SQL SERVER:一条SQL语句插入多条记录等

    在学习排名第二的mySql过程中,发现它的插入语句可以这样写: use test; create table fruits( fid char(10) not null ,s_id int null ...

  10. 2015南阳CCPC L - Huatuo's Medicine 签到

    L - Huatuo's Medicine Description Huatuo was a famous doctor. He use identical bottles to carry the ...