<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Share : Redirection après login in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150586#M105441</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Bonjour,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;A première vue, je dirais qu'il faudrait que vous redirigiez votre utilisateur après connexion sur une page que vous allez créer, cette page aura pour but de vérifier l'appartenance de votre utilisateur à tel ou tel groupe puis de rediriger ce dernier vers l'adresse souhaitée.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Je pense qu'il faut que vous créiez une page (d'un point de vue Share), vous "reliez" cette page à un template (toujours d'un point de vu Share), ce dernier étant associé à un script JS (qui fera appel à vos webscripts situés coté entrepôt pour connaitre l'appartenance à un site de l'utilisateur).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;En gros, quand on arrive dans share, c'est la page index.jsp qui est appelée, cette page n'a que pour but que de rediriger l'utilisateur vers la page &lt;/SPAN&gt;&lt;STRONG&gt;page/site-index&lt;/STRONG&gt;&lt;SPAN&gt; (qui est reliée au fichier &lt;/SPAN&gt;&lt;STRONG&gt;&lt;EM&gt;site-index.jsp&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN&gt;).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;La page &lt;/SPAN&gt;&lt;STRONG&gt;site-index&lt;/STRONG&gt;&lt;SPAN&gt; se charge de "générer" le tableau de bord utilisateur du user.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Je pense donc qu'il faudrait que vous fassiez votre redirection vers votre page perso à cet endroit, à la place de :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;response.sendRedirect(request.getContextPath() + "/page/user/" + URLEncoder.encode(userid) + "/dashboard");&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;en gros vous auriez :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;response.sendRedirect(request.getContextPath() + "/page/mapage");&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Ensuite pour créer une page reliée à un template dans Share, c'est plutôt simple.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1. Créez un fichier XML (une page Share) dans le répertoire : &lt;/SPAN&gt;&lt;EM&gt;/tomcat/webapps/share/WEB-INF/classes/alfresco/site-data/pages/&lt;/EM&gt;&lt;BR /&gt;&lt;SPAN&gt;Appelez la par exemple : &lt;/SPAN&gt;&lt;STRONG&gt;mapage.xml&lt;/STRONG&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;BR /&gt;&amp;lt;page&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;mapage&amp;lt;/title&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;title-id&amp;gt;page.mapage.title&amp;lt;/title-id&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;mapage&amp;lt;/description&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;description-id&amp;gt;page.mapage.description&amp;lt;/description-id&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;template-instance&amp;gt;mapage&amp;lt;/template-instance&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;authentication&amp;gt;user&amp;lt;/authentication&amp;gt;&lt;BR /&gt;&amp;lt;/page&amp;gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2. Créez un fichier XML dans le répertoire : &lt;/SPAN&gt;&lt;EM&gt;/tomcat/webapps/share/WEB-INF/classes/alfresco/site-data/template-instances/&lt;/EM&gt;&lt;BR /&gt;&lt;SPAN&gt;Appelez le par exemple : &lt;/SPAN&gt;&lt;STRONG&gt;mapage.xml&lt;/STRONG&gt;&lt;SPAN&gt; (en concordance avec le champ &lt;/SPAN&gt;&lt;EM&gt;template-instance &lt;/EM&gt;&lt;SPAN&gt; de la page)&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;BR /&gt;&amp;lt;template-instance&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;template-type&amp;gt;org/alfresco/montemplate&amp;lt;/template-type&amp;gt;&lt;BR /&gt;&amp;lt;/template-instance&amp;gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;3. Créez un template dans le répertoire : &lt;/SPAN&gt;&lt;EM&gt;/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/&lt;/EM&gt;&lt;BR /&gt;&lt;SPAN&gt;Appelez le par exemple (en concordance avec le nom mis dans le "template-instance") : &lt;/SPAN&gt;&lt;STRONG&gt;montemplate.ftl&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Créez également un fichier javascript du même nom : &lt;/SPAN&gt;&lt;STRONG&gt;montemplate.js&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Dans ce fichier JavaScript, utilisez l'objet "remote" pour accéder à vos webscripts stockés coté entrepôt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Exemple :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;var connector = remote.connect("alfresco");&lt;BR /&gt;result = connector.get("/test/test/" + user.name);&lt;BR /&gt;&lt;BR /&gt;if (result.status == 200) {&lt;BR /&gt;&amp;nbsp; var data = eval('(' + result + ')');&lt;BR /&gt;&amp;nbsp; model.site = data ;&lt;BR /&gt;}&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Ensuite vous pouvez récupérer le "model" dans le template (fichier ftl) et faire votre redirection qui va bien (en html avec balise meta ou en JS).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;C'est une technique, je ne sais pas si c'est la meilleure.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;PS: pour que votre page soit fonctionnelle, il faudra redémarrer la webapp. (il en sera de même à chaque fois que vous voudrez modifier votre template … il n'y a pas de mécanisme de rafraichissement des templates, seulement des webscripts).&lt;/EM&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 30 Aug 2010 13:05:37 GMT</pubDate>
    <dc:creator>bertrandf</dc:creator>
    <dc:date>2010-08-30T13:05:37Z</dc:date>
    <item>
      <title>Share : Redirection après login</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150585#M105440</link>
      <description>Bonjour,Je souhaiterais savoir comment faire une chose "simple" … a priori…car je galère beaucoup à le faire avec Share.Je voudrais que quand un user se log, selon son groupe d'appartenance, je le redirige vers l'espace "documentlibrary" du site auquel il est rattaché.J'ai déjà mis une plombe à trou</description>
      <pubDate>Mon, 30 Aug 2010 12:45:19 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150585#M105440</guid>
      <dc:creator>zomurn</dc:creator>
      <dc:date>2010-08-30T12:45:19Z</dc:date>
    </item>
    <item>
      <title>Re: Share : Redirection après login</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150586#M105441</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Bonjour,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;A première vue, je dirais qu'il faudrait que vous redirigiez votre utilisateur après connexion sur une page que vous allez créer, cette page aura pour but de vérifier l'appartenance de votre utilisateur à tel ou tel groupe puis de rediriger ce dernier vers l'adresse souhaitée.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Je pense qu'il faut que vous créiez une page (d'un point de vue Share), vous "reliez" cette page à un template (toujours d'un point de vu Share), ce dernier étant associé à un script JS (qui fera appel à vos webscripts situés coté entrepôt pour connaitre l'appartenance à un site de l'utilisateur).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;En gros, quand on arrive dans share, c'est la page index.jsp qui est appelée, cette page n'a que pour but que de rediriger l'utilisateur vers la page &lt;/SPAN&gt;&lt;STRONG&gt;page/site-index&lt;/STRONG&gt;&lt;SPAN&gt; (qui est reliée au fichier &lt;/SPAN&gt;&lt;STRONG&gt;&lt;EM&gt;site-index.jsp&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN&gt;).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;La page &lt;/SPAN&gt;&lt;STRONG&gt;site-index&lt;/STRONG&gt;&lt;SPAN&gt; se charge de "générer" le tableau de bord utilisateur du user.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Je pense donc qu'il faudrait que vous fassiez votre redirection vers votre page perso à cet endroit, à la place de :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;response.sendRedirect(request.getContextPath() + "/page/user/" + URLEncoder.encode(userid) + "/dashboard");&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;en gros vous auriez :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;response.sendRedirect(request.getContextPath() + "/page/mapage");&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Ensuite pour créer une page reliée à un template dans Share, c'est plutôt simple.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1. Créez un fichier XML (une page Share) dans le répertoire : &lt;/SPAN&gt;&lt;EM&gt;/tomcat/webapps/share/WEB-INF/classes/alfresco/site-data/pages/&lt;/EM&gt;&lt;BR /&gt;&lt;SPAN&gt;Appelez la par exemple : &lt;/SPAN&gt;&lt;STRONG&gt;mapage.xml&lt;/STRONG&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;BR /&gt;&amp;lt;page&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;mapage&amp;lt;/title&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;title-id&amp;gt;page.mapage.title&amp;lt;/title-id&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;mapage&amp;lt;/description&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;description-id&amp;gt;page.mapage.description&amp;lt;/description-id&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;template-instance&amp;gt;mapage&amp;lt;/template-instance&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;authentication&amp;gt;user&amp;lt;/authentication&amp;gt;&lt;BR /&gt;&amp;lt;/page&amp;gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2. Créez un fichier XML dans le répertoire : &lt;/SPAN&gt;&lt;EM&gt;/tomcat/webapps/share/WEB-INF/classes/alfresco/site-data/template-instances/&lt;/EM&gt;&lt;BR /&gt;&lt;SPAN&gt;Appelez le par exemple : &lt;/SPAN&gt;&lt;STRONG&gt;mapage.xml&lt;/STRONG&gt;&lt;SPAN&gt; (en concordance avec le champ &lt;/SPAN&gt;&lt;EM&gt;template-instance &lt;/EM&gt;&lt;SPAN&gt; de la page)&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;BR /&gt;&amp;lt;template-instance&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;template-type&amp;gt;org/alfresco/montemplate&amp;lt;/template-type&amp;gt;&lt;BR /&gt;&amp;lt;/template-instance&amp;gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;3. Créez un template dans le répertoire : &lt;/SPAN&gt;&lt;EM&gt;/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/&lt;/EM&gt;&lt;BR /&gt;&lt;SPAN&gt;Appelez le par exemple (en concordance avec le nom mis dans le "template-instance") : &lt;/SPAN&gt;&lt;STRONG&gt;montemplate.ftl&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Créez également un fichier javascript du même nom : &lt;/SPAN&gt;&lt;STRONG&gt;montemplate.js&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Dans ce fichier JavaScript, utilisez l'objet "remote" pour accéder à vos webscripts stockés coté entrepôt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Exemple :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;var connector = remote.connect("alfresco");&lt;BR /&gt;result = connector.get("/test/test/" + user.name);&lt;BR /&gt;&lt;BR /&gt;if (result.status == 200) {&lt;BR /&gt;&amp;nbsp; var data = eval('(' + result + ')');&lt;BR /&gt;&amp;nbsp; model.site = data ;&lt;BR /&gt;}&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Ensuite vous pouvez récupérer le "model" dans le template (fichier ftl) et faire votre redirection qui va bien (en html avec balise meta ou en JS).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;C'est une technique, je ne sais pas si c'est la meilleure.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;PS: pour que votre page soit fonctionnelle, il faudra redémarrer la webapp. (il en sera de même à chaque fois que vous voudrez modifier votre template … il n'y a pas de mécanisme de rafraichissement des templates, seulement des webscripts).&lt;/EM&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Aug 2010 13:05:37 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150586#M105441</guid>
      <dc:creator>bertrandf</dc:creator>
      <dc:date>2010-08-30T13:05:37Z</dc:date>
    </item>
    <item>
      <title>Re: Share : Redirection après login</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150587#M105442</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Bonjour,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Tout d'abord merci beaucoup pour cette réponse détaillée. Je m'y penche dessus depuis hier pour essayer de parvenir à mon but. Et bien sûr j'ai quelques petits soucis qui restent.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Alors j'ai fait les choses comme vous dîtes à ceci près que le webscript est dans l'application share et pas dans le repository…je ne pense pas que ça change grand chose. D'autant plus que mon webscript est correctement reconnu à l'adresse &lt;/SPAN&gt;&lt;A href="http://localhost:8080/share/service/index" rel="nofollow noopener noreferrer"&gt;http://localhost:8080/share/service/index&lt;/A&gt;&lt;SPAN&gt; (il est bien listé). Je l'ai mis dans le dossier alfresco/site-webscripts/org/alfresco/components/customlogin&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;A l'interieur de ce dossier on retrouve donc tous les fichiers "webscript" .desc.xml, .get.js, .get.html.ftl, etc.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Ensuite dans alfresco/templates/xxx j'ai mis mon fichier custom-login.ftl (votre fichier montemplate.ftl) et custom-login.js (votre fichier montemplate.js).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Dans le fichier custom-login.js il y a :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;BR /&gt;&amp;lt;!–&lt;BR /&gt;window.location.replace(${url.context}/page/site/${sitered.shortName}/documentlibrary);&lt;BR /&gt;–&amp;gt;&lt;BR /&gt;&amp;lt;/script&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;p&amp;gt;&lt;BR /&gt;Le site de redirection est&amp;nbsp; ${url.context}/page/site/${sitered.shortName}/documentlibrary&lt;BR /&gt;&amp;lt;/p&amp;gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;La ligne paragraphe sert juste de debuggage … même si tout marcherait bien, elle ne devrait même pas s'afficher à cause de la redirection faite en JS. Mais cette dernière ne marche pas, et même ce .ftl ne marche pas. J'ai l'erreur très claire :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;Caused by: org.springframework.extensions.webscripts.WebScriptException: 07310000 Failed to process template fr/intuitiv/module/fds/custom-login.ftl&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.webscripts.processor.FTLTemplateProcessor.process(FTLTemplateProcessor.java:160)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.webscripts.WebTemplateProcessor.executeBody(WebTemplateProcessor.java:328)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;… 36 more&lt;BR /&gt;Caused by: freemarker.core.InvalidReferenceException: Expression sitered.shortName is undefined on line 6, column 52 in fr/intuitiv/module/fds/custom-login.ftl.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Expression.getStringValue(Expression.java:118)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Expression.getStringValue(Expression.java:93)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.DollarVariable.accept(DollarVariable.java:76)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Environment.visit(Environment.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.MixedContent.accept(MixedContent.java:92)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Environment.visit(Environment.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Environment.process(Environment.java:188)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.template.Template.process(Template.java:237)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.webscripts.processor.FTLTemplateProcessor.process(FTLTemplateProcessor.java:156)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;… 37 more&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Or dans custom-login.js j'ai bien ajouté la variable sitered à mon model :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;var result = remote.call("org/alfresco/components/customlogin/custom-login");&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; //var data = eval('(' + result + ')');&lt;BR /&gt;&amp;nbsp; model.sitered = result ;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Et pour aller plus loin, je vous montre le contenu de mon webscript (que j'appelle ci-dessus) custom-login.js situé dans org/alfresco/component/customlogin (custom-login.get.js):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;function redirectToSite()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; var s = new XML(config.script);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; model = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; model.maxItems = parseInt(s.maxitems, 10);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; var result, preferences = {};&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; // Request the current user's preferences&lt;BR /&gt;&amp;nbsp;&amp;nbsp; var result = remote.call("/api/people/" + stringUtils.urlEncode(user.name) + "/sites?size=100");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; model.sites = [];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if (result.status == 200)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create javascript objects from the server response&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; model.sites = eval('(' + result + ')');&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; model.numSites = model.sites.length;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; model.sitered = sites[0];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //status.redirect = true;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //status.code = 301;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; //status.location = url.context + "/page/user/" + encodeURI(userid) + "/profile";&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;redirectToSite();&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;On lit bien ci-dessus que model.sitered est de type SiteInfo (à la lecture de ce que retourne la methode listSites du webscript sites.get.js dans SiteServiceImpl.java)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Mon expression ${sitered.shortName} est donc correcte mais sitered n'est pas reconnu , qu'y a -t-il qui manque ? où est mon erreur ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Merci d'avance.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Aug 2010 09:21:47 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150587#M105442</guid>
      <dc:creator>zomurn</dc:creator>
      <dc:date>2010-08-31T09:21:47Z</dc:date>
    </item>
    <item>
      <title>Re: Share : Redirection après login</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150588#M105443</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Bonjour,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Quel type de template utilisez-vous pour mettre en forme votre webscript custom-login.get ? Du JSON je suppose.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Serait-il possible de voir le contenu du fichier &lt;/SPAN&gt;&lt;STRONG&gt;custom-login.get.json.ftl&lt;/STRONG&gt;&lt;SPAN&gt; ? Car c'est lui qui va déterminer si le sitered.shortName a un sens dans votre template (&lt;/SPAN&gt;&lt;STRONG&gt;custom-login.ftl&lt;/STRONG&gt;&lt;SPAN&gt;).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Mais je ne comprends pas pourquoi vous voulez utiliser un webscript ?&lt;/STRONG&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;EM&gt;Il y a une raison particulière ?&lt;/EM&gt;&lt;BR /&gt;&lt;SPAN&gt;Vous pourriez faire ce que vous faites dans&lt;/SPAN&gt;&lt;STRONG&gt; custom-login.get.js&lt;/STRONG&gt;&lt;SPAN&gt; directement dans le script JavaScript relié à votre template non (&lt;/SPAN&gt;&lt;STRONG&gt;custom-login.js&lt;/STRONG&gt;&lt;SPAN&gt;) ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Dans votre fichier &lt;/SPAN&gt;&lt;EM&gt;custom-login.js&lt;/EM&gt;&lt;SPAN&gt; : &lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;var result = remote.call("/api/people/" + stringUtils.urlEncode(user.name) + "/sites?size=100");&lt;BR /&gt;model.sites = [];&lt;BR /&gt;&lt;BR /&gt;if (result.status == 200) {&lt;BR /&gt;&amp;nbsp; model.sites = eval('(' + result + ')');&lt;BR /&gt;&amp;nbsp; model.numSites = model.sites.length;&lt;BR /&gt;&amp;nbsp; model.sitered = model.sites[0];&lt;BR /&gt;}&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Dans votre template &lt;/SPAN&gt;&lt;EM&gt;custom-login.ftl&lt;/EM&gt;&lt;SPAN&gt; :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;BR /&gt;&amp;lt;!–&lt;BR /&gt;window.location.replace(${url.context}/page/site/${sitered.shortName}/documentlibrary);&lt;BR /&gt;–&amp;gt;&lt;BR /&gt;&amp;lt;/script&amp;gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;PS: &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- Faites attention à votre code, vous récupérez le premier élément d'un tableau en javascript sans vérifier au préalable la taille du tableau (cas ou un utilisateur n'appartient à aucun site …)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- De même dans votre template, je serai vous je vérifierai l'existence des variables avant de les utiliser, rajouter des tests du type &amp;lt;#if maVariable??&amp;gt; ou &amp;lt;#if maVariable?exists&amp;gt; : car dans le cas ou vous n'arrivez pas à récupérer le site de l'utilisateur, vous pourrez le rediriger ailleurs (sur son dashboard par exemple).&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Aug 2010 09:39:41 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150588#M105443</guid>
      <dc:creator>bertrandf</dc:creator>
      <dc:date>2010-08-31T09:39:41Z</dc:date>
    </item>
    <item>
      <title>Re: Share : Redirection après login</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150589#M105444</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Bonjour,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Bien je continue sur vos conseils mais maintenant j'ai une autre erreur : stringUtils n'existe pas. Je crains que cette méthode n'est accessible que dans un webscript. Or le template custom-login.ftl avec son javascript custom-login.js ne sont pas des webscripts.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;En fait, je cherchais à faire un webscript pour isolé la logique applicative (celle qui à partir de l'utilisateur connecté, renvoi un site ou 0 qui sera celui auquel il devra être redirigé).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Le template custom-login.ftl se contente que d'une redirection.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Le fichier custom-login.js se contenterai d'appeler le webscript et d'ajouter au model le site retourne (Objet SiteInfo).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; Sinon&amp;nbsp; à part , il n'y a pas necessité absolue que je fasse un webscript, ce n'est que pour isolé mon traitement d'une part puis permettre la ré-utilisabilité…&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Donc pour l'instant, soit j'arrive à appeler mon webscript (appel, qui, je pense pose problème) via custom-login.js :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;j'ai essaié : &lt;/SPAN&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;remote.call("org/alfresco/components/customlogin/custom-login");&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;mais j'ai pas l'impression que ça marche, et puis pourquoi faire un "remote call" alors que le webscript est local à l'application (dans le share.war et pas alfresco.war)…&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Suis-je obligé de placer le webscript dans le repository (alfresco.war) ? Comment sont invoqués les webscripts côté share ? (par ex. le tag freemarker &amp;lt;region id=""&amp;gt;… appel bien un webscript côté share.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Soit je mets tout dans custom-login.js mais dans ce cas j'ai un problème d'API (stringUtils non trouvé).&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Aug 2010 12:52:36 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150589#M105444</guid>
      <dc:creator>zomurn</dc:creator>
      <dc:date>2010-08-31T12:52:36Z</dc:date>
    </item>
    <item>
      <title>Re: Share : Redirection après login</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150590#M105445</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Bonjour,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Je vous conseillerai de stocker votre webscript coté entrepôt, ca va dans la logique de Share.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Quasiment tout ce qui est traitement se fait coté repository et les webscripts Share se contentent de mettre en forme des résultats.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Il est sûr que vous ne pourrez pas appeler un webscript qui est stocké dans Share avec l'Objet "remote".&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Pour créer votre webscript coté entrepôt, je vous conseille d'utiliser les JavaScript Services API qui vont bien&amp;nbsp; : &lt;/SPAN&gt;&lt;A href="http://wiki.alfresco.com/wiki/3.3_JavaScript_Services_API" rel="nofollow noopener noreferrer"&gt;http://wiki.alfresco.com/wiki/3.3_JavaScript_Services_API&lt;/A&gt;&lt;SPAN&gt;, notamment le siteService.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Inspirez-vous également du webscript que vous appeliez (person.sites.get) : &lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;function main()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the user name of the person to get&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var userName = url.templateArgs.userid;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the person who has that user name&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var person = people.getPerson(userName);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (person === null)&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Return 404 - Not Found&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; status.setCode(status.STATUS_NOT_FOUND, "Person " + userName + " does not exist");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the list of sites&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var sites = siteService.listUserSites(userName);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var sizeString = args["size"];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sizeString != null)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var size = parseInt(sizeString);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (size &amp;lt; sites.length)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Only return the first n sites based on the passed page size&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pagedSites = new Array(size);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var index = 0; index &amp;lt; size; index++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pagedSites[index] = sites[index];&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sites = pagedSites;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; model.sites = sites;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;main();&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Aug 2010 13:07:25 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150590#M105445</guid>
      <dc:creator>bertrandf</dc:creator>
      <dc:date>2010-08-31T13:07:25Z</dc:date>
    </item>
    <item>
      <title>Re: Share : Redirection après login</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150591#M105446</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Bon du nouveau, je pense que j'arrive à bout de ce "cas d'école". Alors j'ai mis mon webscript dans le alfresco.war (dans classes/alfresco/extension/template/…../tous les fichiers du webscript.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Côté serveur, ça marche, avec le webscript debugger, j'arrive bien à lire mes variables. Voici le contenu du webscript custom-login.get.js :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;function redirectToSite() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var result = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var sites = [];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var site = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var userName = args["username"];&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Get the person who has that user name&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var person = people.getPerson(userName);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;result = siteService.listUserSites(userName);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.sitered = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (result.length &amp;gt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.sitered = result[0];&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;redirectToSite();&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Et le javascript client côté alfresco share (custom-login.js) :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;var connector = remote.connect("alfresco");&lt;BR /&gt;var result = connector.get("/fr/intuitiv/module/fds/customlogin/custom-login?username=" + user.name);&lt;BR /&gt;&amp;nbsp; var data = eval('(' + result + ')');&lt;BR /&gt;&amp;nbsp; model.sitered = data ;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Alors dans custom-login.get.js côté serveur donc, au debuggeur, la variable result[0] est bien renseigné car lorsque je fais un "watch" de result[0].shortName , ça affiche bien le nom de mon (unique) site. Donc pas de problème sur mon webscript. Pour le custom-login.get.json.ftl il y a :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;lt;#import "/org/alfresco/repository/site/site.lib.ftl" as siteLib/&amp;gt;&lt;BR /&gt;&lt;BR /&gt;[&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;@siteLib.siteJSON site=sitered/&amp;gt;&lt;BR /&gt;]&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Je me suis inspire de person.sites.get.json.ftl bien sûr. La convention webscript (mini 3 fichiers : .desc.xml (descripteur REST), .get.js (controleur) si du get et le .ftl (vue)) permet donc de formatter la réponse en JSON (javascript objet) côté serveur. Le javascript côté client reçoit bien ce flux javascript et fait un eval dessus. Puis custom-login.js est sensé mettre le site (data) dans le model avec la variable sitered….tout comme dashboard.js qui se contente de surcharger le model. (fichier que je cherche à substituer par le mien).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Cependant dans le ftl, custom-login.ftl, j'ai une erreur… il contient :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;BR /&gt;&amp;lt;!–&lt;BR /&gt;window.location.replace(${url.context}/page/site/${sitered.shortName}/documentlibrary);&lt;BR /&gt;–&amp;gt;&lt;BR /&gt;&amp;lt;/script&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;p&amp;gt;&lt;BR /&gt;Le site de redirection est&amp;nbsp; ${url.context}/page/site/${sitered.shortName}/documentlibrary&lt;BR /&gt;&amp;lt;/p&amp;gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Et ça plante sur l'évaluation de ${sitered.shortName}, pourquoi ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;L'erreur est :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;18:43:18,113&amp;nbsp; ERROR [freemarker.runtime] &lt;BR /&gt;&lt;BR /&gt;Expected hash. sitered evaluated instead to freemarker.template.SimpleSequence on line 6, column 52 in org/alfresco/custom-login.ftl.&lt;BR /&gt;The problematic instruction:&lt;BR /&gt;———-&lt;BR /&gt;==&amp;gt; ${sitered.shortName} [on line 6, column 50 in org/alfresco/custom-login.ftl]&lt;BR /&gt;———-&lt;BR /&gt;&lt;BR /&gt;Java backtrace for programmers:&lt;BR /&gt;———-&lt;BR /&gt;freemarker.template.TemplateException: Expected hash. sitered evaluated instead to freemarker.template.SimpleSequence on line 6, column 52 in org/alfresco/custom-login.ftl.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:135)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Dot._getAsTemplateModel(Dot.java:78)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Expression.getStringValue(Expression.java:93)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.DollarVariable.accept(DollarVariable.java:76)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Environment.visit(Environment.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.MixedContent.accept(MixedContent.java:92)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Environment.visit(Environment.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Environment.process(Environment.java:188)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.template.Template.process(Template.java:237)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.webscripts.processor.FTLTemplateProcessor.process(FTLTemplateProcessor.java:156)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.webscripts.WebTemplateProcessor.executeBody(WebTemplateProcessor.java:328)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.AbstractProcessor.execute(AbstractProcessor.java:79)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.RenderService.processTemplate(RenderService.java:582)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.bean.TemplateInstanceRenderer.calculateComponentDependencies(TemplateInstanceRenderer.java:68)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.bean.TemplateInstanceRenderer.body(TemplateInstanceRenderer.java:116)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:131)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.bean.PageRenderer.body(PageRenderer.java:70)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:131)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.RenderService.startPageRenderer(RenderService.java:664)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.RenderService.renderPage(RenderService.java:641)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.PresentationUtil.renderPage(PresentationUtil.java:95)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.mvc.PageView.dispatchPage(PageView.java:349)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.mvc.PageView.renderView(PageView.java:290)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.mvc.AbstractWebFrameworkView.renderMergedOutputModel(AbstractWebFrameworkView.java:136)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.alfresco.web.site.servlet.MTAuthenticationFilter.doFilter(MTAuthenticationFilter.java:67)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.lang.Thread.run(Thread.java:619)&lt;BR /&gt;18:43:18,114&amp;nbsp; ERROR [surf.render.RenderService] Unable to process template: custom-login&lt;BR /&gt;18:43:18,114&amp;nbsp; ERROR [extensions.surf.FrameworkUtil] An exception occurred while rendering a page: user/newuser/dashboard&lt;BR /&gt;18:43:18,115&amp;nbsp; ERROR [extensions.surf.FrameworkUtil] org.springframework.extensions.surf.exception.RendererExecutionException: WebTemplateProcessor failed to process template uri: org/alfresco/custom-login&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.webscripts.WebTemplateProcessor.executeBody(WebTemplateProcessor.java:360)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.AbstractProcessor.execute(AbstractProcessor.java:79)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.RenderService.processTemplate(RenderService.java:582)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.bean.TemplateInstanceRenderer.calculateComponentDependencies(TemplateInstanceRenderer.java:68)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.bean.TemplateInstanceRenderer.body(TemplateInstanceRenderer.java:116)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:131)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.bean.PageRenderer.body(PageRenderer.java:70)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:131)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.RenderService.startPageRenderer(RenderService.java:664)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.RenderService.renderPage(RenderService.java:641)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.render.PresentationUtil.renderPage(PresentationUtil.java:95)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.mvc.PageView.dispatchPage(PageView.java:349)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.mvc.PageView.renderView(PageView.java:290)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.surf.mvc.AbstractWebFrameworkView.renderMergedOutputModel(AbstractWebFrameworkView.java:136)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.alfresco.web.site.servlet.MTAuthenticationFilter.doFilter(MTAuthenticationFilter.java:67)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.lang.Thread.run(Thread.java:619)&lt;BR /&gt;Caused by: org.springframework.extensions.webscripts.WebScriptException: 07310001 Failed to process template org/alfresco/custom-login.ftl&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.webscripts.processor.FTLTemplateProcessor.process(FTLTemplateProcessor.java:160)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.webscripts.WebTemplateProcessor.executeBody(WebTemplateProcessor.java:328)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;… 36 more&lt;BR /&gt;Caused by: freemarker.template.TemplateException: Expected hash. sitered evaluated instead to freemarker.template.SimpleSequence on line 6, column 52 in org/alfresco/custom-login.ftl.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:135)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Dot._getAsTemplateModel(Dot.java:78)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Expression.getStringValue(Expression.java:93)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.DollarVariable.accept(DollarVariable.java:76)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Environment.visit(Environment.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.MixedContent.accept(MixedContent.java:92)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Environment.visit(Environment.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.core.Environment.process(Environment.java:188)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at freemarker.template.Template.process(Template.java:237)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.extensions.webscripts.processor.FTLTemplateProcessor.process(FTLTemplateProcessor.java:156)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;… 37 more&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Tout ceci est du chinois….je pense qu'en clair qu'il veut dire "Je ne comprend pas ton charabia ${sitered.shortName}…???&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Merci pour votre aide.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Aug 2010 16:55:44 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150591#M105446</guid>
      <dc:creator>zomurn</dc:creator>
      <dc:date>2010-08-31T16:55:44Z</dc:date>
    </item>
    <item>
      <title>Re: Share : Redirection après login</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150592#M105447</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Bonjour,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;En fait, l'eval que vous faites dans votre fichier JavaScript coté Share se fait sur le JSON renvoyé par votre webscript situé coté entrepôt, on est d'accord ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;En regardant de plus prés la mise en forme du fichier Freemarker de votre webscript, on se rend compte que le JSON renvoyé sera en fait un tableau de un seul objet.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Au lieu de seulement retourner les informations sur le site, vous retournez un tableau de un élément.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;En gros, vous avez deux solutions :&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 1. soit vous enlevez les crochets dans le template de votre webscript, ils sont inutiles car vous allez renvoyer des informations sur un seul site.&lt;/SPAN&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;lt;#import "/org/alfresco/repository/site/site.lib.ftl" as siteLib/&amp;gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;@siteLib.siteJSON site=sitered/&amp;gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt; 2. soit vous laissez les crochets (si éventuellement vous voulez retourner plusieurs sites) mais il faut alors modifier votre fichier JavaScript relié à votre template coté Share pour qu'il récupère le premier élément du tableau :&lt;/SPAN&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;var data = eval('(' + result + ')');&lt;BR /&gt;model.sitered = data[0];&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;A noter également qu'il me semble que vous avez oublié des guillemets dans votre template coté Share pour la chaine de redirection : &lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;window.location.replace("${url.context}/page/site/${sitered.shortName}/documentlibrary");&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Cordialement.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Sep 2010 06:38:34 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150592#M105447</guid>
      <dc:creator>bertrandf</dc:creator>
      <dc:date>2010-09-01T06:38:34Z</dc:date>
    </item>
    <item>
      <title>Re: Share : Redirection après login</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150593#M105448</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Bingo !&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Bien vu le coup du tableau, le pire c'est que je le savais mais ce message d'erreur ne m'y a pas du tout fait penser…&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Bon maintenant ça marche nickel avec la redirection !&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Votre soutien vaut très facilement 1 point supplémentaire !&amp;nbsp; &lt;img id="smileyvery-happy" class="emoticon emoticon-smileyvery-happy" src="https://connect.hyland.com/i/smilies/16x16_smiley-very-happy.png" alt="Smiley Very Happy" title="Smiley Very Happy" /&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Merci beaucoup !&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Sep 2010 07:45:51 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/share-redirection-apr%C3%A8s-login/m-p/150593#M105448</guid>
      <dc:creator>zomurn</dc:creator>
      <dc:date>2010-09-01T07:45:51Z</dc:date>
    </item>
  </channel>
</rss>

