How to override UxElement localized string based on a claim value - azure-ad-b2c

I am woring on an application, where header text comes from adb2c policy localization file.
I want to override {0} dynamically based on a claim type values.
<LocalizedResources Id="api.signuporsignin.en">
<LocalizedStrings>
<LocalizedString ElementType="UxElement" StringId="local_intro_generic">Welcome to {0}</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
Is this possible, could someone please help me out?

Placeholders like {0} will be filled automatically with the DisplayName value of ClaimType.
As sign up sign in has username and password by default, it cannot be changed if used in standard userflows.can be done in recommended flows.
We need to change what is to be filled by the user for the required claim type field and has to change html page content accordingly.
{
"ElementType": "ClaimType", //"UxElement"
"ElementId": "UserId", // ”<give original placeholder in your case >”
"StringId": "DisplayName",//”<give original placeholder in your case >”local_intro_generic”
"Override": true,
"Value": "<required claim>"
}
Please check this Reference: Azure AD B2C local account Sign-in page customization - Stack Overflow

Related

Show DisplayName Lables in ADB2C

We have a set of localized displayname variables in our Custom Policies for ADB2C, such as...
<LocalizedString ElementType="ClaimType" ElementId="signInName" StringId="DisplayName">Email</LocalizedString>
These then render in our UX as the below.
Is there a way to tell ADB2C to put the labels on top of the fields or in some other orientation?
Thank you - Greg.
If you wanted to do things completely in B2C, you could create custom claim types emailLabel and passwordLabel with user input types Paragraph (or ReadOnly, but I prefer Paragraph), put them as input claims with default values set to whatever you want the label to say, then use the labels as display claims, where their order should affect the order they appear in.
If you are good with HTML and CSS, I'd just create the labels in a custom content definition and use that instead

Shopware 6 Flow Builder and an other Email Template for "Customer account registered"

i have a question: when i want to send a diffent email template in the case of a customer account registration in a specific sales channel (based on a condition from the rule builder), i switch to "Settings", "Shop", "Flow Builder", edit the flow with the name "Customer account registered", click on the tab "Flow" and edit the "send email" action and change the Email template to an other (or new) Email template.
When i do this, it doesn't work, the email will not be sended. But when i duplicated the Email Template with the type "Customer registration" and use this Email template instead of an other Email template (or a new one), it works. Why is this so? So in this case, does it always have to be an Email template of the type "Customer registration"? Or is this a bug?
This is very likely due to a twig syntax error in your template. For example this could happen if you used variables that can't be resolved from the data available to the template. You'll have to double check for missing brackets and such. Also with the variables try to use those from the default template. Also when you edit an email template you should see in the sidebar to the right an icon with the symbol </>. When you click on that it will show you the variables that were available the last time that template was send.

JSON request for envelope with single document, two signers, pre-fill fields

I have an envelope with a single document and two signers saved as a server-side template. The signers execute the agreement in a specific order. The document has a number of pre-fill fields in it.
I am trying to automate sending this agreement out using Integromat. Unfortunately, Integromat's module doesn't allow for pre-fill fields in templates, leaving me to create the API request manually. This is where I get stuck.
The closest I have come is the JSON request below, POSTed to:
…/v2.1/accounts/{accountId}/envelopes, with capitalised values filled in automatically:
{
"templateId": "TEMPLATE_ID",
"templateRoles": [
{
"email": "CLIENT_EMAIL",
"name": "CLIENT_NAME",
"roleName": "Recipient",
"tabs": {
"prefillTabs": {
"textTabs": [{
"tabLabel": "Prefill: Purpose",
"value": "PURPOSE_FIELD_DATA"
}]
}
}
}, {
"email": "STAFF_EMAIL",
"name": "STAFF_NAME",
"roleName": "Company"
}
],
"status": "sent"
}
The response from the API is:
The operation failed with an error. [400] A Required field is
incomplete. TabId: GUI_HERE
What I can't figure out is how to get the pre-fill data submitted since it's not tied to a particular signer. I have scoured the v2.1 API documentation but there is no scenario simple enough for this request.
Apologies if I am missing something obvious here; this is my first rodeo with DocuSign's API.
Do you have any idea what I am doing wrong or, better yet, what the body of the request should be for this (presumably) simple scenario?
Update: For pre-fill tabs, you need to have both the tabId and tabLabel, not enough to just have tabLabel like regular tabs.
My guess is a mismatch of the tabId field for the tabs on your template vs. what's in the API request:
You had this value in your request:
Prefill: Purpose
Does it match how the template was set?
I just tried this with composite templates.
When I added the prefill tabs to a recipient I received the error
Error code: INVALID_TAB_OPERATION.
Message: The Tab specified is not valid for the requested operation.
PrefillTab not allowed for recipient.
which makes sense since prefill tabs are associated with a document, not a recipient.
I tried by adding a document to the composite template, but that didn't work either.
I suggest that you use regular tabs. Mark them locked so they can't be changed. Mark them shared so every signer will see them. Then fill in their values as part of your Envelopes:create call.
Here's a live example of doing this. Note the text2 tab which is locked. (It should have the shared attribute set to true. You can add that from the Tabs/text toolbox on the left.)
Also see this blog post about templates.
Integromat does even without using DocuSign Rest APIs.
You can use Powerforms, it will save your cost for Rest APIs.
I recently did this, but issue is for first recipient, you need to send email manually with powerform link.
Here I dynamically construct PowerForm URL where I pass values to pre populate template fields.
To send email from integromat, you can configure Gmail module or any other email module and create html template where you can append Powerform URL in anchor tag

