旁路自定义模块中的权限 -- 7 领域 和 users 领域 和 emails 领域 和 files 领域 和 printing 领域 drupal 相关 的问题

Bypass permissions in custom module


简体版||繁體版
0
vote

问题

中文

我已经写了一个自定义模块,当提交WebForm并将其邮寄给管理员时,会生成PDF。我正在使用打印模块来生成pdf。问题是,在生成PDF时似乎使用用户的权限,而不是管理员。这通常可以用于经过身份验证的用户,但对于访客来说,它只是完全失败。

我已启用"访问PDF版本" 和"访问自己的WebForm提交" 的所有用户(匿名和经过身份验证),但我猜"自己" 仍然检查用户ID并为客人失败。

打印模块使用此代码从URL中获取$节点的内容

  $node = new stdClass(); $node->body = menu_execute_active_handler($path, FALSE);   

以及这里是我使用打印模块来生成pdf内容的方式

  module_load_include('inc', 'print_pdf', 'print_pdf.pages'); $pdf_url = 'node/' . $nid . '/submission/' . $sid; $file_content = module_invoke('print_pdf', 'generate_path', $pdf_url);   

当它是一个具有权限的用户(经过身份验证)时,它可以正常工作,它会成功生成并邮寄PDF。 $node->body 的内容完全填充。

但是,当它是客人时, $node->body 的内容只是一个整数。我有没有办法告诉它在生成PDF时绕过权限?或者有更好,安全的方式?
english

I have written a custom module which generates a PDF when a Webform is submitted and mails it to the admin. I am using the Print module to generate the PDF. The problem is, it seems to use the user's permissions when generating the PDF, and not the admin's. This is generally ok for authenticated users, but for guests, it just fails completely.

I have enabled "Access the PDF version" and "Access own webform submissions" permissions for all users (anonymous and authenticated), but I guess "own" still checks for a user ID and fails for guests.

The Print module uses this code to get the content of the $node from the url

$node = new stdClass(); $node->body = menu_execute_active_handler($path, FALSE); 

And here is how I am using the Print module to generate the PDF contents

module_load_include('inc', 'print_pdf', 'print_pdf.pages'); $pdf_url = 'node/' . $nid . '/submission/' . $sid; $file_content = module_invoke('print_pdf', 'generate_path', $pdf_url); 

When it's a user with permission (authenticated), this works fine, it generates and mails the PDF successfully. The contents of $node->body are fully populated.

However, when it's a guest, the contents of $node->body is just an integer. Is there any way for me to tell it to bypass the permissions when generating the PDF? Or is there a better, secure way around this?

              

回答列表

0
 
vote
vote
最佳答案
 

webform_submission_access ,之前要获取PDF URL,请尝试:

  // Where $sid is the webform submission id $_SESSION['webform_submission'][$sid] = TRUE;   

如果适用于匿名用户,可能会授予访问该提交的访问权限。

 

Looking at webform_submission_access, prior to getting the PDF url, try:

// Where $sid is the webform submission id $_SESSION['webform_submission'][$sid] = TRUE; 

If that works for the anonymous user, it may grant access to view that submission.

 
 
   
   

相关问题

0  print.module错误 - 警告:file_put_contents  ( Print module error warning file put contents ) 
我正在使用print.module和dompdf来转换pdf文件。我在页面上收到以下警告。我怎么解决这个问题? 警告: file_put_contents(/home/mysite/public_html/sites/all/modules/print/lib/dompdf/lib/fonts/php_time...

1  HTML标签未通过打印模块和HTML邮件[关闭]  ( Html tags not filtered with print module and html mail ) 
关闭。这个问题需要详细信息或清晰度。它目前不接受答案。 想要改进这个问题?添加详细信息并通过编辑此帖的问题。 关闭 4年前。 ...

0  使用PRINT PDF生成PDF并发送电子邮件  ( Generate pdf with print pdf and send in email ) 
当用户寄存器时,他必须选择一些选项,该选项将定义为之后创建的发票。 我有一个规则,将在保存用户帐户时执行。这就是我所做的: 规则1:创建发票(发票=内容类型)并保存发票 规则2:填写发票 用户在用户注册帐户时生成发票。当我去这样的发票时: http://domain.com/node/147294 我看...

0  节点页面上的“PDF版本”的链接不会出现在Chrome中  ( The link of pdf version on node page does not appear in chrome ) 
我已在Drupal 7站点上安装了打印模块。我配置了打印模块PDF设置。 现在,链接"PDF版本" 在底部的内容区域上显示每个节点。当我点击链接时,它将节点以PDF格式保存。 但这只能在Firefox中使用。在Chrome中,"PDF版" 链接在未显示。 问题是什么? ...

6  将基于表的表单复制为PDF视图输出?  ( Replicating an existing table based form as pdf views output ) 
Drupal 6项目我正在努力涉及具有一堆不同元素的自定义内容类型。我需要复制现有形式 - 请参阅屏幕截图。 最终,我需要将存储在附加到此内容类型的CCK字段中的数据,并根据屏幕截图重建它们作为表。然后需要可节省为pdf。 似乎有两种方法可以做我想要的自然的pdf内容: PDF - Cumberso...

0  使用DSM输入对象  ( Enter object with dsm ) 
我正在实际地尝试在我的镶板节点中读取字段值。 我想收到红色标记字段中的数据,因为你可以在我的屏幕截图中看到。 我试图关注: <?php print_r($display->context['panelizer']['data']['field_centerpage_layout'][0]['value'])...

0  为页面视图创建打印TPL  ( Create a print tpl for page views ) 
我使用print,我会为特定视图创建一个tpl(用于"页面" 显示)。 是可以使用命名的条目吗? ...

2  打印模块的默认设置很烦人  ( Print modules default setting is annoying ) 
我们经常使用打印模块创建节点的PDF;大多数时候,它都在盒子外。 然而,为了我们的要求,让我非常生气的一件事是其默认设置。 安装打印模块时,即使仅适用于一些内容类型,也可以启用"打印友好页" 选项。每次我必须通过编辑单个内容类型编辑选项卡格式手动禁用它。 是否有全局选项,我可以用来禁用所有内容类型的选项,并为我真...

0  旁路自定义模块中的权限  ( Bypass permissions in custom module ) 
我已经写了一个自定义模块,当提交WebForm并将其邮寄给管理员时,会生成PDF。我正在使用打印模块来生成pdf。问题是,在生成PDF时似乎使用用户的权限,而不是管理员。这通常可以用于经过身份验证的用户,但对于访客来说,它只是完全失败。 我已启用"访问PDF版本" 和"访问自己的WebForm提交" 的所有用户(匿名...

1  在打印页面[关闭]后,链接后删除添加的URL  ( Remove added urls after link when printing a page ) 
关闭。这个问题需要详细信息或清晰度。它目前不接受答案。 想要改进这个问题?添加详细信息并阐明编辑此帖的问题。 关闭 4年前。 ...




© 2022 it.wenda123.org All Rights Reserved. 问答之家 版权所有