如何防止用户在 sugarcrm 中使用 ajax 在新密码字段中输入以前的密码


How to prevent user from entering previous passwords in a new password field using ajax in sugarcrm?

我想在

用户更改密码时在现有的JavaScript验证中添加一些JavaScript验证。

现在,我想使用 AJAX 连接对当前用户运行数据库查询的 PHP 文件,并检查new_password字段中输入的密码是否与他最近的 10 个密码匹配。

现在,我发现了SugarCRM用于将密码与存储在数据库中的散列密码进行匹配的功能。但是,问题是我不知道如何使用AJAX连接到SugarCRM中的PHP文件。

我想使用 onblur 函数添加 JavaScript 验证。当用户使用 onblur 输入新密码时,我想使用 AJAX 将该密码值发送到 PHP 文件并返回该值。当用户单击保存按钮时,如果他的新密码与他以前的密码匹配,它应该给出警报框,如果不是,它应该允许他更改密码。

这里有人可以很快指导我吗?任何帮助,不胜感激。

首先,您必须存储用户的最后 10 个密码,因为在 Sugar 的默认行为中,您只会获得旧密码和新密码。

对于 AJAX,您必须在控制器的帮助下在用户模块中创建操作,或者只需在自定义/模块/用户中创建文件操作名称.php。(参考链接)

var URL = "index.php?module=Users&action=actionName";
YAHOO.util.Connect.asyncRequest('POST', URL, callBack);
var callBack = {
   success: function(){},
   failure:function(){}
}

您可以将此代码用于 AJAX 调用,也可以使用此链接

我已经设法找到了我想要的答案。我正在与大家分享我的代码。

if(form.new_password.value!=''){
        $.ajax({
            url:'index.php?entryPoint=check_last_passwords',
            data:{new_password: $('#new_password').val(),
            record: $('#record').val()},
            success: function(data){
                if(data!=''){
                    alert("Error: New password should not match with the last 10 passwords.");
                    return false;
                }else{
                    var _form = $('#EditView')[0];
                    if (!Admin_check())
                        return false;
                    _form.action.value='Save';
                    set_chooser();
                    if(verify_data(EditView))
                        _form.submit();
                }
            }
        });
    }