jwt.io says Signature Verified even when key is not provided

I signed a jwt in nodejs with the below snipet.
var jwtoken = jwt.sign({ email: 'test#test.com', name: 'test' }, 'abcd');
I got the below token after signing
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRlc3RAdGVzdC5jb20iLCJuYW1lIjoidGVzdCIsImlhdCI6MTYzNjE4MjYwOX0.07FXjm1lKEIiU_QOMEEOFzhsC0vtKt4PFoW-7YHHzyM
I wanted to verify this with jwt.io when I paste the JWT in jwt.io, I can see the the site says the "Signature Verified" for whatever key I provide(I dont need to provide abcd which is my actual key). I was expecting that the key would be required to determine if a signature is valid. How does the jwt.io determine if a jwt is valid without the original key.
The https://jwt.io debugger works in both directions, you can inspect and verify tokens or create and sign tokens. When you first paste your token on the left side and then paste the secret or key into the field under 'verify signature' in the right column, the signature will be recreated and you should notice that it changed. In this case, the result is always 'signature verified', because the signature was just calculated based on the entered secret.
The correct way to verify a signature is to first paste the key into the secret key field and then paste the token to the left part of the debugger. Always make sure, that any other content in the input fields is overwritten. If your key is actually Base64 encoded (i.e. a binary secret that is stored in Base64 encoded form), you should tell jwt.io by checking the "secret base64 encoded" checkbox.
Then the result, either 'signature' verified' or 'invalid signature', will be correct.
Every secret that you enter after that causes a recalculation of the signature and then it's always verified (with the new secret). Also clicking on the "secret bas64 encoded" checkbox causes recalculation.
But if you do it in the right order, a wrong secret causes an "invalid signature" result:

DocuSign API auto convert PDF fields to SecureFields

When using the DocuSign API to create a new template, is there a way to automatically convert PDF fields to DocuSign SecureFields like there is when using the web console?
Posting to:
https://demo.docusign.net/restapi/v2/accounts/{account_id}/templates
Request body:
{
"emailsubject":"Please sign this",
"templateId":"",
"recipients":{
"signers":[{
"routingOrder":1,
"roleName":"RoleOne",
"recipientId":"1"
}]
},
"envelopeTemplateDefinition":{
"name":"test",
"templateId":""
},
"documents":[{
"documentId":"1",
"name":"Agreement8_7_2012",
"transformPdfFields":"true"
}]
}
I get a successful response and the template is created, just without any DocuSign SecureFields.
First, try setting the defaultRecipient property to true for the recipient:
"recipients":{
"signers":[{
"routingOrder":1,
"roleName":"RoleOne",
"recipientId":"1",
"defaultRecipient":"true"
}]
}
This will tell DocuSign that all PDF fields that are transformed into DocuSign fields should belong to that recipient.
If that change doesn't resolve your issue, then I'd suspect that perhaps it's the properties of the PDF fields that are preventing the transformation from being successful. To troubleshoot, I'd suggest that you do the following:
Verify that the fields in your PDF are amongst the Field Types that DocuSign will convert (i.e.: CheckBox, DateTime, ListBox, Numeric, Radio, Text, Signature, and Password).
Examine field properties in the PDF. Seems like DocuSign may not transform PDF fields that have certain protective properties set (for example, Visible=false -- or for signature fields, Read-Only=true). Perhaps start experimenting with various property settings on a single field, to see if changing field properties in the PDF enables DocuSign to transform that field.
The "Transform PDF Fields" section [starting on page 105] of the DocuSign REST API Guide (http://www.docusign.com/sites/default/files/REST_API_Guide_v2.pdf) contains info about the field transformation process.

Resources