2017-06-07 7 views
0

私は、私のスクリプトで生成する2つの属性(otpexpiryおよびotpvalue)で検索したユーザーをOpenIDMで更新するカスタムjsエンドポイントを開発しようとしています。OpenIDMは、カスタムエンドポイント上のユーザー属性を更新します

私はリンクに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}; 
    } 
})(); 

どのように私は、検索ユーザーの2つの変数を更新することができますか?

答えて

0

私がこれをどのように達成したかに関心がある人は、以下は私のコードです。私は単にPOSTからデータを渡すだけで、私はそのユーザーを照会してから、属性を更新するために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" : "[email protected]" }' \ 
--request POST "https://localhost:8443/openidm/endpoint/otp" 
関連する問題