<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Efficy Overflow Q&amp;A - Recent questions and answers in Guest</title>
<link>https://overflow.efficy.io/?qa=qa/developers/customizing-efficy/guest</link>
<description>Powered by Question2Answer</description>
<item>
<title>Answered: How to insert a QR code in a template with a dynamic hyperlink to a guest page including the MAILINGCODE</title>
<link>https://overflow.efficy.io/?qa=6871/insert-template-dynamic-hyperlink-including-mailingcode&amp;show=6877#a6877</link>
<description>&lt;p&gt;Hi Eric&lt;/p&gt;

&lt;p&gt;Flexmail supports the barcode element, that can generate QR codes.&lt;br&gt;
See &lt;a rel=&quot;nofollow&quot; href=&quot;https://help.efficy.io/edn/projectguides/flexmail_gdpr#send-campaign-registration-reminder-e-mail&quot;&gt;https://help.efficy.io/edn/projectguides/flexmail_gdpr#send-campaign-registration-reminder-e-mail&lt;/a&gt;&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=6871/insert-template-dynamic-hyperlink-including-mailingcode&amp;show=6877#a6877</guid>
<pubDate>Fri, 14 Apr 2023 06:52:31 +0000</pubDate>
</item>
<item>
<title>Answered: Error in document sharing link</title>
<link>https://overflow.efficy.io/?qa=6221/error-in-document-sharing-link&amp;show=6222#a6222</link>
<description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;p&gt;You need to modify the property &quot;fileUrl&quot; in the configuration.&lt;/p&gt;

&lt;p&gt;Kr,&lt;/p&gt;

&lt;p&gt;Eric&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=6221/error-in-document-sharing-link&amp;show=6222#a6222</guid>
<pubDate>Thu, 08 Jul 2021 14:53:26 +0000</pubDate>
</item>
<item>
<title>Guest page &amp; requirejs : Yes we can!</title>
<link>https://overflow.efficy.io/?qa=6181/guest-page-requirejs-yes-we-can</link>
<description>&lt;p&gt;I know, I know, I know: Guest pages went to the dark side of the force! But since I'm as old as Methuselah, I already had to work on them and still have to, for legacy reasons.&lt;/p&gt;

&lt;p&gt;First I have to thank Stéphane &amp;amp; Kristof, our gurus, who opened the Red Sea waters to let me reach the Holy Land. &lt;/p&gt;

&lt;p&gt;The first step to activate requirejs framework from a guest page is to call a macro like this one:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;DialogScripts {[
  &amp;lt;%UseScript('js/config/require.config.js', fixedpath=T, data-custombase='%%GetFileBase(short=T)')%&amp;gt;
  &amp;lt;%Evaluate(&quot;%%Macro('RequireConfigCustom')&quot;)%&amp;gt;
  &amp;lt;%UseScript('../../../../lib/js/vendor/require.js', fixedpath=T, data-main='%%Macro(&quot;MainJsModule&quot;)', data-custom-main='%%Macro(&quot;MainJsModuleCustom&quot;)')%&amp;gt;
]}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The second one is to copy the standard &lt;code&gt;efficy/js/config/require.config.js&lt;/code&gt; file in your &lt;code&gt;guest/myGuest/js/config&lt;/code&gt; folder. A few drops of Holy water on this file will then suffice to perform the miracle :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;baseUrl: '../guest/myGuest/js',
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Since your custom &lt;code&gt;require.config.js&lt;/code&gt; is one level deeper than the efficy one, you have to add one &lt;code&gt;../&lt;/code&gt; to all relative paths:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;'domReady':               '../../lib/js/vendor/require.domReady',
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;becomes&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;'domReady':             '../../../lib/js/vendor/require.domReady',
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Add this &lt;code&gt;../&lt;/code&gt; to all standard modules relative paths.&lt;/p&gt;

