/o//commerce-media/accounts/-1/images/18647440?download=true
Two Factor Authentication - Liferay 7.0, 7.1
DXP App
Purpose of this plugin is to add an extra security layer for your Liferay Portal. In addition to username and password, user requires to enter a one-time verification code (By using Google Authenticator), when signing in to Liferay Portal (If this feature is enabled).
By using "Two Factor Config" portlet user can Enable/disable this feature. In case user lost Bar/QR code they can recover it by using Recovery option available one "Verify OTP" page. As a part of security, this plugin stores encrypted QR code in database.
To setup this plugin on your Liferay instance, please refer documentation.
By using "Two Factor Config" portlet user can Enable/disable this feature. In case user lost Bar/QR code they can recover it by using Recovery option available one "Verify OTP" page. As a part of security, this plugin stores encrypted QR code in database.
To setup this plugin on your Liferay instance, please refer documentation.
DEVELOPER
An error occurred while processing the template.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar): ==> specifications [in template "3192443#3192485#null" at line 16, column 36] ---- FTL stack trace ("~" means nesting-related): - Failed at: #if specifications?has_content && spe... [in template "3192443#3192485#null" at line 16, column 1] ----
1<#assign
2 channels = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels")
3 channelId = ""
4/>
5
6<#list channels.items as channel>
7 <#if channel.name == "Marketplace Channel">
8 <#assign channelId = channel.id />
9 </#if>
10</#list>
11
12<#if (CPDefinition_cProductId.getData())??>
13 <#assign specifications = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/" + channelId + "/products/" + CPDefinition_cProductId.getData() + "/product-specifications") />
14</#if>
15
16<#if specifications?has_content && specifications.items?has_content>
17 <#list specifications.items as specification>
18 <#if specification.specificationKey?has_content && specification.specificationKey == "developer-name">
19 ${specification.value}
20 </#if>
21 </#list>
22</#if>
DEVELOPER
9/15/19 12:00 AM
Published date
September 15, 2019
Published Date
9/15/19 12:00 AM
SUPPORTED OFFERINGS
Self-Hosted, Self-Managed
Supported Versions
7.1, 7.0
Resource Requirements
An error occurred while processing the template.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar): ==> specifications [in template "3192443#3192485#null" at line 17, column 36] ---- FTL stack trace ("~" means nesting-related): - Failed at: #if specifications?has_content && spe... [in template "3192443#3192485#null" at line 17, column 1] ----
1<#assign
2 channelId=""
3 channels=restClient.get("/headless-commerce-delivery-catalog/v1.0/channels")
4 filteredSpecifications=[]
5/>
6
7<#list channels.items as channel>
8 <#if channel.name=="Marketplace Channel">
9 <#assign channelId = channel.id />
10 </#if>
11</#list>
12
13<#if (CPDefinition_cProductId.getData())??>
14 <#assign specifications = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/" + channelId + "/products/" + CPDefinition_cProductId.getData() + "/product-specifications") />
15</#if>
16
17<#if specifications?has_content && specifications.items?has_content>
18
19 <#assign
20 cpuQuantity = ""
21 memoryQuantity = ""
22 />
23
24 <#list specifications.items?sort_by("specificationKey") as specification>
25 <#if stringUtil.equals(specification.value, "cloud")>
26 <script>
27 var resourceRequirements = document.querySelector(".marketplace-resource-requirements")
28
29 resourceRequirements.classList.remove("d-none");
30 </script>
31 </#if>
32
33 <#if specification.specificationKey?has_content && (stringUtil.equals(specification.specificationKey, "cpu") || stringUtil.equals(specification.specificationKey, "ram"))>
34 <#if stringUtil.equals(specification.specificationKey, "cpu" )>
35 <#assign cpuQuantity = specification.value />
36
37 <#if cpuQuantity?has_content>
38 ${cpuQuantity}
39 <#if cpuQuantity?eval gt 1>
40 CPUS
41 </#if>
42 <#if cpuQuantity?eval lt 2>
43 CPU
44 </#if>
45 </#if>
46 </#if>
47
48 <#if stringUtil.equals(specification.specificationKey, "ram")>
49 <#assign memoryQuantity = specification.value />
50
51 <#if cpuQuantity?has_content && memoryQuantity?has_content >,</#if>
52 </#if>
53
54 <#if stringUtil.equals(specification.specificationKey, "ram")>
55 <#assign memoryQuantity = specification.value />
56
57 <#if memoryQuantity?has_content>
58 ${memoryQuantity} GB RAM
59 </#if>
60 </#if>
61 </#if>
62 </#list>
63</#if>
Edition
CE, EE
PRICE
An error occurred while processing the template.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar): ==> specifications [in template "3192443#3192485#null" at line 16, column 36] ---- FTL stack trace ("~" means nesting-related): - Failed at: #if specifications?has_content && spe... [in template "3192443#3192485#null" at line 16, column 1] ----
1<#assign
2 channelId=""
3 channels=restClient.get("/headless-commerce-delivery-catalog/v1.0/channels")
4 filteredSpecifications=[] />
5
6<#list channels.items as channel>
7 <#if channel.name=="Marketplace Channel">
8 <#assign channelId = channel.id />
9 </#if>
10</#list>
11
12<#if (CPDefinition_cProductId.getData())??>
13 <#assign specifications = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/" + channelId + "/products/" + CPDefinition_cProductId.getData() + "/product-specifications") />
14</#if>
15
16<#if specifications?has_content && specifications.items?has_content>
17 <#list specifications.items?sort_by("specificationKey") as specification>
18 <#if specification.specificationKey?has_content>
19 <#if stringUtil.equals(specification.specificationKey, "price-model" )>
20 <#assign priceModel = specification.value />
21 <#if priceModel?has_content>
22 ${priceModel}
23 </#if>
24 </#if>
25 </#if>
26 </#list>
27</#if>
help & support
Terms & Conditions
SHARE LINK
HTML Example
A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. Paragraphs are usually an expected part of formal writing, used to organize longer prose.