Author: bleny Date: 2012-03-01 17:50:20 +0100 (Thu, 01 Mar 2012) New Revision: 1542 Url: http://forge.codelutin.com/repositories/revision/wao/1542 Log: Evolution #607: Ajouter une ?\195?\169tape d'acceptation des conditions d'utilisation ?\195?\160 la premi?\195?\168re connexion Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties trunk/wao-ui/src/main/webapp/Connexion.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2012-03-01 11:23:29 UTC (rev 1541) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2012-03-01 16:50:20 UTC (rev 1542) @@ -1102,4 +1102,9 @@ + "); " ); } + + @Override + protected void addWaoUserCguAccepted_3_3(List<String> queries) { + queries.add("ALTER TABLE WaoUser ADD cguAccepted TIMESTAMP WITHOUT TIME ZONE;"); + } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2012-03-01 11:23:29 UTC (rev 1541) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2012-03-01 16:50:20 UTC (rev 1542) @@ -617,10 +617,14 @@ addWaoUsersCanReadBoats_3_3(queries); + addWaoUserCguAccepted_3_3(queries); + String[] strings = queries.toArray(new String[queries.size()]); executeSQL(tx, showSql, showProgression, strings); } + protected abstract void addWaoUserCguAccepted_3_3(List<String> queries); + protected abstract void addWaoUsersCanReadBoats_3_3(List<String> queries); protected abstract void addWaoUsersAllegroWallets_3_3(List<String> queries); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2012-03-01 11:23:29 UTC (rev 1541) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2012-03-01 16:50:20 UTC (rev 1542) @@ -62,6 +62,7 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.UUID; @@ -625,4 +626,26 @@ } transaction.commitTransaction(); } + + @Override + protected void executeAcceptCgu(TopiaContext transaction, ConnectedUser connectedUser) throws Exception { + + Date currentDate = context.getCurrentDate(); + + WaoUser user = connectedUser.getUser(); + user.setCguAccepted(currentDate); + + if ( ! connectedUser.isProfessional()) { + + if (log.isInfoEnabled()) { + log.info("user " + user + " accepted CGU, saving"); + } + + WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction); + dao.update(user); + // transaction.commitTransaction(); + + } + + } } Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2012-03-01 11:23:29 UTC (rev 1541) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2012-03-01 16:50:20 UTC (rev 1542) @@ -41,6 +41,7 @@ import org.apache.tapestry5.annotations.Persist; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.corelib.components.Form; +import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.services.PageRenderLinkSource; @@ -60,7 +61,7 @@ */ @Import(library = "context:js/wao.js") public class Connexion { - + @Inject private Logger logger; @@ -76,6 +77,9 @@ @InjectComponent private FeedBack connexionFeedback; + @Inject + private Messages messages; + private Object[] activationContext; /** @@ -95,9 +99,20 @@ @Property private boolean showRoleWindow; + @Persist(PersistenceConstants.FLASH) + @Property + private boolean askForAcceptCgu; + + @Persist(PersistenceConstants.FLASH) + @Property + private boolean acceptCgu; + @InjectComponent private Form connexionForm; + @InjectComponent + private Form roleForm; + @Inject private PropertyAccess propertyAccess; @@ -176,9 +191,19 @@ logger.debug("Not only one role, window will be open to select the role"); } showRoleWindow = true; + } + if (serviceAuthentication.getConnectedUser().getUser().getCguAccepted() == null) { + if (logger.isDebugEnabled()) { + logger.debug("Not only one role, window will be open to select the role"); + } + showRoleWindow = true; + askForAcceptCgu = true; + } + if (showRoleWindow) { return this; + } else { + return getRedirectLink(); } - return getRedirectLink(); } /** @@ -273,6 +298,24 @@ return profileSelectModel; } + @Log + void onValidateFormFromRoleForm() { + userProfile = getProfileSelectModel().findObject(userProfileId); + if (logger.isDebugEnabled()) { + logger.debug("Connection with role : " + userProfile.getDescription()); + } + serviceAuthentication.getConnectedUser().setProfile(userProfile); + if (acceptCgu) { + serviceUser.acceptCgu(serviceAuthentication.getConnectedUser()); + } + if (serviceAuthentication.getConnectedUser().getUser().getCguAccepted() == null) { + String message = messages.get("wao.ui.userMustAcceptCgu"); + connexionFeedback.addError(message); + roleForm.recordError(message); + } + } + + /** * ON_SUCCESS :: Callback method for success event on roleForm. Will be * triggered when roleForm is submit on roleSelect change. The userRole @@ -282,11 +325,6 @@ * @see #getRedirectLink() */ Link onSuccessFromRoleForm() { - userProfile = getProfileSelectModel().findObject(userProfileId); - if (logger.isDebugEnabled()) { - logger.debug("Connection with role : " + userProfile.getDescription()); - } - serviceAuthentication.getConnectedUser().setProfile(userProfile); return getRedirectLink(); } } Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties =================================================================== --- trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2012-03-01 11:23:29 UTC (rev 1541) +++ trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2012-03-01 16:50:20 UTC (rev 1542) @@ -11,6 +11,8 @@ SynthesisId.IND_CONTACT_STATE= SynthesisId.IND_DATA_RELIABILITY= SynthesisId.OBSERVATION_HOUR= +cgu= +wao.ui.acceptCgu=I've read and accept the terms of use wao.ui.action.acceptContact=Validate contact wao.ui.action.add=Add wao.ui.action.addNewContactFromBoat=Create a new contact for this boat and the selected sample row (in filters) @@ -69,6 +71,7 @@ wao.ui.chart.numberBoats=No. boats wao.ui.chart.numberObservations=No. observations wao.ui.chart.numberOfBoatsWithBoardings=Number of boats with x observations +wao.ui.chooseUserProfile=Choose your user profile wao.ui.contact.lastContact=Last observation with this boat for your company wao.ui.contacts.createFromBoat=Create a new contact for this boat and this sample row wao.ui.contacts.createFromBoat.fail=Contact creation failed Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties =================================================================== --- trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2012-03-01 11:23:29 UTC (rev 1541) +++ trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2012-03-01 16:50:20 UTC (rev 1542) @@ -9,6 +9,8 @@ SynthesisId.IND_CONTACT_STATE= SynthesisId.IND_DATA_RELIABILITY= SynthesisId.OBSERVATION_HOUR= +cgu= +wao.ui.acceptCgu=J'ai lu et j'accepte les conditions d'utilisation wao.ui.action.acceptContact=Valider le contact wao.ui.action.add=Ajouter wao.ui.action.addNewContactFromBoat=Créer un nouveau contact pour ce navire et la ligne sélectionnée dans les filtres @@ -67,6 +69,7 @@ wao.ui.chart.numberBoats=Nb navires wao.ui.chart.numberObservations=Nb observations wao.ui.chart.numberOfBoatsWithBoardings=Nombre de navires avec x embarquements +wao.ui.chooseUserProfile=Choisissez votre rôle wao.ui.contact.lastContact=Dernière observation concernant ce navire pour votre société (tous programmes confondus) wao.ui.contacts.createFromBoat=Créer un nouveau contact pour ce navire et cette ligne du plan wao.ui.contacts.createFromBoat.fail=Création d'un nouveau contact impossible Modified: trunk/wao-ui/src/main/webapp/Connexion.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Connexion.tml 2012-03-01 11:23:29 UTC (rev 1541) +++ trunk/wao-ui/src/main/webapp/Connexion.tml 2012-03-01 16:50:20 UTC (rev 1542) @@ -68,13 +68,64 @@ </div> <div t:type="minimalWindow" t:id="roleWindow" t:show="${showRoleWindow}" t:modal="true" - t:center="false" t:top="70" t:width="300" t:height="60" + t:center="false" t:top="70" t:width="500" t:height="400" t:title="${message:wao.ui.message.chooseProfile}"> <form t:id="roleForm" t:type="form" action="tapestry"> - <p class="roleSelect"> - <select t:type="select" t:id="userProfile" t:value="userProfileId" t:model="profileSelectModel" - onChange="this.form.submit()" /> - </p> + <t:if test="askForAcceptCgu"> + <p/> + ${message:wao.ui.message.chooseProfile} + <select t:type="select" t:id="userProfile2" t:value="userProfileId" t:model="profileSelectModel" t:validate="required" /> + <p/> + <div style="margin-top: 30px; width:80%; margin-left: 80px; height: 300px; overflow: auto;"> + <h2>CONDITIONS D’UTILISATION DU PORTAIL WAO (web applicatif obsmer)</h2> + <p>La base de données WAO est accessible via l’adresse internet suivante : http://www.ifremer.fr/wao/ (le « Portail »).</p> + <p>Les données et informations qui composent le Portail, quelle que soit leur forme, et notamment mais non exclusivement, les données nominatives et techniques, (ci-après communément et indistinctement désignées sous le terme « Données»), sont soumises aux présentes conditions d’utilisation.</p> + <p>Le titulaire (le « Titulaire ») du log in et du mot de passe accepte expressément et sans réserve les présentes conditions d’utilisation par le simple fait d’utiliser le log in et le mot de passe et d’accéder aux Données.</p> + <p>Le log in et le mot de passe sont strictement personnels et confidentiels. Ils ne peuvent être communiqués à un tiers sans l’accord préalable, exprès et écrit de la direction des pêches maritimes et de l’aquaculture (DPMA) et de l’Institut français de recherche pour l’exploitation de la mer (IFREMER). Sauf accord préalable et exprès de la DPMA et de l’IFREMER, seul le Titulaire est fondé à accéder aux Données, à l’exclusion de toute autre personne..</p> + <h3>ARTICLE 1 – PROPRIETE DES DONNEES</h3> + <p>Les Données sont la propriété exclusive de la DPMA et de l’IFREMER.</p> + <p>La divulgation des Données au Titulaire ne saurait, en aucun cas, être interprétée comme lui conférant, de manière expresse ou implicite un droit quelconque sur ces Donnéesappartenant conjointement à la DPMA et/ou à l’IFREMER.</p> + <h3>ARTICLE 2 – CONDITION D’UTILISATION DES DONNEES</h3> + <p>Les Données ne pourront être consultées et utilisées que dans le cadre du programme Obsmer (le « Programme Obsmer ») et dans les strictes limites suivantes :</p> + <p>Appui des observateurs des bureaux d’études mandatés par le MAAPRAT auprès des professionnels susceptibles d’embarquer un observateur scientifique</p> + <p>Appui auprès des professionnels pour la mise en conformité vis-à-vis des obligations administratives nécessaires pour l’embarquement d’un observateur scientifique (note de service DPMA/DAM 2307 du 20 octobre 2008)</p> + <p>Les Données consultables par le Titulaire sont strictement dédiées au Programme Obsmer de sorte qu’en dehors de la DPMA, de l’IFREMER, des bureaux d’étude en charge de la réalisation du Programme Obsmer et du Titulaire, aucune autre personne n’a accès aux Données.</p> + <p>Par conséquent, en cas de constat d’une utilisation des Données dans un domaine autre que le Programme Obsmer, la DPMA et l’IFREMER se réservent le droit de suspendre, sans formalité préalable, le log in et le mot de passe du Titulaire.</p> + <p>Cette suspension est non exclusive d’éventuelles actions destinées à réparer le préjudice subi par la DPMA et l’IFREMER.</p> + <p>Les Parties conviennent d’ores et déjà qu’en cas de contestation ou de litige, les données de connexion feront foi.</p> + <h3>ARTICLE 3 - INTERDICTION D’EXTRACTION OU DE DUPPLICATION DES DONNEES EN DEHORS DU PROGRAMME OBSMER</h3> + <p>Sauf dans le cadre du Programme Obsmer et dans les conditions de l’article 2 des présentes conditions d’utilisation des Données, le Titulaire ne pourra en aucun cas procéder à une extraction ou duplication des Données sans autorisation écrite et préalable de la DPMA et de l’IFREMER.</p> + <p>Le Titulaire s’interdit également de communiquer, revendre tout ou partie des Données auxquelles il a accès via le Portail.</p> + <p>A ce titre, le Titulaire ne procédera pas, notamment, à des copier / coller et / ou toute autre action ayant pour effet de permettre l’extraction ou la duplication de tout ou partie des Données.</p> + <h3>ARTICLE 4 – PERTE DU LOG IN ET DU MOT DE PASSE</h3> + <p>En cas de perte du log in et / ou du mot de passe, le Titulaire s’engage à prévenir la DPMA et l’IFREMER dans les plus brefs délais afin que ceux-ci soient désactivés. Il sera attribué au Titulaire un nouveau log in et un nouveau mot de passe.</p> + <h3>ARTICLE 5 - INFORMATIQUES ET LIBERTES</h3> + <p>Certaines des Données sont des données à caractère personnel ayant fait l’objet d’une déclaration auprès de la Commission National Informatique et Libertés.</p> + <p>Le Titulaire consulte et utilise les Données dans le respect de la loi n°78-17 du 6 janvier 1978 modifiée dite loi Informatique et Libertés.</p> + <h3>ARTICLE 6 - CONFIDENTIALITE</h3> + <p>Le Titulaire gardera confidentiel les Données qu’il consultera.</p> + <p>Le Titulaire traitera les Données avec le même degré de précaution et de protection que celui qu’il accorde à ses propres informations confidentielles de même importance.</p> + <p>Le Titulaire conservera de manière confidentielle, pour une durée de trente (30) ans à compter de la dernière consultation du Portail, les Données disponibles depuis la base de données WAO et s'abstiendra de les divulguer sauf à des employés ou à des préposés responsables qui, astreints au secret professionnel, en auront besoin pour l’accomplissement de leur mission au titre du Programme Obsmer.</p> + <p>Le Titulaire informera par écrit la DPMA et l’IFREMER de toute perte de document ou d’objet contenant des Données.</p> + <p>La DPMA et l’IFREMER pourront exiger, à tout moment et sous quelque forme que ce soit, que tous les documents portant des Données soient impérativement restitués ou détruits par le Titulaire.</p> + <h3>ARTICLE 7 - LIMITATION DE RESPONSABILITE</h3> + <p>La DPMA et l’IFREMER ne garantissent en rien que les Données seront exempts d’erreurs. Par conséquent, la DPMA et l’IFREMER déclinent toute responsabilité quant à l’utilisation qui en est faite et qui s’effectue sous la seule, pleine et entière responsabilité du Titulaire.</p> + <p>Par conséquent, le Titulaire ne pourra en aucun cas mettre en cause la responsabilité de la DPMA et de l’IFREMER en raison d’un préjudice subi par le Titulaire du fait de l’utilisation des Données, quel qu’il soit et quel qu’en soit la cause, que le préjudice ait été prévisible ou non.</p> + <p>En outre, la DPMA et l’IFREMER déclinent toute responsabilité sur l’utilisation du site internet et ne garantissent en rien que le site soit exempt de virus, bugs…</p> + </div> + <p/> + <input t:type="checkbox" t:id="acceptCgu" t:value="acceptCgu" /> + ${message:wao.ui.acceptCgu} + <p class="roleSelect"> + <t:submit value="Continuer" /> + </p> + <p:else> + <p class="roleSelect"> + ${message:wao.ui.message.chooseProfile} + <select t:type="select" t:id="userProfile" t:value="userProfileId" t:model="profileSelectModel" onChange="this.form.submit()" /> + </p> + </p:else> + </t:if> </form> </div>