&lt;p&gt;And at the end of the file :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;if (tagC) {
  attrC = tagC.getAttribute(attrC).replace(/([^\/]*)\/$/, '$1'); // remove trailing slash;
  if (attrC) require.paths.custom = '../' + attrC + '/js/';
}
if (tagD) {
  attrD = tagD.getAttribute(attrD).replace(/([^\/]*)\/$/, '$1'); // remove trailing slash;
  if (attrD &amp;amp;&amp;amp; attrD !== '..') require.paths.dealer = '../' + attrD + '/js/';
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;becomes&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;if (tagC) {
  attrC = tagC.getAttribute(attrC).replace(/([^\/]*)\/$/, '$1'); // remove trailing slash;
if (attrC)
  require.paths.custom = '../../' + attrC + '/js/';
}
if (tagD) {
  attrD = tagD.getAttribute(attrD).replace(/([^\/]*)\/$/, '$1'); // remove trailing slash;
if (attrD &amp;amp;&amp;amp; attrD !== '..')
  require.paths.dealer = '../../' + attrD + '/js/';
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can now use the requirejs well known syntax from your page :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;requirejs(
  ['standardModule', 'custom/misc/customModule'],
  function(StandardModule, CustomModule) {
     ...
  }
);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Meditate on this Psalm III of Chapter II of the Gospel according to Saint Peter and think about it the next time you'll have to work on a guest page.&lt;/p&gt;

&lt;p&gt;Amen!&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=6181/guest-page-requirejs-yes-we-can</guid>
<pubDate>Fri, 18 Jun 2021 11:48:26 +0000</pubDate>
</item>
<item>
<title>Answered: refresh GetGuestLabel in 12.0</title>
<link>https://overflow.efficy.io/?qa=6133/refresh-getguestlabel-in-12-0&amp;show=6135#a6135</link>
<description>&lt;p&gt;Hello&lt;/p&gt;

&lt;p&gt;It seems very much related to &lt;a rel=&quot;nofollow&quot; href=&quot;https://overflow.efficy.io/?qa=4194/using-readregistry-in-efficy-11-2-guest-page&amp;amp;show=4194#q4194&quot;&gt;this earlier Overflow post&lt;/a&gt;, Stéphane experienced the same issue when trying to refresh guest labels. And, I can also simulate the no-refresh labels issue.&lt;/p&gt;

&lt;p&gt;I think the action is no longer executed since the development of the customer profile. So, at the moment, I don't see any easy work around besides the Application Pool recycle.&lt;/p&gt;

&lt;p&gt;I created incident CFT-2021-144551, linked to this post and linked to your user account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edit&lt;/strong&gt;: the issue was instantly fixed by R&amp;amp;D, r25003. So, in 3 months it should be rolled out on all Cloud instances of 11.3 and 12.0&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=6133/refresh-getguestlabel-in-12-0&amp;show=6135#a6135</guid>
<pubDate>Fri, 28 May 2021 11:34:03 +0000</pubDate>
</item>
<item>
<title>Answered: Customize the error message for a Guest page when there are &quot;Invalid parameters&quot;</title>
<link>https://overflow.efficy.io/?qa=5699/customize-error-message-guest-page-there-invalid-parameters&amp;show=5762#a5762</link>
<description>&lt;p&gt;Hello Jeroen,&lt;/p&gt;

&lt;p&gt;It's not possible. It might be a nice suggestion to the R&amp;amp;D team.&lt;/p&gt;

&lt;p&gt;Alex.&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=5699/customize-error-message-guest-page-there-invalid-parameters&amp;show=5762#a5762</guid>
<pubDate>Sat, 12 Dec 2020 00:06:17 +0000</pubDate>
</item>
<item>
<title>Answered: Upload documents (files) from a guest page</title>
<link>https://overflow.efficy.io/?qa=4394/upload-documents-files-from-a-guest-page&amp;show=4396#a4396</link>
<description>&lt;p&gt;Hi Henry&lt;/p&gt;

&lt;p&gt;Since 11.2, you can make a &lt;code&gt;ServerJS node script&lt;/code&gt; that allows you to read the binary stream of the uploaded file. I quickly made a show case of how you can work both client side and server side. &lt;/p&gt;

&lt;p&gt;Note that it's tested with only one file upload in a form post. Tested only with Chrome etc. It's a prototype that needs further improvements, but at least it's a POC that proves we can do it without dotnet&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WARNING:&lt;/strong&gt; Enabling file upload without authentication is a security consideration. The request can be used to SPAM the database with a large amount of files. Malicious files and scripts can be uploaded without any problem. We do recommend to dump each file to disk to have it scanned before exposing it to internal users or at least whitelist only safe extensions. The best design is to limit file upload to the extranet only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Guest page&lt;/strong&gt;:&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://mydomain/crm/guest?app=website&quot;&gt;https://mydomain/crm/guest?app=website&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;form method=&quot;post&quot; enctype=&quot;multipart/form-data&quot; 
  action=&quot;node/upload/file&quot;&amp;gt;
  &amp;lt;input type=&quot;file&quot; name=&quot;File1&quot; id=&quot;File1&quot; /&amp;gt;&amp;lt;/br&amp;gt;
  &amp;lt;input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;Submit files(s)&quot; /&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;customs&amp;#92;{customer}\efficy\serverjs\api\node\upload\file.js&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;function main() {      
  try {        
    var rawContent = Request.rawContent(),
        contentParts = rawContent.split(&quot;\n\r\n&quot;),
        headers = contentParts[0],
        byteStream = contentParts[1],
        filename = &quot;&quot;,
        matches = headers.match(/filename[^;=\n]*=(?:(\\?['&quot;])(.*?)\1|(?:[^\s]+'.*?')?([^;\n]*))/);

    if (matches.length &amp;gt; 2) {
      filename = matches[2];   
    }

    if (filename &amp;amp;&amp;amp; byteStream) {      
      strSaveBinaryFile(&quot;c:\\temp\\&quot; + filename, byteStream, false);
    }

    Response.setStatusCode(200); // HTTP_OK
  } catch (e) {
    Response.setStatusCode(400); // HTTP_BADREQUEST
Response.setContent(e.message);
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&quot;https://overflow.efficy.com/?qa=blob&amp;amp;qa_blobid=9928171644109038709&quot; alt=&quot;Guest page&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://overflow.efficy.com/?qa=blob&amp;amp;qa_blobid=17664636505403440373&quot; alt=&quot;Folder on server&quot;&gt;&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=4394/upload-documents-files-from-a-guest-page&amp;show=4396#a4396</guid>
<pubDate>Fri, 31 May 2019 13:15:34 +0000</pubDate>
</item>
<item>
<title>Answered: Using readregistry in Efficy 11.2 guest page</title>
<link>https://overflow.efficy.io/?qa=4194/using-readregistry-in-efficy-11-2-guest-page&amp;show=4211#a4211</link>
<description>&lt;p&gt;Hello Rob,&lt;/p&gt;

&lt;p&gt;You should have defined a Guest Application with a name in the Alias Manager.&lt;br&gt;
You can then use this name in the following URL:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://127.0.0.1/crm/guest?app=YOUR_GUEST_NAME&amp;amp;action=readregistry
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;There is no need to put the &quot;customer&quot; parameter in the URL, the guest name sent in the &quot;app&quot; parameter is sufficient.&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=4194/using-readregistry-in-efficy-11-2-guest-page&amp;show=4211#a4211</guid>
<pubDate>Thu, 09 May 2019 13:08:47 +0000</pubDate>
</item>
<item>
<title>Answered: Remote API Node - Unauthorized IP for the provided API key</title>
<link>https://overflow.efficy.io/?qa=4009/remote-api-node-unauthorized-ip-for-the-provided-api-key&amp;show=4012#a4012</link>
<description>&lt;p&gt;Did you add the full host name, arthurenwillemijn.efficytest.com ?&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=4009/remote-api-node-unauthorized-ip-for-the-provided-api-key&amp;show=4012#a4012</guid>
<pubDate>Fri, 08 Mar 2019 08:06:35 +0000</pubDate>
</item>
<item>
<title>Answered: Encrypt string parameters in guest page</title>
<link>https://overflow.efficy.io/?qa=2626/encrypt-string-parameters-in-guest-page&amp;show=2629#a2629</link>
<description>&lt;p&gt;Another simpler approach is to check server side whether or not the guest contact has access on that record identified by propkey. Throw an exception when access is forbidden. It will lead to the typical guest page error, but that's should not be an issue.&lt;/p&gt;

&lt;p&gt;I prefer security serverside instead of obscurity&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=2626/encrypt-string-parameters-in-guest-page&amp;show=2629#a2629</guid>
<pubDate>Tue, 25 Jul 2017 06:03:06 +0000</pubDate>
</item>
<item>
<title>Answered: Guest Page configuration</title>
<link>https://overflow.efficy.io/?qa=1982/guest-page-configuration&amp;show=2031#a2031</link>
<description>&lt;p&gt;After a quick talk with Prince, the real issue was that the file he was trying to access was miss named.&lt;/p&gt;

&lt;p&gt;After renamed it, everything is ok :)&lt;/p&gt;

&lt;p&gt;Alex.&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=1982/guest-page-configuration&amp;show=2031#a2031</guid>
<pubDate>Sat, 19 Nov 2016 20:00:58 +0000</pubDate>
</item>
<item>
<title>Answered: Guest configuration : application password start with ?</title>
<link>https://overflow.efficy.io/?qa=2019/guest-configuration-application-password-start-with&amp;show=2020#a2020</link>
<description>&lt;p&gt;Reponse from R&amp;amp;D :&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;As of now, the /guest?action=readregistry uses the first character of&lt;br&gt;
  the xxx_password key to determine if the password is already&lt;br&gt;
  encrypted. &lt;/p&gt;
  
  &lt;p&gt;Therefore, currently a password starting itself with &quot;?&quot; must be&lt;br&gt;
  encrypted elsewhere and copied into the key value in the already&lt;br&gt;
  encrypted form, prepended with a &quot;?&quot;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It will, maybe, be improved in a futur Efficy release.&lt;/p&gt;

&lt;p&gt;Alex.&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=2019/guest-configuration-application-password-start-with&amp;show=2020#a2020</guid>
<pubDate>Wed, 16 Nov 2016 13:43:50 +0000</pubDate>
</item>
<item>
<title>Answered: REST webservice and Efficy</title>
<link>https://overflow.efficy.io/?qa=1326/rest-webservice-and-efficy&amp;show=1359#a1359</link>
<description>&lt;p&gt;Hi Henry,&lt;/p&gt;

&lt;p&gt;we are running an extensive REST service based on SYMFONY &amp;amp; PHP5 -&amp;gt; Efficy 2012.&lt;/p&gt;

&lt;p&gt;Is this something you are interessed in?&lt;br&gt;
we happy to share some knowledge ;-)&lt;/p&gt;

&lt;p&gt;Kind regards, Tim&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=1326/rest-webservice-and-efficy&amp;show=1359#a1359</guid>
<pubDate>Thu, 18 Feb 2016 11:01:58 +0000</pubDate>
</item>
<item>
<title>Answered: opencaptcha deprecated</title>
<link>https://overflow.efficy.io/?qa=746/opencaptcha-deprecated&amp;show=1121#a1121</link>
<description>&lt;p&gt;Thank you&lt;br&gt;
I reply to avoid keeping this post in the unanswered :-)&lt;br&gt;
Next time ask the question and replys yourself in case it is not a direct question but an information post&lt;/p&gt;

&lt;p&gt;thanks&lt;br&gt;
Yannick&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=746/opencaptcha-deprecated&amp;show=1121#a1121</guid>
<pubDate>Wed, 06 Jan 2016 10:21:49 +0000</pubDate>
</item>
<item>
<title>Answered: How to refresh guest labels ?</title>
<link>https://overflow.efficy.io/?qa=752/how-to-refresh-guest-labels&amp;show=756#a756</link>
<description>&lt;p&gt;Now it is working !&lt;/p&gt;

&lt;p&gt;I moved my guest&lt;em&gt;labels file into the wwwroot folder ( as efficy&lt;/em&gt;labels file )&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=752/how-to-refresh-guest-labels&amp;show=756#a756</guid>
<pubDate>Wed, 16 Sep 2015 09:23:37 +0000</pubDate>
</item>
<item>
<title>Answered: Guest Page or Extranet what is the difference?</title>
<link>https://overflow.efficy.io/?qa=628/guest-page-or-extranet-what-is-the-difference&amp;show=632#a632</link>
<description>&lt;p&gt;Stéphane.&lt;/p&gt;

&lt;p&gt;It was not a good idea IMO that the usercode for the extranet was called GUEST. It only makes confusion with Guest pages bigger.&lt;/p&gt;

&lt;h3&gt;Guest pages&lt;/h3&gt;

&lt;p&gt;Guest page are anonymous web requests that are executed to efficy.dll/guest. No logon and session are required. Efficy uses a user/pwd combination stored in the registry to logon and in this context API calls are executed. It can be the guest user, but it can also be the admin user. But the best and safest approach is a dedicated user with only the rights required for the guest pages. &lt;/p&gt;

&lt;p&gt;When the mailingcode  parameter is present in the /guest request, you can use macro's like &amp;lt;%GetField()%&amp;gt;&lt;/p&gt;

&lt;h3&gt;(Helpdesk) extranet&lt;/h3&gt;

&lt;p&gt;Helpdesk extranet sessions behave more like normal Efficy sessions. You have to logon to make a session, but instead of logon with user, you logon with the credentials of a contact. &lt;br&gt;
So that is why you need contact licenses. You can use any request /edit, /dialog, /consult&lt;/p&gt;

&lt;p&gt;Changes will be seen in the application as being executed by user GUEST, you will not see the contact key anywhere.&lt;/p&gt;
</description>
<category>Guest</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=628/guest-page-or-extranet-what-is-the-difference&amp;show=632#a632</guid>
<pubDate>Wed, 12 Aug 2015 10:11:08 +0000</pubDate>
</item>
</channel>
</rss>