${item.fullName}
+@${item.username}
+ ${item.email} + +diff --git a/RJLResaka/README_IMPORT.txt b/RJLResaka/README_IMPORT.txt new file mode 100644 index 0000000..2d731e2 --- /dev/null +++ b/RJLResaka/README_IMPORT.txt @@ -0,0 +1,41 @@ +RJLResaka - Dynamic Web Project (Tomcat 9) + +Objectif: +- Application web de discussion privée style Facebook Messenger +- Java JEE (Servlet/JSP) + MySQL Workbench +- Projet Dynamic Web Project sans Maven + +Structure actuellement livrée: +- src/com/rjlresaka/model -> modèles Java +- src/com/rjlresaka/dao -> accès MySQL (users + reset password) +- src/com/rjlresaka/servlet -> Home, Register, Login, ForgotPassword, ResetPassword, Dashboard, Logout +- src/com/rjlresaka/filter -> filtre UTF-8 + protection des pages privées +- src/com/rjlresaka/util -> connexion MySQL, BCrypt, génération de token +- WebContent/WEB-INF/views -> JSP protégées +- WebContent/assets -> design moderne clair responsive +- database/rjlresaka.sql -> schéma MySQL complet prêt pour Workbench + +JARs à placer dans WebContent/WEB-INF/lib: +- jbcrypt-0.4.jar +- mysql-connector-java-8.0.18.jar +- javax.mail-api-1.6.2.jar +- jstl-1.2.jar + +Fonctionnalités déjà codées dans cette étape: +1. Page d'accueil moderne +2. Inscription +3. Connexion +4. Mot de passe oublié (génération de token) +5. Réinitialisation du mot de passe +6. Tableau de bord avec liste des autres utilisateurs + +Configuration MySQL à adapter dans WebContent/WEB-INF/web.xml: +- db.url +- db.user +- db.password + +Étapes suivantes recommandées: +1. Vraies conversations privées 1-1 +2. Envoi / modification / suppression de messages +3. Upload image/fichier + téléchargement +4. Emojis, réactions, badge non lus diff --git a/RJLResaka/WebContent/WEB-INF/views/auth/forgot-password.jsp b/RJLResaka/WebContent/WEB-INF/views/auth/forgot-password.jsp new file mode 100644 index 0000000..043e8c9 --- /dev/null +++ b/RJLResaka/WebContent/WEB-INF/views/auth/forgot-password.jsp @@ -0,0 +1,52 @@ +<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> + + +
+ + +Entrez votre email. Pour l'instant, le lien est affiché à l'écran; ensuite vous pourrez brancher JavaMail.
+ + <% if (request.getAttribute("error") != null) { %> +Détail technique: <%= request.getAttribute("debugMessage") %>
+ <% } %> +Utilisez votre email ou votre nom d'utilisateur pour continuer.
+ + <% if (request.getAttribute("error") != null) { %> +Détail technique: <%= request.getAttribute("debugMessage") %>
+ <% } %> +Une seule inscription suffit pour commencer vos discussions privées.
+ + <% if (request.getAttribute("error") != null) { %> +Détail technique: <%= request.getAttribute("debugMessage") %>
+ <% } %> +Collez le token reçu ou ouvrez directement le lien généré.
+ + <% if (request.getAttribute("error") != null) { %> +Détail technique: <%= request.getAttribute("debugMessage") %>
+ <% } %> +@${item.username}
+ ${item.email} + +Créez un deuxième compte pour tester le chat privé ensuite.
+Détail technique: ${debugMessage}
++ Inscription, connexion, mot de passe oublié, liste d'utilisateurs, discussion privée, + design clair et responsive. La prochaine étape ajoute les vraies conversations, + les pièces jointes et les réactions. +
+Messages privés, suivi de lecture et interface responsive.
++ RJL Resaka transforme votre sujet d'examen en première expérience utilisable : créez un profil, + lancez une discussion privée, suivez les messages non lus et réagissez avec des emojis. +
+ +AppWizzy AI is collecting your requirements and applying the first changes.
-This page will refresh automatically as the plan is implemented.
-
- Runtime: Django {{ django_version }} · Python {{ python_version }}
- — UTC {{ current_time|date:"Y-m-d H:i:s" }}
-
Une vraie boucle de valeur : entrée, confirmation, liste des discussions et détail conversationnel.
+Le MVP permet de simuler des profils pour tester une messagerie privée sans flux d'inscription complet.
+{% if active_profile %}Vous envoyez le premier message en tant que {{ active_profile.display_name }}.{% else %}Créez d'abord un profil pour activer le chat.{% endif %}
+Liste responsive avec aperçu du dernier message et badge de notifications non lues.
+@{{ conversation.counterpart.handle }}{% if conversation.counterpart.status_text %} · {{ conversation.counterpart.status_text }}{% endif %}
+ {% if conversation.last_message %} + {{ conversation.last_message.author.display_name }} + {{ conversation.last_message.body|truncatechars:90 }} + {% else %} + Aucun message pour le moment. + {% endif %} +Créez un profil puis envoyez un premier message privé pour voir la liste s'animer ici.
+