drupal 8 ——自定义权限
在项目开发里面,我遇到了这么一个需求,就是对于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 ——自定义权限的更多相关文章
- Android自定义权限和使用权限
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 自定义权限,主要用于保护被赋予权限的组件.如无权限与有权限,正如public与private的对类保 ...
- Android权限安全(3)权限的分级和自定义权限
Android的不同权限分级 Normal 一般apk都可以用, Dangerous 一般apk都可以用,但有提示 SignatureOrSystem 特定的private key签名的或系统的apk ...
- android - 解决“应用自定义权限重名”
背景 现场的开发今天跟我说,测试包装不上!报错"应用自定义权限重名"!!! 网上百度下关键字,发现魅族手机有这个毛病,顺藤摸瓜:"http://bbs.flyme.cn/ ...
- 关于 DotNetCore 的自定义权限管理
1.自定义权限需要扩展 Microsoft.AspNetCore.Authentication 实现一套接口 IAuthenticationHandler, IAuthenticationSignIn ...
- SharePoint REST API - 使用REST接口对列表设置自定义权限
博客地址:http://blog.csdn.net/FoxDave SharePoint网站.列表和列表项都属于SecurableObject类型.默认情况下,一个安全对象继承父级的权限.对一个对 ...
- Salesforce自定义权限简介
自定义权限(Custom Permission) Salesforce默认提供了多种方式设定用户的权限,比如简档.权限集等.在这些设定中,已经包括了系统中的对象.应用.字段.页面布局等组件,管理员或开 ...
- 如何给EOS账户设置自定义权限
https://bihu.com/article/1508858 EOS从上线以后,不断有传出token被盗的消息,安全无小事,我们一定要重视,今天从EOS帐户自己定义权限的角度来谈谈如何做好账户的安 ...
- Android自定义权限
一.自定义权限 自定义权限,一般是考虑到应用共享组件时的安全问题.我们知道在四大组件 AndroidManifest 中注册的时候,添加 exported = "true" 这一属 ...
- Orchard 前台权限与自定义权限
一:关于前台权限 1:只允许自己看到 首先,我们需要确定在 Role 设置页面,用户所对应的 View Page by others 和 View all content 未被选中.备注,我们首先和得 ...
随机推荐
- [USACO5.3]校园网Network of Schools 缩点
题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”).注意即使 B 在 A 学校的分发列表中, A 也不一定在 B 学校的列表中. 你要写 ...
- [JavaEE] Implement a REST Endpoint
1. Create a rest folder with JAXRSConfiguration.java: package com.pluralsight.bookstore.rest; import ...
- Codeforces 577E Ann and Half-Palindrome 字典树
题目链接 题意: 若一个字符串是半回文串.则满足第一位和最后一位相等, 第三位和倒数第三位相等.如此类推. 给定一个字符串s,输出s的全部子串中的半回文串字典序第k大的 字符串. good[i][j] ...
- Python3基础(九) 错误和异常
本文主要介绍Python中的错误和异常,涉及到简单的异常处理.抛出异常以及清理动作.至于自定义异常类,将在介绍类与继承的时候讲到. 一.定义 常见的两种错误:语法错误 和 异常. 1.语法错误(Syn ...
- VC中CString和WPARAM之间的相互转换
在传递自己定义消息的过程中.须要转换CString 变量. 在发送消息端使用例如以下方法: SendMessage(WM_MESSAG_MINE,0,(LPARAM)strVal.AllocSysSt ...
- 5分钟Serverless实践:构建无服务器的图片分类系统
前言 在过去“5分钟Serverless实践”系列文章中,我们介绍了如何构建无服务器API和Web应用,从本质上来说,它们都属于基于APIG触发器对外提供一个无服务器API的场景.现在本文将介绍一种新 ...
- Linux VM环境配置
1. 直接打 ifconfig ,显示 bash: ifconfig: command not found 打入全路径,查看IP /sbin/ifconfig 2. 主机ping不通虚拟机, ...
- mac 浏览器解决跨域问题
Chrome:命令行执行如下命令open -a Google\ Chrome --args --disable-web-security出现如下提示,说明已经开启: Safari: open -a ' ...
- mac 下安装caffe(二)
使用Anaconda Python 1.brew edit opencv args << "-DPYTHON_LIBRARY=#{py_lib}/libpython2.7.#{d ...
- CountDownTimer完整具体演示样例
MainActivity例如以下: package cc.cv; import android.os.Bundle; import android.os.CountDownTimer; import ...