在项目开发里面,我遇到了这么一个需求,就是对于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. noip模拟赛 whzzt-Warmth

    分析:这道题难度和天天爱跑步差不了多少啊......裸的暴力只有10分,最好大的还是那个5%的数据,不过这也才15分,比天天爱跑步的暴力分不知道少到哪里去了. 正解是dp,毕竟要求方案数嘛,但是这个d ...

  2. 20170613NOIP模拟赛

    共3道题目,时间3小时 题目非原创,仅限校内交流使用 题目名称 Graph Incr Permutation 文件名 graph incr permutation 输入文件 graph.in incr ...

  3. H - Parity game 并查集

    Now and then you play the following game with your friend. Your friend writes down a sequence consis ...

  4. com.101tec.ZKClient实现中的subscribeDataChanges设置的监听器事件不回调的问题研究

    1.如果在Web项目,本身在后台运行,所以注册的事件应该是正常回调的. 2.如果是Application项目,如果是简单的测试,那么运行完之后,整个程序就结束了,程序很快,所以没等到事件回调就关了,解 ...

  5. python 元组不变 列表可变

    python 元组不变 列表可变 1,   --元组,注意要有逗号: [1] --列表 竟然才开始写python blog:

  6. HDU 5289 Assignment (二分+区间最值)

    [题目链接]click here~~ [题目大意]: 给出一个数列,问当中存在多少连续子序列,子序列的最大值-最小值<k [思路]:枚举数列左端点.然后二分枚举右端点,用ST算法求区间最值.(或 ...

  7. CentOS6.5下用Git克隆代码(https方式)

    一.首先最好保证GIT是最新版 查看GIT命令 $ git --version 有关git的安装,应该有好多文章介绍.注意更新之后,要重启系统,否则显示的版本号,还是老版本. 二.如果工作环境存在网络 ...

  8. 从新浪微博和MySQL的password保护机制谈HTTPS/SSL的必要性

    尽管业界已经达成共识,在传输用户password等须要保密的信息时,尽可能採用HTTPS/SSL协议传输. 但我们还是能够看到少数没实用HTTPS/SSL加密的站点或应用. 新浪微博的登录页面和MyS ...

  9. MBEEWALK - Bee Walk

    A bee larva living in a hexagonal cell of a large honey comb decides to creep for a walk. In each “s ...

  10. XPath Nodes

    教程 https://www.w3schools.com/xml/xpath_nodes.asp 节点之间的关系 Parent,Children,Siblings,Ancestors,Descenda ...