Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript OpenIDM通过自定义端点更新用户属性_Javascript_Json_Openidm - Fatal编程技术网

Javascript OpenIDM通过自定义端点更新用户属性

Javascript OpenIDM通过自定义端点更新用户属性,javascript,json,openidm,Javascript,Json,Openidm,我正试图在OpenIDM中开发一个自定义js端点,在该端点中,我使用脚本中生成的两个属性(otpexpiry和otpvalue)更新搜索到的用户 我在openidm/conf/endpoint otp.json中添加了一个json conf来链接: { "context" : "endpoint/otp/*", "type" : "text/javascript", "file" : "script/otp.js" } 这是我的脚本openidm/script/otp.js: (func

我正试图在OpenIDM中开发一个自定义js端点,在该端点中,我使用脚本中生成的两个属性(
otpexpiry
otpvalue
)更新搜索到的用户

我在
openidm/conf/endpoint otp.json
中添加了一个json conf来链接:

{
 "context" : "endpoint/otp/*",
 "type" : "text/javascript",
 "file" : "script/otp.js"
}
这是我的脚本
openidm/script/otp.js

(function() {
 if(request.method === "update") {
  var five_minutes = 5 * 60 * 1000;
  var timestamp = new Date().getTime();
  var otpexpiry = timestamp + five_minutes;
  var otpvalue = Math.floor(Math.random() * 9999);


  /* Not sure of this code below I have to update the user searched with " otpdate : otpexpiry " and "otp : otpvalue "*/
  var u = request.value;
  var id = "managed/user/" + u._id;
  if (id != null) {
    openidm['update']( ... );
  }

  return {
       method: "update",
       resourceName: request.resourcePath,
       revision: request.revision,
       parameters: request.additionalParameters,
       patch: request.patchpperations,
       context: context.current
       };
  } else {
       throw { code: 500, message: "Unknown request type " + request.method};
  }
})();

如何更新搜索到的用户的两个变量?

对于任何对我如何实现这一点感兴趣的人,下面是我的代码。我只需从帖子中传递数据,查询用户,然后使用
openidm.patch
方法更新属性

(function(){
    var content = request.content;
        java.lang.System.out.println(content);

        var userID = content.id;
        var userEmail = content.email;
        java.lang.System.out.println("User ID: " + userID);
        java.lang.System.out.println("User Email: " + userEmail);

        var qry = {
                '_queryFilter' : '/mail eq "' + userEmail + '"'
        };
        var userFound = openidm.query("managed/user", qry);

        if (userFound != null) {
                java.lang.System.out.println(userFound);

                /*Generate OTP and Expiry */
                var five_minutes = 5 * 60 * 1000;
                var timestamp = new Date().getTime();
                var otpexpiry = timestamp + five_minutes;
                var otpvalue = Math.floor(Math.random() * 9999);

                java.lang.System.out.println("OTP Valore: " + otpvalue);
                java.lang.System.out.println("Scadenza: " + otpexpiry);

                var patch = [{ "operation" : "replace", "field" : "/otp", "value" : otpvalue },{ "operation" : "replace", "field" : "/otpdate" , "value" : otpexpiry }];

                openidm.patch("managed/user/" + userID, null, patch);

                return true;

        }

})();
可以使用POST方法触发此端点:

curl -k \
--header "X-OpenIDM-Username: xxx" \
--header "X-OpenIDM-Password: xxx" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data '{ \
"id" : "2d141539-50b6-4637-bfe8-24a1d61fa556", \
"email" : "jdoe@example.com" }' \
--request POST "https://localhost:8443/openidm/endpoint/otp"