From 6eadfff66fc680372959035677aadd56831ec69c Mon Sep 17 00:00:00 2001
From: Alexandre Dehaine <alexandredehaine@outlook.fr>
Date: Mon, 10 Mar 2025 11:16:07 +0100
Subject: [PATCH] v0.9

---
 .vscode/settings.json                         |  12 ++
 ScriptSQL.sql                                 |  11 +-
 WEB-INF/classes/dao/Authent.class             | Bin 0 -> 4073 bytes
 WEB-INF/classes/dao/Conversation.class        | Bin 875 -> 2439 bytes
 WEB-INF/classes/dao/ConversationDao.class     | Bin 575 -> 636 bytes
 WEB-INF/classes/dao/ConversationJdbcDao.class | Bin 6695 -> 7431 bytes
 WEB-INF/classes/dao/Message.class             | Bin 1826 -> 1852 bytes
 WEB-INF/classes/dao/MessageJdbcDao.class      | Bin 5875 -> 5875 bytes
 WEB-INF/classes/dao/Utilisateur.class         | Bin 1320 -> 1941 bytes
 WEB-INF/src/dao/Authent.java                  |  84 +++++++++++
 WEB-INF/src/dao/Conversation.java             |  53 ++++++-
 WEB-INF/src/dao/ConversationDao.java          |   3 +-
 WEB-INF/src/dao/ConversationJdbcDao.java      |  26 +++-
 WEB-INF/src/dao/Message.java                  |   2 +-
 WEB-INF/src/dao/Utilisateur.java              |  37 +++++
 accueil.jsp                                   | 134 +++++++++++++-----
 login.html                                    |  33 +++++
 util.txt                                      |   2 +-
 18 files changed, 346 insertions(+), 51 deletions(-)
 create mode 100644 .vscode/settings.json
 create mode 100644 WEB-INF/classes/dao/Authent.class
 create mode 100644 WEB-INF/src/dao/Authent.java
 create mode 100644 login.html

diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..cb83cd3
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,12 @@
+{
+    "java.project.sourcePaths": [
+        "WEB-INF/classes",
+        "WEB-INF/lib"
+    ],
+    "java.project.referencedLibraries": [
+        "/home/infoetu/alexandre.dehaine.etu/tomcat/lib/annotations-api.jar",
+        "/home/infoetu/alexandre.dehaine.etu/tomcat/webapps/sae-r4.01/WEB-INF/lib/postgresql-42.7.4.jar",
+        "/home/infoetu/alexandre.dehaine.etu/tomcat/webapps/sae-r4.01/WEB-INF/lib/chesslib-1.1.8.jar"
+    ],
+    "java.project.outputPath": "WEB-INF/classes"
+}
\ No newline at end of file
diff --git a/ScriptSQL.sql b/ScriptSQL.sql
index 7a19a72..6473068 100644
--- a/ScriptSQL.sql
+++ b/ScriptSQL.sql
@@ -14,6 +14,7 @@ CREATE TABLE Conversations
         nomConv VARCHAR,
         createur VARCHAR,
         dateCrea DATE default CURRENT_DATE,
+        pwd VARCHAR,
         CONSTRAINT pk_Conversations PRIMARY KEY (idConv),
         CONSTRAINT fk_Utilisateur FOREIGN KEY (createur)
             REFERENCES Utilisateur(email)
@@ -35,19 +36,19 @@ CREATE TABLE Messages
 
 -- Création des utilisateur
     INSERT INTO Utilisateur(pseudo, email, pwd)
-    VALUES('Alex2n','alexandre.dehaine.etu@univ-lille.fr', 'mdp');
+    VALUES('Alex2n','alexandre.dehaine.etu@univ-lille.fr', MD5('mdp'));
     INSERT INTO Utilisateur(pseudo, email, pwd)
-    VALUES('Shiira02','audrey.v.etu@univ-lille.fr', 'mdp');
+    VALUES('Shiira02','audrey.v.etu@univ-lille.fr', MD5('mdp'));
 -- Créations d'une Conversation 1 et de messages
