diff --git a/RJLResaka/README_IMPORT.txt b/RJLResaka/README_IMPORT.txt index 2d731e2..3aa12bc 100644 --- a/RJLResaka/README_IMPORT.txt +++ b/RJLResaka/README_IMPORT.txt @@ -1,41 +1,31 @@ -RJLResaka - Dynamic Web Project (Tomcat 9) +RJLResaka - version finale Java JEE +=================================== -Objectif: -- Application web de discussion privée style Facebook Messenger -- Java JEE (Servlet/JSP) + MySQL Workbench -- Projet Dynamic Web Project sans Maven +1) Ouvrir MySQL Workbench puis exécuter le script: database/rjlresaka.sql +2) Dans Eclipse EE, importer le dossier RJLResaka comme Dynamic Web Project +3) Ajouter dans WEB-INF/lib les JAR suivants: + - mysql-connector-j-8.x.x.jar + - jstl-1.2.jar + - standard-1.1.2.jar (si votre distribution JSTL l'exige) + - jbcrypt-0.4.jar +4) Vérifier WebContent/WEB-INF/web.xml: + - db.url + - db.user + - db.password +5) Déployer sur Tomcat 9 +6) Ouvrir /RJLResaka/home -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 +Fonctionnalités livrées: +- Inscription / connexion +- Mot de passe oublié / réinitialisation par token +- Liste des utilisateurs +- Chat privé +- Modifier / supprimer un message +- Upload image / fichier +- Téléchargement des pièces jointes +- Réactions emoji simples +- Interface claire type Facebook / Messenger -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 +Remarque logo: +- Le fichier assets/img/logo_resaka.png est un logo provisoire généré dans le projet. +- Si vous avez votre vrai logo, remplacez simplement ce fichier par votre version. diff --git a/RJLResaka/WebContent/WEB-INF/views/auth/forgot-password.jsp b/RJLResaka/WebContent/WEB-INF/views/auth/forgot-password.jsp index 043e8c9..efe3c6e 100644 --- a/RJLResaka/WebContent/WEB-INF/views/auth/forgot-password.jsp +++ b/RJLResaka/WebContent/WEB-INF/views/auth/forgot-password.jsp @@ -12,39 +12,24 @@ -
+
+
+ Logo RJLResaka +
RJLResakaRéinitialisation
+
← Retour Réinitialisation

Mot de passe oublié

Entrez votre email. Pour l'instant, le lien est affiché à l'écran; ensuite vous pourrez brancher JavaMail.

- - <% if (request.getAttribute("error") != null) { %> -
<%= request.getAttribute("error") %>
- <% } %> - <% if (request.getAttribute("success") != null) { %> -
<%= request.getAttribute("success") %>
- <% } %> - + <% if (request.getAttribute("error") != null) { %>
<%= request.getAttribute("error") %>
<% } %> + <% if (request.getAttribute("success") != null) { %>
<%= request.getAttribute("success") %>
<% } %>
- +
- - <% if (request.getAttribute("resetLink") != null) { %> -
- Lien généré :
- <%= request.getAttribute("resetLink") %>

- Token : <%= request.getAttribute("generatedToken") %> -
- <% } %> - - <% if (request.getAttribute("debugMessage") != null) { %> -

Détail technique: <%= request.getAttribute("debugMessage") %>

- <% } %> + <% if (request.getAttribute("resetLink") != null) { %>
Lien généré :
<%= request.getAttribute("resetLink") %>

Token : <%= request.getAttribute("generatedToken") %>
<% } %> + <% if (request.getAttribute("debugMessage") != null) { %>

Détail technique: <%= request.getAttribute("debugMessage") %>

<% } %>
diff --git a/RJLResaka/WebContent/WEB-INF/views/auth/login.jsp b/RJLResaka/WebContent/WEB-INF/views/auth/login.jsp index d287e4f..8bfdbb8 100644 --- a/RJLResaka/WebContent/WEB-INF/views/auth/login.jsp +++ b/RJLResaka/WebContent/WEB-INF/views/auth/login.jsp @@ -12,40 +12,28 @@ -
+
+
+ Logo RJLResaka +
+ RJLResaka + Connexion sécurisée +
+
← Retour Connexion

Bon retour sur RJLResaka

Utilisez votre email ou votre nom d'utilisateur pour continuer.

- - <% if (request.getAttribute("error") != null) { %> -
<%= request.getAttribute("error") %>
- <% } %> - <% if (request.getAttribute("success") != null) { %> -
<%= request.getAttribute("success") %>
- <% } %> - + <% if (request.getAttribute("error") != null) { %>
<%= request.getAttribute("error") %>
<% } %> + <% if (request.getAttribute("success") != null) { %>
<%= request.getAttribute("success") %>
<% } %>
- - + +
- - - - <% if (request.getAttribute("debugMessage") != null) { %> -

Détail technique: <%= request.getAttribute("debugMessage") %>

- <% } %> + + <% if (request.getAttribute("debugMessage") != null) { %>

Détail technique: <%= request.getAttribute("debugMessage") %>

<% } %>
diff --git a/RJLResaka/WebContent/WEB-INF/views/auth/register.jsp b/RJLResaka/WebContent/WEB-INF/views/auth/register.jsp index 7ebc059..c59cb82 100644 --- a/RJLResaka/WebContent/WEB-INF/views/auth/register.jsp +++ b/RJLResaka/WebContent/WEB-INF/views/auth/register.jsp @@ -12,50 +12,27 @@ -
+
+
+ Logo RJLResaka +
RJLResakaCréer un compte
+
← Retour Inscription

Créez votre compte

Une seule inscription suffit pour commencer vos discussions privées.

- - <% if (request.getAttribute("error") != null) { %> -
<%= request.getAttribute("error") %>
- <% } %> - + <% if (request.getAttribute("error") != null) { %>
<%= request.getAttribute("error") %>
<% } %>
- - - - - -
- -
+ + + + + +
- - - - <% if (request.getAttribute("debugMessage") != null) { %> -

Détail technique: <%= request.getAttribute("debugMessage") %>

- <% } %> + + <% if (request.getAttribute("debugMessage") != null) { %>

Détail technique: <%= request.getAttribute("debugMessage") %>

<% } %>
diff --git a/RJLResaka/WebContent/WEB-INF/views/auth/reset-password.jsp b/RJLResaka/WebContent/WEB-INF/views/auth/reset-password.jsp index d3f05c3..2115a17 100644 --- a/RJLResaka/WebContent/WEB-INF/views/auth/reset-password.jsp +++ b/RJLResaka/WebContent/WEB-INF/views/auth/reset-password.jsp @@ -1,10 +1,5 @@ <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> -<% - String token = request.getParameter("token"); - if (request.getAttribute("token") != null) { - token = (String) request.getAttribute("token"); - } -%> +<% String token = request.getParameter("token"); if (request.getAttribute("token") != null) { token = (String) request.getAttribute("token"); } %> @@ -18,36 +13,24 @@ -
+
+
+ Logo RJLResaka +
RJLResakaNouveau mot de passe
+
← Retour Nouveau mot de passe

Réinitialisez votre mot de passe

Collez le token reçu ou ouvrez directement le lien généré.

- - <% if (request.getAttribute("error") != null) { %> -
<%= request.getAttribute("error") %>
- <% } %> - + <% if (request.getAttribute("error") != null) { %>
<%= request.getAttribute("error") %>
<% } %>
- - - + + +
- - <% if (request.getAttribute("debugMessage") != null) { %> -

Détail technique: <%= request.getAttribute("debugMessage") %>

- <% } %> + <% if (request.getAttribute("debugMessage") != null) { %>

Détail technique: <%= request.getAttribute("debugMessage") %>

<% } %>
diff --git a/RJLResaka/WebContent/WEB-INF/views/dashboard.jsp b/RJLResaka/WebContent/WEB-INF/views/dashboard.jsp index c9bf45c..284297d 100644 --- a/RJLResaka/WebContent/WEB-INF/views/dashboard.jsp +++ b/RJLResaka/WebContent/WEB-INF/views/dashboard.jsp @@ -1,76 +1,374 @@ <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> - Tableau de bord | RJLResaka - + Messenger Facebook Style | RJLResaka + - -
- - -
-
-
- Utilisateurs -

Choisissez une personne à qui parler

+
+
+ ${friendCount} + Amis +
+
+ ${requestCount} + Demandes +
+
+ ${fn:length(conversations)} + Discussions +
- ${fn:length(users)} compte(s) -
+ Déconnexion +
+ + + + + +
+ +
${success}
+
-
${error}
+
${error}
-
- -
-
${item.initials}
-

${item.fullName}

-

@${item.username}

- ${item.email} - -
-
+ + +
+
+
+
${activeConversation.initials}
+
+
+

${activeConversation.title}

+ + Groupe + + + Privé + +
+

${activeConversation.subtitle}

+
+
+
+ Thème clair Facebook + Fichiers + réactions +
+
- -
-

Aucun autre utilisateur pour le moment

-

Créez un deuxième compte pour tester le chat privé ensuite.

-
-
-
+
+ +
+
+

Conversation prête

+

Envoyez votre premier message dans ${activeConversation.title}.

+
+
+ + +
+ +
${message.senderInitials}
+
+ +
+
+ + ${message.senderName} + + +
+ +
+ + +

Ce message a été supprimé.

+
+ + +

${message.body}

+
+ + + 📎 ${message.attachmentName} + Télécharger + + + + Modifié + +
+
+
+ +
+
+ +
+ + + + +
+
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + +
+
+
+
+ +
+ + +
+ + +
+
+
+ + +
+
+

Bienvenue sur votre Messenger

+

Ajoutez des amis, acceptez des demandes ou créez un groupe pour commencer.

+
+
+

Détail technique: ${debugMessage}

+ +
diff --git a/RJLResaka/WebContent/WEB-INF/views/home.jsp b/RJLResaka/WebContent/WEB-INF/views/home.jsp index f8dfbd6..a3817f9 100644 --- a/RJLResaka/WebContent/WEB-INF/views/home.jsp +++ b/RJLResaka/WebContent/WEB-INF/views/home.jsp @@ -4,8 +4,8 @@ - RJLResaka | Discussion privée moderne en Java JEE - + RJLResaka | Chat privé et groupes style Facebook + @@ -13,38 +13,55 @@
+
+ + Logo RJLResaka +
+ RJLResaka + Java JEE • Tomcat 9 • MySQL Workbench +
+
+ +
+
- RJLResaka • Java JEE -

Discutez comme sur Messenger, dans votre propre application web.

+ Version finale Facebook-like +

Une messagerie claire comme Facebook, avec amis, groupes et chat en temps réel côté UI.

- 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. + Votre projet final RJLResaka comprend maintenant l'inscription, la connexion, le mot de passe oublié, + les conversations privées, les groupes de discussion, les demandes d'amis, les réactions, + l'envoi de pièces jointes et une interface blanche inspirée de Facebook Messenger.

    -
  • Tomcat 9 + Servlet/JSP
  • -
  • MySQL Workbench
  • -
  • Base prête pour chat privé + fichiers
  • +
  • Demandes d'amis et acceptation/refus
  • +
  • Création de groupes avec vos amis
  • +
  • Design clair moderne type Facebook/Messenger
-