如何在 drupal 中以编程方式授予对模块的访问权限?

发布于 2024-12-10 01:29:06 字数 103 浏览 0 评论 0原文

根据某些条件,我想授予对模块的访问权限。

if(abc == abc) {
  //give access to module xyz.
}

based on some condition i want to give access to a module.

if(abc == abc) {
  //give access to module xyz.
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

翻身的咸鱼 2024-12-17 01:29:06

Drupal 中不存在允许访问整个模块的概念,只能访问模块定义的页面。通常,这是通过实现 hook_menu() 来定义页面,然后提供访问回调访问参数来完成的。

第一个定义了一个函数,将调用该函数来做出访问决策:

function mymodule_menu() {
  $items['some/path'] = array(
    'title' => 'Some Title',
    'page callback' => 'mymodule_callback',
    'access callback' => 'mymodule_some_path_access'
  );

  return $items;
}

function mymodule_some_path_access() {
  global $user;

  if ($user->foo == 'bar') {
    // Access allowed, return TRUE
    return TRUE;
  }

  // Access not allowed, return FALSE
  return FALSE;
}

第二个定义将传递给 user_access 函数的参数。这通常基于您的模块提供的权限:

function mymodule_menu() {
  $items['some/path'] = array(
    'title' => 'Some Title',
    'page callback' => 'mymodule_callback',
    'access arguments' => array('access mymodule')
  );

  return $items;
}

function mymodule_perm() {
  return array(
    'access mymodule'
  );
}

在第二个示例中,用户将被拒绝访问,除非他们具有“访问 mymodule”权限(如 Drupal 的权限管理区域中所定义)。

希望有帮助

There's no such concept as giving access to a whole module in Drupal, only pages that a module would define. Usually this is done by implementing hook_menu() to define the page(s) and then providing either an access callback or access arguments.

The first defines a function that will be called to make your access decision:

function mymodule_menu() {
  $items['some/path'] = array(
    'title' => 'Some Title',
    'page callback' => 'mymodule_callback',
    'access callback' => 'mymodule_some_path_access'
  );

  return $items;
}

function mymodule_some_path_access() {
  global $user;

  if ($user->foo == 'bar') {
    // Access allowed, return TRUE
    return TRUE;
  }

  // Access not allowed, return FALSE
  return FALSE;
}

The second defines arguments that will be passed to the user_access function. This will usually be based on permissions your module provides:

function mymodule_menu() {
  $items['some/path'] = array(
    'title' => 'Some Title',
    'page callback' => 'mymodule_callback',
    'access arguments' => array('access mymodule')
  );

  return $items;
}

function mymodule_perm() {
  return array(
    'access mymodule'
  );
}

In the second example a user will be denied access unless they have the permission 'access mymodule' (as defined in the permissions admin area of Drupal).

Hope that helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文