2016-03-10 32 views
1

我想爲Paw生成Json Web令牌創建一個DynamicValue插件。完整的源代碼可以在這裏找到:https://github.com/choffmeister/Paw-JsonWebTokenDynamicValuePaw的DynamicValueInput類型JSON和複選框的問題

相關文件:

// JsonWebTokenDynamicValue.js 
import jsrsasign from 'jsrsasign'; 

@registerDynamicValueClass 
class JsonWebTokenDynamicValue { 
    static identifier = 'de.choffmeister.PawExtensions.JsonWebTokenDynamicValue'; 
    static title = 'Json Web Token'; 
    static help = 'https://github.com/choffmeister/Paw-JsonWebTokenDynamicValue'; 

    static inputs = [ 
    DynamicValueInput('signatureSecret', 'Secret', 'SecureValue'), 
    DynamicValueInput('signatureSecretIsBase64', 'Secret is Base64', 'Checkbox'), 
    DynamicValueInput('payload', 'Payload', 'JSON') 
    ]; 

    evaluate() { 
    console.log(JSON.stringify(this.payload, null, 2)); 
    console.log(JSON.stringify(this.signatureSecretIsBase64, null, 2)); 

    const now = Math.floor((new Date()).getTime()/1000); 

    const header = { 
     typ: 'JWT', 
     alg: 'HS256' 
    }; 
    const payload = { 
     ...this.payload, 
     exp: now + (60 * 60 * 24 * 7), 
     iat: now 
    }; 

    const secret = this.signatureSecretIsBase64 
     ? {b64: jsrsasign.b64utob64(this.signatureSecret)} 
     : this.signatureSecret; 

    return jsrsasign.jws.JWS.sign(null, header, payload, secret); 
    } 
} 

它的外觀在GUI:

enter image description here

我搜索https://luckymarmot.com/paw/doc/extensions/create-dynamic-value,周圍的文檔和所有的插件實例我可以在網上找到,但我仍然有兩個問題,我不能解決:

  1. 使用類型Checkbox的DynamicValueInput時,輸入字段不可見(請參見屏幕截圖)。我得到一個值(空字符串),但只是看不到它。我如何使複選框出現?
  2. 當使用JSON類型的DynamicValueInput時,則使用JSON內部的動態值(請參見屏幕截圖)未解析,但我得到了一種描述對象(字符串化),該動態值是什麼。記錄的this.payload物體看起來是這樣的:

    { 
        "foo": "[{\"data\":{\"environmentVariable\":\"2925ABDA-8AAC-440B-B2CA-DA216CD37A09\"},\"identifier\":\"com.luckymarmot.EnvironmentVariableDynamicValue\"}]" 
    } 
    

    也許這是值得大家注意:當使用KeyValueList類型則DynamicInputValue內的動態值妥善解決。我怎樣才能用JSON這個類型來實現呢?

+0

你說得對,這兩個問題顯然是錯誤。我已經能夠自己重現它。解決方案將很快推出! :) 抱歉給你帶來不便。 –

+1

沒問題。期待修復,以便我可以發佈我的插件:) – Thekwasti

回答