SugarCRM,通过AJAX调用获取当前登录用户详细信息

时间:2013-03-21 02:39:49

标签: authentication sugarcrm

我编写了一个自定义PHP文件,用于从SugarCRM的AJAX请求中调用。但是,当我尝试打印时

global $current_user;

print_r($current_user);

它打印空白值,其中包含数组中列出的所有字段,如下所示。

User Object
(
    [name] => 
    [full_name] => 
    [id] => 
    [user_name] => 
    [user_hash] => 
    [salutation] => 
    [first_name] => 
    [last_name] => 
    [date_entered] => 
    [date_modified] => 
    [modified_user_id] => 
    [created_by] => 
    [created_by_name] => 
    [modified_by_name] => 
    [description] => 
    [phone_home] => 
    [phone_mobile] => 
    [phone_work] => 
    [phone_other] => 
    [phone_fax] => 
    [email1] => 
    [email2] => 
    [address_street] => 
    [address_city] => 
    [address_state] => 
    [address_postalcode] => 
    [address_country] => 
    [status] => 
    [title] => 
    [portal_only] => 0
    [department] => 
    [authenticated] => 
    [error_string] => 
    [is_admin] => 0
    [employee_status] => 
    [messenger_id] => 
    [messenger_type] => 
    [is_group] => 
    [accept_status] => 
    [team_id] => 
    [receive_notifications] => 1
    [default_team] => 
    [reports_to_name] => 
    [reports_to_id] => 
    [team_exists] => 
    [table_name] => users
    [module_dir] => Users
    [object_name] => User
    [user_preferences] => 
    [importable] => 1

.....

我在SugarCRM论坛中搜索过但没有用。我怀疑原因可能是我的自定义页面中没有定义的有效入口点,因为不了解如何定义除以下方法

if(!defined('sugarEntry'))define('sugarEntry', true);
  if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); 
  require_once('include/entryPoint.php');

1 个答案:

答案 0 :(得分:1)

我知道这个问题可以追溯到2013年,想到分享:)

当您致电

时会发生这种情况
global $current_user;

在sugarcrm之外,我做的一个选项是在自定义用户模块中创建一个钩子并在那里访问$ current_user变量,只获取那些所需的值,可能保存在会话上?取决于你。

希望这有助于任何人:)

我的样本

创建文件 custom_external_session.php

<?php if(!defined('sugarEntry') ||!sugarEntry) die('Not A Valid Entry Point');
class custom_external_session {
     function get_current_user(& $focus, $event, $arguments){
          global $current_user;
          $user_id = $current_user->id;
          session_start();
          $_SESSION["custom_current_user"] =  $user_id;
     }
}
  • 将此文件上传到/ var / www / html / sugarcrm / custom / modules / Users /

注意:/ var / www / html / sugarcrm / - &gt;这取决于你放糖的地方

  • 然后在该文件夹(/ custom / modules / Users /)上,编辑logic_hooks.php然后添加此代码

    $hook_array['after_login'][] = Array(5, 'custom_external_session', 'custom/modules/Users/custom_external_session.php', 'custom_external_session', 'get_current_user');
    
  • 你现在可以使用这个: $ _ SESSION [&#34; custom_current_user&#34;] 来获取当前的user_id,然后你可以用它来播放记录,不妨编辑或者在已保存的会话中添加更多信息,比如说你想要全名等,只需在custom_external_session下进行。我不确定是否有更好的方法使用外部代码

  • 在编辑custom_external_session时,请记住始终 RELOGIN ,因此值会更新。

希望这对你来说更清楚。

相关问题