-    INSERT INTO Conversations(nomConv, createur)
-    VALUES('Conversation 1', (SELECT email FROM Utilisateur WHERE email = 'audrey.v.etu@univ-lille.fr'));
+    INSERT INTO Conversations(nomConv, createur, pwd)
+    VALUES('Conversation 1', (SELECT email FROM Utilisateur WHERE email = 'audrey.v.etu@univ-lille.fr'), MD5('mdp'));
     INSERT INTO Messages(message, utilisateur, idConv)
     VALUES('Salut', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1'));
     INSERT INTO Messages(message, utilisateur, idConv)
     VALUES('Hello', (SELECT email FROM Utilisateur WHERE email = 'audrey.v.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 1'));
 -- Créations d'une Conversation 2 et de messages
     INSERT INTO Conversations(nomConv, createur)
-    VALUES('Conversation 2', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'));
+    VALUES('Conversation 2', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'), MD5('mdp'));
     INSERT INTO Messages(message, utilisateur, idConv)
     VALUES('Conv 2', (SELECT email FROM Utilisateur WHERE email = 'alexandre.dehaine.etu@univ-lille.fr'), (SELECT idConv FROM Conversations WHERE nomConv = 'Conversation 2'));
     INSERT INTO Messages(message, utilisateur, idConv)
diff --git a/WEB-INF/classes/dao/Authent.class b/WEB-INF/classes/dao/Authent.class
new file mode 100644
index 0000000000000000000000000000000000000000..45f9b26835e582c2d87ceccc95684c00e0a47a53
GIT binary patch
literal 4073
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

literal 0
HcmV?d00001

diff --git a/WEB-INF/classes/dao/Conversation.class b/WEB-INF/classes/dao/Conversation.class
index 371c092f728d39d0d6c485973e5fd70d04b310f4..c46de39582b4f87e4f4f07e3b12905ad7290e591 100644
GIT binary patch
literal 2439
zcmX^0Z`VEs1_oP(NG=8@24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3U%l*D{}=lr~~)S}|VlFa-(Mh3Rb6p#QT1EVKM
zF&_^DKZ5`x14l|?Nvd;EY9b?ps1MkZlFZyxeV_c~#2lBzl2mJuVj&&|VFnRK2KK!C
zT!<k;5Vc?j1(y_M=B0xbit#XrGe|Hpa3mL{CYGd@7BMmi`heULT9TQQSqv7k=3<ay
zkY;C);bD+vkVEkr#3V)r_OisB(p3L6Mg}zvB#R(Ex7I`wg6II-t-!;e2y!HIL3xT0
z0|SFH4}%JWDkFn<Zen(-bADcOVo7*rNrrQNUU5lcUP&<{L#&1;rcvaHU~v-{gF1r-
zJA)<<gBF7}BZDxOz-46M$Ve>CaL!Lj1xKSNC}=de81z6I^%)uX(Si<?C=7WRj2Mg=
z8935YOPq5Oi;Ec<gf)<@2Mbz*Y&Yd$Fk>)hWME4zEKSTQW@He>7Mf8YOHDzRnldu@
zVGR;AXIMkR2rZ#N1d&sOW*8#_3&eB$KACx`ex<odsYM})Nja&E44mnyC7#eE$(^2B
z0!nO<bSMt<4w?mw3|#4{C4R6ZC<0T4Y$YQD$SjaKkkkhX8g$n)GH?|mnS&B2(DVdy
zIY&u8gvZFh8(fl@ob8)f0ChW8aDHh~a;jS<$RmQF90AK`dZ1WlWDs!5&o3!1DM~Ex
zO)bgDPbubSWANc(@MZ90XYdE5%K%0O6_8R$md?y8%g;{Lhgb(ms&0wNCHX~_j0`i7
z;|!`0VyH)AUP?}Cv5HTAes*aAG*XZQ11UyOG=@|bq+(GXjieq+R)ZShoS2gnoLQ1;
z&A|}F$l!?Vd4*_58Dq<+qW~*bKx}BK0b;_+1rWQSJjIqVmXU$SGcPZ-2%KzFi`f}M
z85vYDf(Dz9*%`ta8RYOQWn^H31P_BE0|x^W0|Nsq0~4r>WME)m0+oPZT9`ouOp7x}
zfN4cApOb-+ftA6Efsw(Qfq}t|fr){Qfq_9vYdZs@mh@Hzb}dPktqi<cI$Ie8wRE>K
zh;C$HU|?jh0jUA2<Y8c8;AP-s;A7xt;AaqF5MYpG5M*Fvuw~GOnkmb`$iN74lhzgn
z_BC+rY+ylQ21W)u274?@c{iXb6=PszaA0u6qErxFsU!m<gA;=@7Nw%-N@W-r8C)1#
zp-Pn)n84x3rlq}=K@j0rP?^NQAkV<cpuoV$;0AYv1p_PC8ww!5X>DQP-N7KKwS_@Y
zYYT%Ygekv^L5YC@-Bx7=Mo@tXwe=0u);ty)0eR^RkXZ>Z7VmKecIM>_Tp+`@F{r`C
z1rg$c+Zc4<;-Uy~(QOR6aB+ErxI9?BG$<;Vz%ePuz|O$Hpvl0*pvAz$pv|Ddpu=Fp
zpvw@#pvREIpwHmWz`)?a!113!nt_R(frF8Ok?}tR8<fq&$QVEhmw^#fUPFA&7z}Cv
zFfcHz)6!nXz{;{l`#1wD^BS#f3<lcU7z~zzINApoIDA1tqO*m8eLhG86coo9cyzWf
z@E&6jWnKf~gE-q5OlCpl1tIc+FnK|pEewL&7%X7&q7Zpen7pXY76#F643;o?d5F9`
zOkQ4R3xhmNKMNw{su<)L7#NHhSQ$(h*cnV2xEahCcp1zYBp56hq!=t2<Qc3Ov>2?x
z;c3iZ%V5P|$6&)?&)~)2z~IB+$Pmon#1O^c%n-xi!jQ$_%8<k0#!$@Q&QQhR!BE5C
z$<W2%#n8jx%`ln4hhY|jFT)%LKZaEd{tRmv0>H5%%)rCW%JYXokez{p9|{<l89cxl
k+>^nJfq{X8fsw(RfsrAQA((-Ifs28WA%r1}A%Z~?0Oi;qF#rGn

delta 350
zcmZn{e$B>p>ff$?3=9mm3>p);ZZk77*i6o66rDVsNp<o$CQTM*4NcF<Uzw&)Ud}Af
z#h}Q*!NA18z`!y&g;i0Qje(JYl|hn$kwJ=qfx(S|iGg+U0#@aEX$A%cDF!wM1_o{h
z76u*$P6l2Eeg-}U5e9w+Nd^H1Mg|!MS*R`$&B(yOz^b){fqe}F0|O%iNIS@A1_mJp
zMg}<sc`QnKH=rpMWng4bU{C}pt!H2W8xJ#95M8YV10#bHgEB}hno?18rP2(H3@Qw&
lP^C%?OknS`X=!g|5ZnlN0vA|Rj)4{IR(3T81_mYubpQ>VAeI0C

diff --git a/WEB-INF/classes/dao/ConversationDao.class b/WEB-INF/classes/dao/ConversationDao.class
index 9f49a0f6e0117fa17fa6eab5fa2f8874b9847139..a2930172d2374868a20253fe952d727e48f96892 100644
GIT binary patch
delta 108
zcmdnb@`r`%)W2Q(7#J9A86-Ax6)-YdOs-~B5%kGQEKAhSNz6;v4=yRn%uAm<k5N&c
yJv~1^C7?WokwHwu6GMsh<lT&hjO>%&GI|KHFfxcRh%zuRFfxcSFfcGNhywsypB<+F

delta 50
zcmeyvvY&<P)W2Q(7#J9A8N@bn6)-ZYO|E8CnY@uvVe%J7T}HOaN=zPH42%pS3=9lR
G459#(e+)eU

diff --git a/WEB-INF/classes/dao/ConversationJdbcDao.class b/WEB-INF/classes/dao/ConversationJdbcDao.class
index d12c821c417bc2040428c62041dc7de3593f5a69..21c0c2d04aa20f9680699cd709e95b6cc96324ec 100644
GIT binary patch
delta 2117
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
U@PvVZfs28W;VHv&hL;SI0P;AUBLDyZ

delta 1461
zcmZp-T5iI1>ff$?3=9mm439T*B{4JFOwMJt+Pst5fSJicV{!nu>|_B}_R02~?3*>%
zGZ>lK88%No&f&<oV>2hGAtRHT#^iiv<;jIy3X`{R+3=m>VmQrkhMnOo4}%QDxyk>y
zjxb)Be3;va@zUgP+~$l|ChPGyF<zTo$fL`6WAc0+dzM>_40e+r@o39yDug-ugt`W6
zs57eTD5x{4Yg%(K++k$Uc5(G_4RM`(j$2iTk%7lEFE6#oIVZ8WIJKCa;r`?uyjm;|
z85!gz@8*@8%)%!mzKMa6fq{XKfuDhafrEjOft7)cfstX$WL-W*#;ue6`NVm*FfcIw
zW#DAsU|?W)J-L`KX7Y8uZl~=Gz8e_W8F(0q7&;k38TuKfGR$BIWng8fVOYWt%FxNM
z1Wd1FSkJJDA(VlEp^ae=Lo`Dt!yYir#ISYpGJbilL<Vt&3<e2?JO)XIA_ggjHU>$C
zP6k1SJq%I|dl{q|&M?R@Twsu6*v7!X(7?d?pP`0<gPnn!k)1)5ok5$OVLLm6Av=Q^
zJA>IIsT58|hMf$%7?>EgY_1UyV65NDz`)?fAjrVLpv=I-pu!-+pvoY_pvIuapw6Jr
zpuu3tpve%xpv@4@pu-T$pv#cRpvO?kpvzFfpv<tEL62b#gFeG<1_Oru3`SrFOkm*t
z&!Er1&d$IMwi($8bqov&e;B0L8R|IyGcYl*urqK=!WA(vvNMGKXW(OCg=n3uASEsa
zk%da}f_1PnY@Zw`Bqp&PBpS`In}LCWiD3@|Bg0;XePD0Z3wbi8BD`hJz{6m{Ai`kD
zAj4qApvGX$pwD2#V98+1(8*xWFoD5=VH$%Y!z>0ThII^%3>z8D8J;jWF+62(X86M3
z!tjH^4eYHpgtrjkI$2kwSP<fX{S1r@2cQnvC?dre3UYuSgD?XFgEs>YgAaoUgD-;&
zgCBz$gFk~lLjZ#jLm-0<Ll8p<Loh=WLnuQcLl{FkLpVb=Lj*%TLpVbdgEzxgh6sjj
z43P{+8KM|YGQ==!o2(!v&bWQDg;<dh#M*-lj0}eu4ueu70|VnF1}1O{T&=Z@LBLOU
zCxZwhgB6Rm&NhZAyBMZV=8>LV@4^tv5Xz9kkj;<>PKf~wRScmFu?$sUx`Ck$oKhJW
zq8O$!L^H%POa;?S3?T2=fiplN1201ogCs*TgCau;gAPL~g9$?#gEd1sgCj!*g9}3@
zLli>>Lo7og!&HV$hG`603`-fZ8CEjng2J($VJ0Yn27nVNIC8U*Qz;_@NR|nf1lSp%
zvY@CA{m&r4zy?Vha0zyXP_P^aEIq-^1Pdc2Cx{j`6b;O9(?F`D85kLkFdPMi<>Va_
z&tnl@E@I$eC}t30C}EIcC}mJ%C}YrLC}%Kbs9>;WsARBXsA33WsALFbC}QYfsAA}3
zsAibKP{S~Xp$_C_hH8+XJis{uDe3%?EMVL+IakU7oCDPuI2jliS{axb+8Edv+8H<*
zIv98vx)_8Qx*4PxdKsh{`WRFhCW6glV_=M8XIRg`%y0~x_K!21U|?X-VPI!C$-u~P
n9!y>Ylb6BdRWNxSOx^^Ow;Ap-Ffed2Ff!a@c)-H&h(Qtnj@lp(

diff --git a/WEB-INF/classes/dao/Message.class b/WEB-INF/classes/dao/Message.class
index 7c7ecb66901903a3355227369aec6d02561d6767..74e4b4ebc05748592bbb9752c0cea2ea666b44f4 100644
GIT binary patch
delta 624
zcmZ3)w}+4G)W2Q(7#J9A83H$QWiV=UF{m?Wurp}#FlaGoGcxd}B<AafmSpB+7AKaZ
zmKHHGaHgl01Qe&1rsPk~V-n{QVqjp<<zdic(4SnxD8uBXF?k=O%H#`-3nsTSedcrF
zVsK?}V`p#&sqmQG!F<Hci;=;=rnn$6PocP^GAGqmDJ?&*L>J7qQphYx%*jl)R<dKX
z(FduqQ(#oEQeb3c;PK4MOD%HFNh~f-EoNu%o!rHu#p2J%AUC;}MQ-vn7B5x<21W+M
z$*Qd8j7F1VSvBj88MHwn3=9kg49pCS3=9ksT3Z+-b}%StZDA1D#-OIPg+XQ)gAN13
z1_lNOMg}7W1_m~;I&lU@1``HTsBT#XMzAQW))of#HE2qu85kMNuqv(RMOQ1wz{p_E
zV1dP00dyBAGB7e&GFV|zDuS+5g@KX5n!yG`>Ev!U&U%EO)EO8VY~dk->?av?6SWu^
z8SEJBp(ZLZFflNJf<{YwD}&5Nxc|ApqPh&M40;UA3=Rwo3``7;3{DIT3>*xM49*OU
X44w@9-V6*3Tnvm1J`8>g0SuA=Qixe%

delta 567
zcmdnPw}_AH)W2Q(7#J9A8GJT!WiWCHF)%Qw^Dt;IXinb8D8m$^G5H;%$|NSCNlXhS
z&u0{!Jdf!spFJ0Y1A`+wgA+)d^W=rhN9<e~88lpT6EkxZtP~g(ToOxC!3>Yo(jo}U
zH?_DpF&)fiWZ?14%S$bC&PgmTPAz6<@R+=sMT^CYkwI?qIu^Of-&wp^wHO!~v?sf<
znltK5u4C1#*JaQHi7+rQm@}|2FfuSO$ZKt35ZJ+>ptXfT1VTwbD4AUhY77h;7#J8B
z8FUyJ7}&td#TghG^cf7GhR8B7f<;-iwlJ`-K~pNtz{p^Ts<fVgfdQnJ7hSC!10#bG
zgE1Ck1<+lf$iT>8!eEL;sR+7K6$VBIGX`^n(g3(?CD7HXGcYn(z(WVwV>0MUL4j(?
zU<ERE@;f$hb5Q7TF)%SOFz7O{GUzcdGgvb)FfcLLFxWCMFmNz1GT1RNGPp3fF)%Q2
PF)%W?Gk7w1Ge`meVFpXP

diff --git a/WEB-INF/classes/dao/MessageJdbcDao.class b/WEB-INF/classes/dao/MessageJdbcDao.class
index 351df4f3a66ea2b41e6fc91905ccf6d72d6fe751..bcce12db5395236b73f4b1af3e128f3c3d2509ac 100644
GIT binary patch
delta 648
zcmeyY`&oCxY$jcMMh5ou)DoA(l2k?pAq`JWpRB~PME&Bz9DR_OH5Y>;gA+T0GY^9c
zgX?5DW*atl9tIBv&&dhQirn4|KI{y>JPdve{*!x{EflyJ3>gA>7=jpN85ua!Q%izN
ziZb)kxfs|PLU<TL8Nw!SVlorpVlZQf;9+28h-734((v@0?8q!S`4_XgfKN(dzJ6#)
zW=>{tVo7Rg(Pjk}QAS=ahEj$yc7}2uh6)DP$qQKJ+^ZO>*%@j;e1Ap;VX$*cGILY)
zee#nNb3!t6Q#lxv*cs{>8Tio*<YK5}Xaw2Z#K>T&F*%o2WpX{M7-QY$N35Cbj69Ql
zcs-0IS=n|n*f23{V{njUW#7r*24Z?ivU2QX2w-B++QPsk$tu7G=4@jK-p&wi#WtBy
zpit5*l9_o2L&*+?N}<}_40Vx0wIH~ip<#0%pDZII_v8(NqLW+ro%KkwV6vIesmc2V
zf*I>3hX|{R*ReB*vNLEiFtRhm|7YN1U}b0EW@o6IJV98}10)BP;ALQeNPv~cgGJf@
zGcYnRL4-j9sSHOL7#NrsjxsPZ9AY@ez{Iedfq_Yz0p!vM5?#63Oo)@2v2L=1s2pS6
t<akj@#=6OsqOuZo><kAO*%?GZ_Qn5a5MW?~*gtuls1#$}=98jYi~zNMj=BH<

delta 644
zcmeyY`&oCxY$kD8Mh4FG)RN$mqRhN>E(Uf62Ob7T2B*n=%w}BN42BFYJPfW3Zj<LQ
zDRO%-c(OBi@i2HZ_)I>*WW(mi!{E;lFqw;4kvoVXn4KYnhar?9Y_b`%g(4S&8AAjQ
z11m!$BSVmer>9R!V!nQ8NoG!FabihoX_58hE6g^V6<I_W)z}$I85#J|<T)6WxEM+p
zDnLe5GBQ|dOpfAEnViER91zCEP|Z-o&QQz4P{-iI$RM1RSeB??l9`*T?~|XLnB$UI
zlFG=yoR?qD#n8ae$j;CNQW%D*FeEcKm5ZTd^CQ+wc1F(0KD-{rT3Z;nBw5*ZGT1ON
zY-6yOWM$vU;0$8AOR{q8Wbg$s10`7nAS$*qgj=yqW)vutG>c?r-px=FDO3i6+ZoDt
zFjVbes23{R9LOij$jCK$gP`c-7Jg?v(kz&4CUk1@et}@dlF1>$s^TT=45I7|+6;{B
z4DtUN_!wB(8MxUQN+wSbmh=G0K_z$@SRfK$<?&!q_Wulw3``JVkU%QK5e5bZCWfO7
zj0}eujxjJX>}FtK(q;g;G=fA|ZZ;F*WM(Xx>>w(~STZ?YRFbh|a;2!OL<u{?0Y-KP
bQILJ{{}}`r*dX>#UMDKWShD$~s1_pt6atLm

diff --git a/WEB-INF/classes/dao/Utilisateur.class b/WEB-INF/classes/dao/Utilisateur.class
index 676b01c2eedc15fa3fb762645030bf4f33c4a807..0c1a37ae55d3f5140bbf1bb8ce204d519e6f4a67 100644
GIT binary patch
delta 1054
zcmZ3%HI<+1)W2Q(7#J9A8Js6_y{+eBkYJExXOQAykY<o!WDv+oEKAhSNz6;v4=yRn
z%u8ov;K)cU&T!68No8bU*3k6iVqjvB<6)3zP+(->NKY+s&PgmTW@Hf7(DXs*1q)h(
z%vR!IP-akJWME4zEKSTQW@Hf6KvL(=os^ZDTw<*m#mHbealh(hdB#{i-r$nN<ZR!>
zf{?_doYcuxj7@xITny$67VHd`JPe`?R+G7yjxgFxKF_4VV$aB+Iys+7e6lYS9~(P^
zBO`+xm}|>y%+1BX$iT{=%D~8=Ho2Nvl~H~2LS|WZ4F*lH$WdnbdUXZ{1~vvp1_lOx
z21W)ghztV*gDe9hSd>+33j_NG1_lO3282>!21Za=fec|_VA#yS#K6SBz~IATBOouG
z0n%`sft`6d0~d(7jX^vCCeDix=Y@#ZLo^5=Bm}?`(rXwP7?{9TiZQS<Ffd3mFfm9m
zNHIt=7%|8&crnN_XfrS{STeBvXAopyVrSrBWME|c&%g#{Gchs-;N>zff+B^Xo{>R~
zfq{{ofr){cfq|h>OM4juE6W<~;|#3KYqYj8$ZBt6kX;JmXdhtU@CAA3I0KK)76$fX
z45G|yKztBq8-wC3kRq)u47?C|UYI<u&K3q<BzXadyZ}VLehY(u&K3p%m;x4rzvCFh
z85kIp7+4vU8Q2+A7`Pc!8F(4g7$g|f8Kf9A7~~l=8PpiG7<3u58T1)+7;G7I8SEMK
z7~B~28GIQG82lLw8DbfX7~&a>8PXU`7;+g*8S)v-7-|{J8R{7<z~Lw0%D~Ca%JYXo
zgq?wd9|RZ}8Fa8F0$%h)V8g)3pbJqt*`GxWDJ3~DFf!;d=tGl-5;S?RX=!g|VBZK&
zN}ycCz~I8b%HYbt$Y6k7JukX?4+d5SPX<N?Lv-~n3}6cc&^7olurl~EFf$l|6O=K7
g2?GNI2LmI6DFY*eHG?e!0|O|N*fBUTI59{902K+GD*ylh

delta 389
zcmbQrzk-YF)W2Q(7#J9A8B8W}y`5ag*g9F5sew<Oi$Q}ylbu0}he4D<d-6i2BaFI}
z)0j0F4JP+9YcU#4-o@<8&B4IPz{()bz{nsmS%^iIQF5{ci!8eogEUwqhDBafl7WGN
zje(JYfq|cakwFG3Gl4}6Nk*7~kwF$JGm%ZK9-#+hvK&N)fq_Amfe~yHtJW3<fej1{
z42%p2r64Qi85BSkGcYhHF)%SOfvncj-patf5w4aCEGo~y3RbBICMD3+=QHr4Yfxrj
zWl&*YWKhDYfk6OWy*dLcg9ZaLgE9jH0~3P^gDL|911PN27#JCJ81xtz7`PZ18T1(p
I8H^bu0ZykSnE(I)

diff --git a/WEB-INF/src/dao/Authent.java b/WEB-INF/src/dao/Authent.java
new file mode 100644
index 0000000..2ab890e
--- /dev/null
+++ b/WEB-INF/src/dao/Authent.java
@@ -0,0 +1,84 @@
+package dao;
+import java.io.*;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
+import jakarta.servlet.annotation.WebServlet;
+
+@WebServlet("/Authent")
+public class Authent extends HttpServlet {
+    public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+        String loginSession = req.getParameter("email");
+        String mdpSession = req.getParameter("pwd");
+        
+        try (Connection con = getCon(); Statement stmt = con.createStatement()) {
+            String action = req.getParameter("action");
+            if(action.equals("login")){
+                String sql = "SELECT count(*) FROM Utilisateur WHERE email = '"+ loginSession +"' AND pwd = MD5('"+mdpSession+"');";
+                System.err.println(sql);
+                ResultSet rs = stmt.executeQuery(sql);
+                res.setContentType("text/html;charset=UTF-8");
+                PrintWriter out = res.getWriter();
+                out.println("<head><title>Autent</title>");
+                out.println("<META content=\"charset=UTF-8\"></head><body>");
+                if(rs.next() && rs.getInt(1) == 1){
+                    HttpSession session = req.getSession();
+                    out.println("<p>Connecté</p>");
+                    session.setAttribute("token", loginSession);
+                    res.sendRedirect("accueil.jsp");
+                    
+                }else{
+                    res.sendRedirect("login.html");
+                }
+                out.println("</body>");
+                con.close();
+            }else if(action.equals("creer")){
+                String sql = "INSERT INTO Utilisateur(pseudo, email, pwd) VALUES('"+
+                req.getParameter("pseudo")+"',"+
+                "'"+req.getParameter("email")+"',"+
+                "MD5('"+req.getParameter("pwd")+"')"+
+                ");";
+                System.err.println(sql);
+                try{
+                    stmt.executeUpdate(sql);
+                    con.close();
+                    res.sendRedirect("login.html");
+                }catch (SQLException e){
+                    con.close();
+                    res.sendRedirect("login.html");
+                }
+            }
+        } catch (SQLException e) {
+            System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage());
+            e.printStackTrace();
+        }
+    }
+    
+    public Connection getCon() {
+        
+        try {
+
+            String driver = "org.postgresql.Driver";
+            String url = "jdbc:postgresql://psqlserv/but2";
+            String nom = "alexandredehaineetu";
+            String mdp = "moi";
+
+            Class.forName(driver);
+            Connection connection = DriverManager.getConnection(url, nom, mdp);
+            return connection;
+
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+
+        return null;
+
+    }
+}
\ No newline at end of file
diff --git a/WEB-INF/src/dao/Conversation.java b/WEB-INF/src/dao/Conversation.java
index 8afd07e..779bc79 100644
--- a/WEB-INF/src/dao/Conversation.java
+++ b/WEB-INF/src/dao/Conversation.java
@@ -7,8 +7,9 @@ public class Conversation {
     private LocalDate dateCrea;
     private String nomConv;
     private Utilisateur createur;
+    private String pwd;
     
-    public Conversation(int idConv, String nomConv, Utilisateur createur, LocalDate dateCrea) {
+    public Conversation(int idConv, String nomConv, Utilisateur createur, LocalDate dateCrea, String pwd) {
 		this.idConv = idConv;
 		this.dateCrea = dateCrea;
 		this.nomConv = nomConv;
@@ -29,5 +30,55 @@ public class Conversation {
     public void setNomConv(String nomConv) {
         this.nomConv = nomConv;
     }
+    @Override
+    public String toString() {
+        return "Conversation [idConv=" + idConv + ", dateCrea=" + dateCrea + ", nomConv=" + nomConv + ", createur="
+                + createur + ", pwd=" + pwd + "]";
+    }
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + idConv;
+        result = prime * result + ((dateCrea == null) ? 0 : dateCrea.hashCode());
+        result = prime * result + ((nomConv == null) ? 0 : nomConv.hashCode());
+        result = prime * result + ((createur == null) ? 0 : createur.hashCode());
+        result = prime * result + ((pwd == null) ? 0 : pwd.hashCode());
+        return result;
+    }
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        Conversation other = (Conversation) obj;
+        if (idConv != other.idConv)
+            return false;
+        if (dateCrea == null) {
+            if (other.dateCrea != null)
+                return false;
+        } else if (!dateCrea.equals(other.dateCrea))
+            return false;
+        if (nomConv == null) {
+            if (other.nomConv != null)
+                return false;
+        } else if (!nomConv.equals(other.nomConv))
+            return false;
+        if (createur == null) {
+            if (other.createur != null)
+                return false;
+        } else if (!createur.equals(other.createur))
+            return false;
+        if (pwd == null) {
+            if (other.pwd != null)
+                return false;
+        } else if (!pwd.equals(other.pwd))
+            return false;
+        return true;
+    }
+
     
     }
diff --git a/WEB-INF/src/dao/ConversationDao.java b/WEB-INF/src/dao/ConversationDao.java
index d62cbee..9f61d27 100644
--- a/WEB-INF/src/dao/ConversationDao.java
+++ b/WEB-INF/src/dao/ConversationDao.java
@@ -7,6 +7,7 @@ public interface ConversationDao {
     List<Message> findAllMessages(int idConv);
     List<Utilisateur> findAllUtilisateurs(int idConv);
     List<Conversation> findByUser(String email);
-    boolean createConversation(String nomConv, Utilisateur createur);
+    boolean createConversation(String nomConv, Utilisateur createur, String pwd);
     boolean deleteConversation(int idConv);
+    boolean goodPwd(int idConv, String pwd);
 }
diff --git a/WEB-INF/src/dao/ConversationJdbcDao.java b/WEB-INF/src/dao/ConversationJdbcDao.java
index 2e96f1a..d3897c2 100644
--- a/WEB-INF/src/dao/ConversationJdbcDao.java
+++ b/WEB-INF/src/dao/ConversationJdbcDao.java
@@ -19,15 +19,16 @@ public class ConversationJdbcDao implements ConversationDao{
             System.err.println(sql);
             ResultSet rs = stmt.executeQuery(sql);
             rs.next();
-            Conversation conversation = new Conversation(rs.getInt(1), rs.getString(2), jdbcUser.findByEmail(rs.getString(3)), rs.getDate(4).toLocalDate());
+            Conversation conversation = new Conversation(rs.getInt(1), rs.getString(2), jdbcUser.findByEmail(rs.getString(3)), rs.getDate(4).toLocalDate(), rs.getString(5));
             rs.close();
             con.close();
+
             return conversation;
         }catch (SQLException e) {
             System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage());
             e.printStackTrace();
         }
-        return new Conversation(0, "err", new Utilisateur("err","err" , "err"),LocalDate.now());
+        return new Conversation(0, "err", new Utilisateur("err","err" , "err"),LocalDate.now(), "err");
 	}
 
     @Override
@@ -93,9 +94,9 @@ public class ConversationJdbcDao implements ConversationDao{
 	}
 
 	@Override
-	public boolean createConversation(String nomConv, Utilisateur createur) {
+	public boolean createConversation(String nomConv, Utilisateur createur, String pwd) {
 		try (Connection con = getCon(); Statement stmt = con.createStatement()) {
-            String sql = "INSERT INTO Conversations(nomConv, createur) VALUES('"+nomConv+"', '"+createur.getEmail()+"');";
+            String sql = "INSERT INTO Conversations(nomConv, createur, pwd) VALUES('"+nomConv+"', '"+createur.getEmail()+"', MD5('"+pwd+"'));";
             System.err.println(sql);
             ResultSet rs = stmt.executeQuery(sql);
             rs.next();
@@ -145,5 +146,22 @@ public class ConversationJdbcDao implements ConversationDao{
         return null;
 
     }
+
+    @Override
+    public boolean goodPwd(int idConv, String pwd) {
+        try (Connection con = getCon(); Statement stmt = con.createStatement()) {
+            String sql = "SELECT * FROM Conversations WHERE idConv = "+ idConv +" AND pwd = MD5('"+pwd+"');";
+            System.err.println(sql);
+            ResultSet rs = stmt.executeQuery(sql);
+            rs.next();
+            rs.close();
+            con.close();
+            return true;
+        }catch (SQLException e) {
+            System.out.println("Erreur lors de l'accès à la base de données : " + e.getMessage());
+            e.printStackTrace();
+        }
+        return false;
+    }
     
 }
diff --git a/WEB-INF/src/dao/Message.java b/WEB-INF/src/dao/Message.java
index d3f2676..269fb61 100644
--- a/WEB-INF/src/dao/Message.java
+++ b/WEB-INF/src/dao/Message.java
@@ -20,7 +20,7 @@ public class Message {
     }
     @Override
     public String toString(){
-        return "Email : " + utilisateur + " Date : " + jour + " Heure : " + heure + " Message : " + message;
+        return "<span style=\"font-style: italic;\">"+heure+"</span> " + utilisateur.getPseudo() + " : " + message;
     }
 
     public int getIdMessage() {
diff --git a/WEB-INF/src/dao/Utilisateur.java b/WEB-INF/src/dao/Utilisateur.java
index 72d4e5e..2894834 100644
--- a/WEB-INF/src/dao/Utilisateur.java
+++ b/WEB-INF/src/dao/Utilisateur.java
@@ -19,6 +19,43 @@ public class Utilisateur {
         return pseudo;
     }
 
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((pseudo == null) ? 0 : pseudo.hashCode());
+        result = prime * result + ((email == null) ? 0 : email.hashCode());
+        result = prime * result + ((pwd == null) ? 0 : pwd.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        Utilisateur other = (Utilisateur) obj;
+        if (pseudo == null) {
+            if (other.pseudo != null)
+                return false;
+        } else if (!pseudo.equals(other.pseudo))
+            return false;
+        if (email == null) {
+            if (other.email != null)
+                return false;
+        } else if (!email.equals(other.email))
+            return false;
+        if (pwd == null) {
+            if (other.pwd != null)
+                return false;
+        } else if (!pwd.equals(other.pwd))
+            return false;
+        return true;
+    }
+
     public String getEmail() {
         return email;
     }
diff --git a/accueil.jsp b/accueil.jsp
index dd9cdb3..8729b9c 100644
--- a/accueil.jsp
+++ b/accueil.jsp
@@ -1,65 +1,123 @@
 <%@ page pageEncoding="UTF-8" %>
 <%@ page import="dao.*" %>
 <%@ page import="java.util.List" %>
+<%@ page import="java.sql.*" %>
 <%@ page import="jakarta.servlet.*" %>
 <!DOCTYPE html>
 <html>
 
 <head>
     <title> Accueil </title>
-    <%-- <% response.setIntHeader("Refresh", 5); %> --%>
+    <% response.setIntHeader("Refresh", 5); %>
 </head>
 
 <body>
     <%
-        UtilisateurJdbcDao jdbcUser = new UtilisateurJdbcDao();
-        Utilisateur utilisateur= jdbcUser.findByEmail("alexandre.dehaine.etu@univ-lille.fr");
-        out.println(utilisateur);
-
-        ConversationJdbcDao jdbcConv = new ConversationJdbcDao();
-        List<Conversation> conv = jdbcConv.findByUser(utilisateur.getEmail());
+        String UserEmail = (String) session.getAttribute("token");
+    if (UserEmail == null || UserEmail.isEmpty() || UserEmail == "err") {
+        out.println("null");
+        response.sendRedirect("login.html");
+    }
+    UtilisateurJdbcDao jdbcUser = new UtilisateurJdbcDao();
+    Utilisateur utilisateur = jdbcUser.findByEmail(UserEmail);
+    out.println(utilisateur);
+    ConversationJdbcDao jdbcConv = new ConversationJdbcDao();
+    List<Conversation> conv = jdbcConv.findByUser(utilisateur.getEmail());
+    String stringConv = request.getParameter("idConv");
+    int selectedConvId;
+    try {
+        selectedConvId = Integer.parseInt(stringConv);
+    } catch (NumberFormatException e) {
+        selectedConvId = 0;
+    }
+    MessageJdbcDao jdbcMessage = new MessageJdbcDao();
+    if(request.getParameter("Message") != null && selectedConvId != 0){
+        if(request.getParameter("pwd") == null){
+            jdbcMessage.createMessage(utilisateur, request.getParameter("Message"), selectedConvId);
+            response.sendRedirect("http://localhost:8080/sae-r4.01/accueil.jsp?idConv=" + selectedConvId);
+        }else if(jdbcConv.goodPwd(selectedConvId, request.getParameter("pwd"))){
+            jdbcMessage.createMessage(utilisateur, request.getParameter("Message"), selectedConvId);
+            response.sendRedirect("http://localhost:8080/sae-r4.01/accueil.jsp?idConv=" + selectedConvId);
+        }
+    }
+    if(request.getParameter("param") == "create"){
+        jdbcConv.createConversation(request.getParameter("nomConv") ,utilisateur, request.getParameter("pwd"));
+        jdbcMessage.createMessage(utilisateur, request.getParameter("Message"), selectedConvId);
+        response.sendRedirect("http://localhost:8080/sae-r4.01/accueil.jsp?idConv=" + selectedConvId);
+    }
+    %>
 
-        %>
-        <br>
-        <style>
+    <br>
+    <style>
         table, th, td {
-           border: 1px solid black;
+            border: 1px solid black;
         }
-        </style>
-        <table>
-            <tr>
-                <th>idConv</th>
-                <th>nomConv</th>
-                <th>createur</th>
-                <th>dateCrea</th>
-            </tr>
-            <% for (int i = 0; i < conv.size(); i++){
+    </style>
+    <br>
+    <table>
+        <tr>
+            <th>Identifiant</th>
+            <th>Nom</th>
+            <th>Createur</th>
+            <th>Date de création</th>
+        </tr>
+        <%
+        if(conv.size()==0){
+            out.println("<tr> <td colspan=\"4\">Aucune conversation rejointe</td></tr>");
+        }else{
+            for (int i = 0; i < conv.size(); i++) {
                 out.println("<tr>");
                 out.println("<td>" + conv.get(i).getIdConv() + "</td>");
-                out.println("<td>" + conv.get(i).getNomConv() + "</td>");
-                out.println("<td>" + conv.get(i).getCreateur() + "</td>");
+                out.println("<td> <a href=http://localhost:8080/sae-r4.01/accueil.jsp?idConv="+conv.get(i).getIdConv()+">"+conv.get(i).getNomConv() + "</a></td>");
+                out.println("<td>" + conv.get(i).getCreateur().getPseudo() + "</td>");
                 out.println("<td>" + conv.get(i).getDateCrea() + "</td>");
                 out.println("</tr>");
             }
-            
-                String stringConv = request.getParameter("idConv");
-                int selectedConvId;
-                try{
-                    selectedConvId = Integer.parseInt(stringConv);
-                } catch (NumberFormatException e){
-                    selectedConvId = 0;
-                }
-                out.println(selectedConvId);
+        }
+        %>
+    </table>
 
-                List<Message> selectedConv = jdbcConv.findAllMessages(selectedConvId);
-                for(int i =0; i < selectedConv.size();i++){
-                    out.println(selectedConv.get(i) + "<br>");
-                }
+    <%
+        if (selectedConvId > 0 && conv.contains(jdbcConv.findById(selectedConvId))) {
+            List<Message> selectedConv = jdbcConv.findAllMessages(selectedConvId);
+            out.println("<h3>Messages de la conversation :</h3>");
+            for (int i = 0; i < selectedConv.size(); i++) {
+                out.println(selectedConv.get(i) + "<br>");
+            }
+            out.println("<form action='accueil.jsp' method='POST'>");
+            out.println("<label for=\"Message\">Message:</label>");
+            out.println("<input type=\"text\" id=\"Message\" name=\"Message\" onfocus=\"this.select()\">");
+            out.println("<button type=\"submit\" name=\"idConv\" value=\""+stringConv+"\" class=\"btn btn-primary\">Envoyer</button>");
+            out.println("</form>");
+        } else {
+            out.println("<p>Aucune conversation sélectionnée.</p>");
+        }
+    %>
 
+    <h3>Rejoindre une conversation :</h3>
+    <%
+        out.println("<form action='accueil.jsp' method='POST'>");
+        out.println("<label for=\"idConv,\">Identifiant de la conversation:</label>");
+        out.println("<input type=\"text\" id=\"idConv\" name=\"idConv\">");
+        out.println("<label for=\"pwd\">Mot de passe:</label>");
+        out.println("<input type=\"text\" id=\"pwd\" name=\"pwd\">");
+        out.println("<label for=\"Message\">Message:</label>");
+        out.println("<input type=\"text\" id=\"Message\" name=\"Message\">");
+        out.println("<button type=\"submit\" name=\"param\" value =  \"join\" class=\"btn btn-primary\">Rejoindre</button>");
+        out.println("</form>");
+    %>
 
-            %>
-        </table> 
-        
+    <h3>Créer une conversation :</h3>
+    <%
+        out.println("<label for=\"nomConv\">Nom de la conversation:</label>");
+        out.println("<input type=\"text\" id=\"nomConv\" name=\"nomConv\">");
+        out.println("<label for=\"pwd\">Mot de passe:</label>");
+        out.println("<input type=\"text\" id=\"pwd\" name=\"pwd\">");
+        out.println("<label for=\"Message\">Message:</label>");
+        out.println("<input type=\"text\" id=\"Message\" name=\"Message\">");
+        out.println("<button type=\"submit\" name=\"param\" value =  \"create\" class=\"btn btn-primary\">Créer</button>");
+        out.println("</form>");
+    %>
 
 </body>
 
diff --git a/login.html b/login.html
new file mode 100644
index 0000000..c4d1f97
--- /dev/null
+++ b/login.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="fr">
+
+<head>
+    <meta charset="utf-8">
+    <title>Log In</title>
+</head>
+
+<BODY>
+    <div>
+        <form method='get' action='Authent'>
+            <label for="email">Email:</label>
+            <input type="text" id="email" name="email">
+            <br>
+            <label for="pwd">Mot de passe:</label>
+            <input type="password" id="pwd" name="pwd">
+            <button type="submit" name="action" value="login">Se connecter</button>
+        </form>
+        <br><br><br>
+        <form method='get' action='Authent'>
+            <label for="pseudo">Pseudo :</label>
+            <input type="text" id="pseudo" name="pseudo">
+            <br>
+            <label for="pwd">Mot de passe :</label>
+            <input type="password" id="pwd" name="pwd">
+            <br>
+            <label for="email">Email :</label>
+            <input type="text" id="email" name="email">
+            <br>
+            <button type="submit" name="action" value="creer">Créer le compte</button>
+        </form>
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/util.txt b/util.txt
index 40168bc..993006c 100644
--- a/util.txt
+++ b/util.txt
@@ -1,4 +1,4 @@
-Url d'appel : http://localhost:8080/sae-r4.01/monobjet.jsp
+Url d'appel : http://localhost:8080/sae-r4.01/accueil.jsp
 
 Pour compiler : dans rep src :
 
-- 
GitLab