0

如果用户字段之一具有特定值,我试图仅授予用户访问该站点的权限。

如果不是,该站点应显示拒绝访问。

有没有一种有效的方法来实现这一目标?

谢谢

4

1 回答 1

0

这是你怎么做的

选项1

创建一个自定义角色让我们说“受限访问”,除了创建他的帐户外,网站中没有权限(编辑/删除/查看),这将是您的用户默认角色

然后创建一个自定义角色让我们说“高级访问”,允许查看您的内容(或其他)

在帐户设置中添加您的自定义字段(“访问权限”)和您希望的值(“受限”、“高级”)。

/admin/config/people/accounts/fields

添加规则模块并创建一个自定义规则,如果 field_access == premium 则在帐户创建/更新时将角色更新为“高级访问”。

完成此操作后,您可以从用户角色管理用户

选项2

再次使用规则模块,您可以检查您的用户是否在他的个人资料中具有您需要的值并将他重定向到您的页面。

选项3

hook_init() 和/或 hook_boot() 检查用户帐户配置文件字段中的值并重定向他,如下所示:

function hook_init(){
    global $user;
    $user_data=user_load($user->id);
    if($user_data->field_access['LANGUAGE_NONE'][0]['value']=='limited'){
        drupal_go_to('/content/limited');
    }
}
于 2016-04-05T16:14:45.967 回答