From de2c58d4a1661cbe27c1ebb251305e420acd689b Mon Sep 17 00:00:00 2001
From: Adrien Fryson <adrien@macbook.local>
Date: Fri, 7 Mar 2025 10:28:34 +0100
Subject: [PATCH] clean + merge

---
 WEB-INF/classes/controleur/Accueil.class      | Bin 1975 -> 0 bytes
 WEB-INF/classes/controleur/CreerFil.class     | Bin 2715 -> 0 bytes
 .../classes/controleur/EnvoyerMessage.class   | Bin 4162 -> 0 bytes
 WEB-INF/classes/controleur/Fil.class          | Bin 2212 -> 0 bytes
 WEB-INF/classes/controleur/GetFils.class      | Bin 3621 -> 0 bytes
 WEB-INF/classes/controleur/Like.class         | Bin 1849 -> 0 bytes
 WEB-INF/classes/controleur/ListerFil.class    | Bin 1778 -> 0 bytes
 WEB-INF/classes/controleur/Login.class        | Bin 2284 -> 0 bytes
 WEB-INF/classes/controleur/Logout.class       | Bin 1393 -> 0 bytes
 WEB-INF/classes/controleur/Register.class     | Bin 2454 -> 0 bytes
 WEB-INF/classes/controleur/SuivreFil.class    | Bin 2040 -> 0 bytes
 WEB-INF/classes/modele/Abonnement.class       | Bin 1639 -> 0 bytes
 WEB-INF/classes/modele/AbonnementDao.class    | Bin 3812 -> 0 bytes
 WEB-INF/classes/modele/DS.class               | Bin 1119 -> 0 bytes
 WEB-INF/classes/modele/FilDeDiscussion.class  | Bin 1312 -> 0 bytes
 .../classes/modele/FilDeDiscussionDAO.class   | Bin 3393 -> 0 bytes
 WEB-INF/classes/modele/Message.class          | Bin 2881 -> 0 bytes
 WEB-INF/classes/modele/MessageDao.class       | Bin 5138 -> 0 bytes
 WEB-INF/classes/modele/Utilisateur.class      | Bin 1810 -> 0 bytes
 WEB-INF/classes/modele/UtilisateurDao.class   | Bin 3817 -> 0 bytes
 WEB-INF/src/controleur/Accueil.java           |  25 ---
 WEB-INF/src/controleur/EnvoyerMessage.java    |  72 ---------
 WEB-INF/src/controleur/GetFils.java           |  68 ---------
 WEB-INF/src/controleur/Like.java              |  34 -----
 WEB-INF/src/controleur/Login.java             |  31 ----
 WEB-INF/src/modele/DS.java                    |  29 ----
 WEB-INF/src/modele/Message.java               |  99 ------------
 WEB-INF/src/modele/MessageDao.java            | 143 ------------------
 WEB-INF/vue/accueil.jsp                       |  70 ---------
 WEB-INF/vue/creerFil.jsp                      |  69 ---------
 WEB-INF/vue/fil.jsp                           | 126 ---------------
 WEB-INF/vue/listerFil.jsp                     |  82 ----------
 WEB-INF/vue/login.jsp                         |  47 ------
 WEB-INF/vue/register.jsp                      |  51 -------
 {META-INF => sae/META-INF}/context.xml        |   0
 sae/README.md                                 |  93 ------------
 sae/WEB-INF/src/.DS_Store                     | Bin 0 -> 6148 bytes
 sae/WEB-INF/src/controleur/Accueil.java       |   3 +-
 .../WEB-INF}/src/controleur/CreerFil.java     |  36 ++++-
 .../WEB-INF}/src/controleur/Fil.java          |   0
 sae/WEB-INF/src/controleur/Like.java          |  10 +-
 .../WEB-INF}/src/controleur/ListerFil.java    |   0
 .../WEB-INF}/src/controleur/Logout.java       |   0
 .../WEB-INF}/src/controleur/Register.java     |   0
 .../WEB-INF}/src/controleur/SuivreFil.java    |   0
 .../WEB-INF}/src/modele/Abonnement.java       |   0
 .../WEB-INF}/src/modele/AbonnementDao.java    |   0
 sae/WEB-INF/src/modele/DS.java                |   6 +-
 .../WEB-INF}/src/modele/FilDeDiscussion.java  |  12 +-
 .../src/modele/FilDeDiscussionDAO.java        |   5 +-
 sae/WEB-INF/src/modele/Message.java           |  17 ++-
 sae/WEB-INF/src/modele/MessageDao.java        |  44 +++---
 .../WEB-INF}/src/modele/Utilisateur.java      |   0
 .../WEB-INF}/src/modele/UtilisateurDao.java   |   0
 sae/compilation.md                            |   1 -
 sae/uploads/Abr.png                           | Bin 22686 -> 0 bytes
 sae/script.sql => script.sql                  |   1 +
 uploads/Abr.png                               | Bin 22686 -> 0 bytes
 58 files changed, 89 insertions(+), 1085 deletions(-)
 delete mode 100644 WEB-INF/classes/controleur/Accueil.class
 delete mode 100644 WEB-INF/classes/controleur/CreerFil.class
 delete mode 100644 WEB-INF/classes/controleur/EnvoyerMessage.class
 delete mode 100644 WEB-INF/classes/controleur/Fil.class
 delete mode 100644 WEB-INF/classes/controleur/GetFils.class
 delete mode 100644 WEB-INF/classes/controleur/Like.class
 delete mode 100644 WEB-INF/classes/controleur/ListerFil.class
 delete mode 100644 WEB-INF/classes/controleur/Login.class
 delete mode 100644 WEB-INF/classes/controleur/Logout.class
 delete mode 100644 WEB-INF/classes/controleur/Register.class
 delete mode 100644 WEB-INF/classes/controleur/SuivreFil.class
 delete mode 100644 WEB-INF/classes/modele/Abonnement.class
 delete mode 100644 WEB-INF/classes/modele/AbonnementDao.class
 delete mode 100644 WEB-INF/classes/modele/DS.class
 delete mode 100644 WEB-INF/classes/modele/FilDeDiscussion.class
 delete mode 100644 WEB-INF/classes/modele/FilDeDiscussionDAO.class
 delete mode 100644 WEB-INF/classes/modele/Message.class
 delete mode 100644 WEB-INF/classes/modele/MessageDao.class
 delete mode 100644 WEB-INF/classes/modele/Utilisateur.class
 delete mode 100644 WEB-INF/classes/modele/UtilisateurDao.class
 delete mode 100644 WEB-INF/src/controleur/Accueil.java
 delete mode 100644 WEB-INF/src/controleur/EnvoyerMessage.java
 delete mode 100644 WEB-INF/src/controleur/GetFils.java
 delete mode 100644 WEB-INF/src/controleur/Like.java
 delete mode 100644 WEB-INF/src/controleur/Login.java
 delete mode 100644 WEB-INF/src/modele/DS.java
 delete mode 100644 WEB-INF/src/modele/Message.java
 delete mode 100644 WEB-INF/src/modele/MessageDao.java
 delete mode 100644 WEB-INF/vue/accueil.jsp
 delete mode 100644 WEB-INF/vue/creerFil.jsp
 delete mode 100644 WEB-INF/vue/fil.jsp
 delete mode 100644 WEB-INF/vue/listerFil.jsp
 delete mode 100644 WEB-INF/vue/login.jsp
 delete mode 100644 WEB-INF/vue/register.jsp
 rename {META-INF => sae/META-INF}/context.xml (100%)
 delete mode 100644 sae/README.md
 create mode 100644 sae/WEB-INF/src/.DS_Store
 rename {WEB-INF => sae/WEB-INF}/src/controleur/CreerFil.java (61%)
 rename {WEB-INF => sae/WEB-INF}/src/controleur/Fil.java (100%)
 rename {WEB-INF => sae/WEB-INF}/src/controleur/ListerFil.java (100%)
 rename {WEB-INF => sae/WEB-INF}/src/controleur/Logout.java (100%)
 rename {WEB-INF => sae/WEB-INF}/src/controleur/Register.java (100%)
 rename {WEB-INF => sae/WEB-INF}/src/controleur/SuivreFil.java (100%)
 rename {WEB-INF => sae/WEB-INF}/src/modele/Abonnement.java (100%)
 rename {WEB-INF => sae/WEB-INF}/src/modele/AbonnementDao.java (100%)
 rename {WEB-INF => sae/WEB-INF}/src/modele/FilDeDiscussion.java (83%)
 rename {WEB-INF => sae/WEB-INF}/src/modele/FilDeDiscussionDAO.java (92%)
 rename {WEB-INF => sae/WEB-INF}/src/modele/Utilisateur.java (100%)
 rename {WEB-INF => sae/WEB-INF}/src/modele/UtilisateurDao.java (100%)
 delete mode 100644 sae/compilation.md
 delete mode 100644 sae/uploads/Abr.png
 rename sae/script.sql => script.sql (99%)
 delete mode 100644 uploads/Abr.png

diff --git a/WEB-INF/classes/controleur/Accueil.class b/WEB-INF/classes/controleur/Accueil.class
deleted file mode 100644
index 1a28c778be963150fd134e64f332347b3b53d4ab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1975
zcmX^0Z`VEs1_oP(I4%Yz24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B?
zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b
zsl~;a`FV^Csv1$6K6tc(m05%A;saU4&&Z&nL4*bl20=y!*3{g@%p7h8VFnR)22mac
zF$Qt`-UM65$iS1HTH;tzQk0ogT9V4hpr+xIl~|UjpOcuEt{+@dl$n=q4RQiZ$UiA7
zHMs=rMoAt9DF$gq2EO#v66gH9lGKWlfW(pvMg|eEqhUIrh6ph*Fv#*S$T7$>GKl9U
zW~Vym=OrhWglCpyIOpdTmn7zu6ce@{Y8W?zB7+h;gE9|;3WF*mg9e^31xIgCYH>k+
zUU4cT15a^kUP@4EN@h`NatR}YC^qkgu`{SMG6<lD0~doPgBCl3HV=ai$P=3RMd|v9
z1&PTSsrt$Jxw-jy#rmKyfQFiDadKioYG_GjPB9|`cPg0YQIeZu0*YQe9tM2|1F&n5
z1797BYmlM?8uprD91KQ`3=;a`u1>n1es20@rK$Rf$;qXunK^n{#RVV>On4Yf8O#_N
zMAB1BplQ)1v$!C!Bsn9sh>^h@i$$PVM$Ho#8m+k*EEp`=8LW61tQl+=85GgO9YY5r
z1AAJ2QF&rf3L}FH$Wl}rpqUM-%^D+bz~v#)XRR5=&S1yLAe5Y+S5lOplUiD&?+EcY
zBLj<beo87M1HVsZUaDVdZc=JdNMce>DkB4HO1^t)2_r)orv2!-9;ZVv6~bM_$iN$1
zl9-(Bn^*v~kju3qIkli9Ge57Goxu%DE`)juu8f_*gONcPoZd3?^*#OJ5{wL7!TF^{
z$*FFcAfNC+J*x*&%E%xYRGL?knVTAxS)7@alj@k4mtT?yww94W9V09g;nMoysYy^L
zSTi!PmL=wtrZO^cz|s&SgMd?heo1jjQDT8_YDq?ZN-;khLm(GJ5JNCKLkK7jhcYs#
zfZPBnCNlHN^0QN+=^m1;-4c^a@{1}N8D@Y29aa=T6+#U4NX$#gNiA0K$<NO&Eda$m
zOc^wjBc*&4jUkl<saTXpBdLew6eJ<25zdJ@Il-AFsn#3};fxIIjQTnG>6v+q3_PBB
zd8tLtIf=!^sm1IJQH%_#7#_stZgz$kMg}?jN*Nj0Af9AUWUysmVgLaq21Za##K6d4
z4=NZL7#SED7#LW!wlgqpWME)mWN=_$U|<6a@-nb6I5IdfFoBiMW?*JuWnf^4)n?ww
zz|O>Qj6qm?Cj&1dgOI>Z1|cSf;|!uY+B+E}7#Vgk$S^SMWKdvY*a%VKrwdhcfI)2s
zgN7B0wvd1%%T5MeW(I8`!<`JqObpsOI~mNG89+{80y{y8frEj8L4ZMuL6AY4L5M+z
zL4?7WL6pInL5#tdL7X9mL4v`Vfq{XAfk{e`!3FGSCI(jqcLo*)PX-1CCI&ACZw3Yi
xJ_bex9|lGS-)IKLVg^43e+C8y4hBYs00u^eFop;Q1_mw$Mutd+Xogq@NdSIuG_n8y

diff --git a/WEB-INF/classes/controleur/CreerFil.class b/WEB-INF/classes/controleur/CreerFil.class
deleted file mode 100644
index 68182c701dd8a0f5026c6dd3e090b40856ded113..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2715
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
MhGvFVhIR%?08H)h%K!iX

diff --git a/WEB-INF/classes/controleur/EnvoyerMessage.class b/WEB-INF/classes/controleur/EnvoyerMessage.class
deleted file mode 100644
index a85ec4e38e5a09c52765c899b4c08ee18966cc1d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4162
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
P21bSl438L|Fh~LbQo?@5

diff --git a/WEB-INF/classes/controleur/Fil.class b/WEB-INF/classes/controleur/Fil.class
deleted file mode 100644
index 3ed1a7e3d82fe9b323a3251fdcfa8663664d9470..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2212
zcmX^0Z`VEs1_oP(A}$6d24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B?
zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b
zsl~;a`FV^Csv1$6K6tc(m05%A;saU4&&Z&nL4*bl20=y!*3{g@%p7h8VFnR)22mac
zF$Qt`-UM65$iS1HTH;tzQk0ogT9V4hpr+xIl~|UjpOcuEt{+@dl$n=q4RQiZ$UiA7
zHMs=rMoAt9DF$gq2EO#v66gH9lGKWlfW(pvMg|eEqhUIrh6ph*Fv#*S$T7$>GKl9U
zW~Vym=OrhWglCpyIOpdTmn7zu6ce@{Y8W?zB7+h;gE9|;3WF*mg9e^31xIgCYH>k+
zUU4cT15a^kUP@4EN@h`NatR}YC^qkgaWJSeGB9PPfMP<Ehd~SEW>7c<Bo-y+rk11@
zaWUvH=(02D@i6E!7%(yjB7)2_uOu}+wTO{{qad-UIMp)`mnEL;3`UF$0tlTDudy?j
zFfxeb=BK3Qr0P2+<>%$4=BDPAxFqItF&Hy2g9vjT1`7sDMh1?|Vu%7p1~Dw&@YIYF
zVqj#D1-aFRhryP?j*)@AEHS4v)jtiS!xK4Lq0R=!s{;>%BZCt-sE|{JIu<*S(h4+T
zXohhxxG*w^=!d&H>3aIP>6ewJ>ZfJq=w%fbfP&MFhryk}gONcbJ+%ayNnA3E3ld9`
zGeDtcj>Qs?J5e($hDK{{1}_G0b_O3F244n0Mg~Rn1c9N0k%2uezo<O1D20*11!O6z
z4bV~ms?8cB)57H;>B?F&jGZBXk%2EcKd+=HKPR=cNZ&0phmnEBIX@+pk%8YQGcVPz
zG&d==C?qi{CzX+bH6`CYwS<u&4AXA(q6nuWFcrdG!^prJT#}fa?VDHtwUEoTB0067
zBr`v+n4KYlkwF-o@-p-FJ^kS_><m#@$_%Jq;i?!JxPtRbi;`2_GC@A!a0A6|Vp$?1
zgJe)?UP)$dYFK7*W>QY7V_sf<Ng~)vMh10^FieC?>xZW%L2a>SWMBm+Qbq<AP`Y7c
z5OB)RFDWi5N-XeAEy>7FDduNmNakWlVMt|XNCOop>5L32V9$WdtjxT!{OnX{(FG}E
z+!B*Z@{1}N8D@Y28&)ns6+#U4NX$#gNiA0K$<NO&Eda$gOc^9wB8#AC45=(gMV5pr
zkH(TSkc6N{I49=h1ZS3{T5~XDGBU6;>gVLAXXbG*WHT~wGwSDL7MG+Jfs+xBXI@@v
zk#kOBadB!fI|HaH!SFFQkFYZoFfz#DSIWr12Jtn6B7;8z69Wh^F))JaNd`uSKv1#G
zz{tSJz`($&wVi=+BLf2iBSR1a0|OgakcWYhA($bAfeEbi2?H|&8v_GFk2dp826iTf
zV+_LDI~jNx8H5COG6*p-9A^;K(cZ}*!N{<SL56{0CxZeL!$xf(wVezaObk01wCzw-
zA7C)FV%g1L9J!sr)QVM-Rgy(^8-v*_Br~j#%#hu|V7-&Uo|!>g$ayD&D-(mZ&Q1nT
zW(JUpnZPbKV&Gw5VBlkrV&G@cW)NV|VGv@lU=U{TVh~{nW)NkFV-RD=XAoy7V31^}
zVUS|zW{_qG1?ymz68y*D%*f7Q$j)HQ5C--=6GJ#dBm)aWGy?+z6GIF`ELbHYLmUGm
qLwqy?V=+SlLn2s=i6M!Bks$+2W-;V2Ffed2Ff!ya<TDg9NCE&xMQI2C

diff --git a/WEB-INF/classes/controleur/GetFils.class b/WEB-INF/classes/controleur/GetFils.class
deleted file mode 100644
index bd0897871fc8577c174b302be6485dcd1d0a94b2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3621
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
H0}PS?LVgTl

diff --git a/WEB-INF/classes/controleur/Like.class b/WEB-INF/classes/controleur/Like.class
deleted file mode 100644
index 7a4d000115a1f13997a308fa51e77f975a22ee65..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1849
zcmX^0Z`VEs1_oP(WG)6K24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B?
zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b
zsl~;a`FV^CDjJ$TcyxkQS#vP(F*2~G<|bz5a5D%n2(mK>@h}K8h~RfLST7?3PkL&J
zV@XL-W>RTMDkFoMhEG;vS)zVUVqUs_a7j^SUb;2N2{0l5q^#8B5^Ht_F-8Ufbd?}K
zOYksAGDtBp@TI4gIOpe;q*jy!B$i|_GKhe^0y76{v=9RWgA5OYEQ1^)gLrOYcB*rJ
zUUFhdcxFk4bADcNNn&0}F=0nR4dZ4|U{GXdP~u@wW>8^d(7+RL;3y1AEiTB<D^6u(
z;3-bcO9@I%$t+4uE@5O4#TE!*91LoV44k>C#l?x~sh%ky&uZ{6Xo8#$3dDfKqQu<P
zlGGwD25kl%b_QJ@20aFSMg~DdD0$|Uq^749F*0xzBo-B?dgkG>%afhKkdZ+!H$Npc
zCsp4UVx>!BJ{N-l12c#);bAakFk@ukDlJG!EJ^jr%uZ!wVA1f@jN)LhU}RtqN=-{G
zN-YAp(Taz`8stXK^wbiM)Wnq3A`S*yMh11)qN3E&B88m%qGE-VRE3;Gh1|^IRE5I}
z6teP5ixg5y6>>7OQ}sZBYR|*qz~IQpzzGT_*P^2QB1Q%=4Noj7C5)ZHnUR4%IX|zY
zC_g8)v`8Q7H0S)3R7M7VpUk{eztY^K)S{5Yq?}Yn26j+(%1lmWWC#NVI{qvM%_G+M
zvII)ZT5E<eGVlhMBqnG3CKf=g<Z`V@PAw?O%+D)kXYgiZ5C%t3X1>0sKU{{L!52&J
zf#!6$Dn<sb;QZ2}<W#pzkY6}Ke$@k+#>gNURGL?knVTAxS)7@alj@k4mtT?ywv&-T
z9mD;JaB2PU)Fh}i){G3SWr;bZsf-M)&|nmB%Fiz;E-6YZ@J%hr$WJNeXJZKCVhCr5
zU}uN~WuquY1{IJ4Ao({luPi@16`GA9Im<0Exg@`+l96EsD7ay{5vmYks7GR6N=|CA
zicfxic4+}9uwlxe`3x!EQ8b2B7NlZP9*v|PT6`dvC{QDu6LWHcGfPsfIT&IX8Q2;1
zbMn(O^B5U;JoEBWi=1;3i;Gi>*%{&)8B{Smh|S&X42g^ka`=@pGO$5B$)L#K#K6P=
z0!$2ypaP$Pk->$5fkBpmk%5tcfq_+PI|JiJ1_lO323H0K1~#xD9|H@68-qIo6Ikgs
z24)5}1_p){?VSwlj0{4&I~n+y7!ELq`sp5L5Y^G%$so?iu!}*Ofng_uJQKr4Z6Vd2
z4C+h_I~cUgSavfQL~ds=vSO8F6=m7RU_6sSL`Pf5d?$k?6GZuP20k4@#xFuPI~nYl
z89**!0=q<ufs28GL5M++L6||5L4-k#L6kwAL4v`AL6X6iL7KsxL53lML5?ArL4m=8
zfq_AQf%y-EIy-~tUj_q4b_N4322Zemm>9emd>B|5{1_M*m>B#S0vH$=_!t-&0vQ+?
pf}$B1iy49$LKqkrI2afiLKzqtq8VZt7#O%17#ZRi5*U&gBmt~^`al2x

diff --git a/WEB-INF/classes/controleur/ListerFil.class b/WEB-INF/classes/controleur/ListerFil.class
deleted file mode 100644
index 2b87ced72d52b7cd0b0429fc1e91fa962be23a88..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1778
zcmX^0Z`VEs1_oP(U@itG24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B?
zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b
zsl~;a`FV^Csv1$6K6tc(m05%A;saU4&&Z&nL4*bl20=y!*3{g@%p7h8VFnR)22mac
zF$Qt`-UM65$iS1HTH;tzQk0ogT9V4hpr+xIl~|UjpOcuEt{+@dl$n=q4RQiZ$UiA7
zHMs=rMoAt9DF$gq2EO#v66gH9lGKWlfW(pvMg|eEqhUIrh6ph*Fv#*S$T7$>GKl9U
zW~Vym=OrhWglCpyIOpdTmn7zu6ce@{Y8W?zB7+h;gE9|;3WF*mg9e^31xIgCYH>k+
zUU4cT15a^kUP@4EN@h`NatR}YC^qkgaWJSeGDzu%yE^H5`nl<sm8R<FWEPjC7P)2S
z=w%fbfMQ6Khe3-$n~^~zJ+%ZH+b)^K1&Jle8L35#4CdGj#)x|ijn>=@x(s^k4Ej6_
z1`LLb42tMJ!_dLVz@C<0RGwIr!pPtPvJ^F4Lz6R9n>B_D;PQ|Fvepb^XE0`D5J}F@
zD=Es)Ni8kX_knqxk%7fIKP8osf!`-HFV(L!Hz~C!Brz!`m63rpCEq=@gpnZ((*@``
z3#U^s6~f)b$iN$1l9-(Bn^*v~kju3qIkli9Ge57Goxz%sK^UBBGxPO5{oyj~47OOZ
z0My5DRg4T=!TF^{$*FFcAfNETy{iW@l953&s5Gx6GdDFXvp6#;C)F`8FTW%aY%wE)
zI!1UV!lm`YQ<I=}Su--QmL=wtrZO^cAyN_}gMd?heo1jjQDT8_YDq?ZN-;khgBurv
zJA(&1gC{7jcrh}lfLsB|j+uF7`Pr$^TnWiOZi&ey`9+nC3^PCh56f~;g%CqM67y1W
zQj1l5^7FGx3qUCVrVN^ykTN`q#*oT_R4mG)k<>#=1LOh%YJ_uQPEK%UNvbsmgAXGE
zJEMM1etKpeBLk0TUS4XEb53G$acVI;gFhpKDuxHKxtpCKkdZ+Szfwj9Hi#z~6d8;d
zm>58SiGdMR;xjNZn1Bi(21W)(1_lOJt?dkq8yOfF7#U0%7#P^Vg4_&@3}y`G3`}69
zc?`@9%nS?+HrmWP8Q7T^jxh*p?_}U*WDpYA$sokUaGXI@M|&rO1S7*P1{ns1oeT<0
z3>&qD)OIpxFfnNB>}1ekW&qj11hzqpft7)QftNvwfsa9(fuBK#L6E_kL5RVEfq{XA
zfk{e`!4m8aCI%}88wM5zI|c>@CI)*32L=WPJ_bexM+Qa)r)UPoVg_dh7X}6f4hBXB
ZR|ZA~Zw6lm1_mw$Mg~8I0EQq2NdWf>|5gA1

diff --git a/WEB-INF/classes/controleur/Login.class b/WEB-INF/classes/controleur/Login.class
deleted file mode 100644
index d41d887165f8658b7f4d0bb7ec25ce9a839d7bfe..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2284
zcmX^0Z`VEs1_oP(GA;%t24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B?
zl7e7}03!pNO=ezZi5(*Yvxa6E2LlHqgP4A}tCOy$pPPPJX{vrsetKq}URH4dHv<;~
zH#-9l4+Ad)A0vZ0A)|v*3rkarOBfkM(o;*I9GA@Eg2a;KjMO4V26GLcti-ZJ{hY+S
zbp7CxqRhN>YfT??Q!zAJb2A7q2(mK>@h}K8h%hoJ64b%Sz@C<0RGwIr!pPtPvJ^E)
zpdkUZ$Qr{1aQWhb{Ji2+YfvbOF*2~G<|bz5fC5E=he47-ijjdQJ+&ktu_!S&wFKlp
zHIP+U{D&sQ#UR5V%g!Lj!ypebL^HoAT|coPF*zeuKRG`)H$Sgfza+Jy1R6rF#mR{U
zsi7sAImL_&+^JxmM@epu2?v8BBLi1%eo0DdL1J-nDm#NRBZFveeoAUisy;}4W^rOk
zYH5*6Vm=px5(6`cP~%}xXV73|U`@_QP0nUyP{-n8EO8XY$)Lrc&Ca01!=THc$H*Xn
z6pfX|C8@cL49xkZC5#NB5Y3tS`T<3mc_qOmMX8Co)*K85j0{4~`FVM%6`A>Y3Pp!k
zmKGOhrgAYDF&MKmnD8)|GMF(k2!l;U)yv4hUH~#FCy$Xq6pLdu!$9$2!NXw5V8zJ5
zm7ZD>oLXF*nV-kVprV19wvaLdSd}$5gAIc%JA)k$gFS--{@erBz{tQ;oLb^oQc{$e
zR9ccsFa-URvQm>vtRc>H;$d)RaA9QNOHVCv&d&oyazJ891|x$A*r{mAM2LZb!HtK(
z9h64Ia}%>uo%8dO6HCG~OER4E^NLFn^Gb@j89W)h*crTe7<@n>sDYj{ko*fS4T4f3
zNgC{pyp*8Sl+2>k<Pr`BKSl;&L<AjPnVgYddU$235CbEF8#_ZFBZEM4eqKpYeoks>
zk-iV8fM8@`an4UkWn|#@$;?ajE6q(xEec6Y%1LEpU`@$)Pc30&2m?hJYSzPa5V**|
z%!8N;AuhMp3}a;Aa;->CEhx#%&nsqUh(Jm?p8jwdc7`Y{@d?e^a8-;9Y$^Ex`Jh6J
zH@GA*Iomg}0PG8PhB(x84lb@38MuP;ON)|I-7-NQ<pPI<9w^;1GDrrM=9OgTriNt}
zXC~#OI_Bl&mn4GS$jG3MQN|>~rS-#8lc3JBW@KP3OUx-vWn^H36vK=R0#5n)CB-F0
zi3Pr?B^miC#r$jx>0AsM44Lc<S)k;R&B&kvasi}R&CDyy&rXGw9gq~`mY7_UUsTD+
zFas1Huv7+B2r<+nF)t-2wOGX`KR>&)02CWAWzb?8lCQx9H;TrP%7RoZ%A=9g!?FO9
z5Y!0g#GIVq%#u`V4u)Jt22Mu(#N_1C)XW?XhI~c_c1BnT@Ob9sr4~8ofC{-{c7`HG
z22~9IV)F(&LkS~;9Db#Y3~UfTGbl0yFfcKI05bz4s4it-WC&tlV31{CWME`qU|`kS
z&cL{lfq{XMA((-IfekFk%fQGG!Vt>91XilUz|6qRz`!7&EyTW)fs=_rTW2Q&KQjYD
z7pSskVBlxqXAocr1DnFc5Y7<Ez{n5{H{}omGXom~14E&<kmybZaVCZx4AOquLJBap
z70Yf0rO53JDpstLth$mc+Za@5GU#q%&=k_&#$c$ulfj&kK}b}0CxbOJgO2u221iDQ
zT@0=a3_BS-m>8Bb$beM(ZeuWn%lSj)K+a?Wdrpgii-Cbbn1P2ugh7%)ltGC>j6s({
zoWYbqg29<Vk|CTynjxM+hM|B#jv<Bt<RPYi4B_kyv0$Vmf#Nq7hIj@B1}26ChC~Ji
y20jKxh9m|?hU91l#$tvPhE%W^6GIvUBSQ|D%ws5EU|`^4U}Pv{C}t>SkOTm}G<+BU

diff --git a/WEB-INF/classes/controleur/Logout.class b/WEB-INF/classes/controleur/Logout.class
deleted file mode 100644
index 47db334fd4f25652266583b20ac7307fa5ad19d7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1393
zcmX^0Z`VEs1_oOOM=k~?24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B?
zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b
zsl~;a`FV^Csv1$6K6tc(m05E$@G<bSGYIf72oiECSOX&iS7u&WVoqjCVo55<p~5^2
zA`GI841DRSCC>SIC8-r90f{9Uj0_?gAnVH#^>Y&Q()EK&iZb)kt%VpE7{qxPBp4(a
z8N_oFvs0b(^O6%w!ZS-Uob&UFOA_-+iWwQyG<>oW(R5-ljGIB4L57_{mWM%(L7tI8
z1CM9H;U1J)T#%nvoXW_+Q=FQY5|o;fS(KVw!pI<s&Au>p21P~&!Q}kBlA`>a)Y2k-
zpZxUv(h^1n7U%qwR7M7VpUk{eztY^K)S{5Yq?}Yn2G*2(_tX+bhA@zM_@f*eXV&;)
z2*uIXnqiC#yul@j$=SY%1yBpQTq}}O3raHc^NQISG#MF$!NHc9ukYy(mtkkn#*ze~
zDG#oSk%22XzqBYh)h!d`6K;rK^+4t^GDrrM=9OgTriNt}XC~#OI_Bl&mn4F1Wn@st
z@IfM6T0cBB32KowBLiz$Voqr)BLlmB4m2PIobvNaic5+T3w%>cGV)W3`PmpuxEM?s
z%-9*sL8-)okwFFI1V|dn%qz>!PK72VNWyVTOfJbUs$^uC0Sa<hl7T9O80wLjmy(lO
ztm2cOpIur23UHV*XqrSyYbY8+DhpDvD33-`@1K;Fnp|RyoHn6GI49=h1ZS3{T5~X1
zF*2|-g8ZDB$H>6rnU|MZ<eZaOT%20W&S1;Ppo-x^Z0=@fuxDhD!>^Q)feqqG21N!1
z1||j&U}9hd6+#S*3`z_P46+Q242%p646It)85lP*FfcGOC^IlHuz>}67#JB;7*rXU
zz)GVSm>5_X7#LKvnRha<Gcow-9%JCt-O0eq$e^RWlR=1)VHblK1H(=RDJBMxNlajq
z#28o^7#R2%I2iaDco+m2gcyVvlo^B>)EF2TI2aiJFbJ_T@G+=^?POxmV9;V<VbEb<
zU|?d<WzYlbWMt51U}P|eW?(F4Fk~=-=wmQuU}Uglux4Oj;9_88uwk%caA1%G079{Y
AkN^Mx

diff --git a/WEB-INF/classes/controleur/Register.class b/WEB-INF/classes/controleur/Register.class
deleted file mode 100644
index 3ad8ee7a3668bb5e3ee876f44783e5867731b463..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2454
zcmX^0Z`VEs1_oP(DlP^l24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B?
zl7e7}03!pNO=ezZi5(*Yvxa6E2LlHqgQR}AtCOy$pPPPJX{vrvYI<gINotW^R&fD0
z0~Z4~I|C0711|#~BZE32(}PkAOH+$W7#T#;Q%j&6m(1dV#FFHU)FMU(a}A%Y#Ii*F
zoW#6z{os<K%)E4KO&@eqF*I6pGYBvUvNH(rFbFe<Ffu3-)WOKWo|a!!o>-K^$lwC9
z6g5<!fdRG18p8!}`Qn27yy8@A%`kQbF-8W_-29Z(oK*eLlFXdU;>42F(ju3{d@cr2
z24)ThNk#_N)ZE0(98jQ1^DxLT$TBkUq^FhyBo-y+rj~&GuLg1o7XPCOaWTj<D6lgq
z@-QfY4AIOlO4m;;NKDR1)lbgP&CSm%)-Oq|D1nBcYjJX7K`O{i#f%KxsbHQ*Np6k_
z2ZIVD16OW-NlI!#VsUXQ2ZI_T19M(}F380iJPeu)S|AM|H@jA37MBz=GKgYxU=#;~
z4#;ywMfpV>40?<VGCt~HpDLslmnfthUYT`xfkG)bOb)Nq19{(ohry7+h>?M(IJLyF
zq@*Y_sk9`OkwG1c=|~B}KPf9Uxda^8CX5V1n1Rj3V8&q1&S1gAV98*`$RG|*OC_1P
zsro+o$%#2Gi6yBanYpQ8PnI(>NNa%7R#~DxrV?u|24e;rP^PhEWC+6VEND7Kawv)j
z7Q;2eKp||;!{ET+$jHE!nOB@zRKmz0uHl2}Cu_|xP>4D6Ft{+dGBR+br<Me#78hsc
z=P@#<fIWbkbdfSNSd}$5gFAx(JA()Q%nw!zvdD{v!JEN{k%2EgwZu6;50s7q5=$}|
z8AQOAp`}D21_lN{9tM9<G8E5E%uaRA&r41$3C}FaaL&&wE=kNQDduJfWC&ts2<Bl3
zVF+bp&_K_eNG=AKNkOTQTm?=Zc_~4uDVas7$t5@vUl=<>I3t5_a(-S(QGQNpX_0;q
zw18q{U~$e*No8c<_sPsl^()OyN-YXWOv*`RWMECncTX*0WC#PrEY9$Qx&~ZiVU_{7
zoNcWc#>l|sT9KSuP?DLSSIo{3hb8EtB?w#@J3|5^gD^P3X6EaA`okp{8Q4<t1M)$I
zCU0;_Vsf@`Vgc9}><lT43<6*sNW~>116Oc<X;E^jTPDb(ys*H~11V%=kPIr#10~3?
z%;L<XoK(lWy!?_xurnDM)G>;=M7Xqmcxn>V$<~YvtYwKgrKyYzobbwkkwL&IKfk27
zq$sh#H?<@qKc$$TjUktdA&()SouL4fLJAofR6ve^6z-XMW%=2u&=LxgXxtK$OY(~<
z85w4PVg;7apb8;|dL-th<fIm>_~hqjmllBH1f~on%YnlKMPo>1K`IvI(MXvVR=OYw
zL5*-u%*hGPEJ?NIU?^r};AGTKOinIM&CFqB;PK4MOD%HF0hOM`><nd$45}Dj#O88#
zh6+XoIs8f)8Q37+WKd)XV_;$c0cHk9P(9AT$PmH6z#z-O$iT?Jz`&}toq=&90|Nsi
zLnH$O0~=V7pMixTiXobT39M9yfti7sfq_9lTZnxp11A%Mw$4rler5)QE>J^(fkBvo
zpFxBn25brwLo7o)0}DeU+>~z&><sJ-3=EyS8AKzuGl=_X3rXx`kYZxk!60YFqAjEh
z=dfxEslqvIx{@s07}RGn$ZHE}3+e7;&}U{qbH{Q9bKTtx#*vb2k}Q&}I~Yv2Ggxn9
zu+!ej;KaxvBq7PNlfjLdK}UNhgC`@yE(Tu)hMf!nOkn3Tfjw=;z{|kEAi==FAju%g
zAjP1>AkCo9Aj4q6Aj{yyAjc5GpuiB%pu&*Kpumv9pvF+npw7_2pvjQLz`!8S!1SLX
zgn^x%A&i}Yi=82mok5hHAsK=g7>v=vBb9-Hfr%lFA)SGNfscWaA%lUDAv2nRv6vx?
iA)A4LfrEjOA%}sHp@^Y`fq{XGfsvt<p`4+TK@tG&+pG})

diff --git a/WEB-INF/classes/controleur/SuivreFil.class b/WEB-INF/classes/controleur/SuivreFil.class
deleted file mode 100644
index a300bccc79e70957f3d3a2d461ecbe356c26c148..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2040
zcmX^0Z`VEs1_oP(bS?%a24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B?
zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b
zsl~;a`FV^Csv1$6K6tc(m05%A;saU4&&Z&nL4*bl20=y!*3{g@%p7h8VFnR)22mac
zF$Qt`-UM65$iS1HTH;tzQk0ogT9V4hpr+xIl~|UjpOcuEt{+@dl$n=q4RQiZ$UiA7
zHMs=rMoAt9DF$gq2EO#v66gH9lGKWlfW(pvMg|eEqhUIrh6ph*Fv#*S$T7$>GKl9U
zW~Vym=OrhWglCpyIOpdTmn7zu6ce@{Y8W?zB7+h;gE9|;3WF*mg9e^31xIgCYH>k+
zUU4cT15a^kUP@4EN@h`NatR}YC^qkgaWJSeGB9PPfMP<Ehd~SEW>7c<Bo-y+rk11@
zaWUvH=(02D@i6E!7%(yjB7)2_uOu}+wTO{{qad-UIMp)`mnEL;3`UF$0tlTDudy?j
zFfxeb=BK3Qr0P2+<>%$4=BDPAxFqItF&Hy2g9vjT1`7sDMh5mouyhe4gBTWHcxr}m
zFjzA(Na=^WI_Y})x#^dcrt0Tp7MG+Jxn<_)Wfd2Iyl2b9V8>w3$RLuQS^`b9E}6vz
zi6zMyAYYhcF&UH`P%{sPMr&>cM+PT$24@}y7Y0{G21WD;!qCCUz@C<0RGwIr!pPtP
zvJ}+@Xs(26v&P6oaCt~PTWf}~Gq^J{h$QFdl@#UYq?Q)x2bX4+6{Wgm<}fm_IOnIN
zGBWV{Wag#%mF6a;7KJ1x<)kt)u%_g@r<O1>gkib>y@0^!6ikJ1H!(8s2A3ozXZt1=
zKrQ5Qtw>HSD9OyvD`sc#XJiltr-#gZeNTV53_C+0mYfXrF<ccR16Oc<X;CuBhpCJV
zd~omTfsABikPIr#E6L1F4a+RfOv*`h%*)F!Nd#NW$e@l9o{4a2{qWQzs9n~K46J2|
zIi;zL3|#ufh~N}(%Fiz;E-6YZ@J%hr$WJNeXJd%sVu)slVP}X1W%)Qp1{IJiAf-xX
zURi#2DztEclmc#v$tC$km5dBCKmiXcIiLz5hI%CCrR1a*tN7&SXO|X$QUFXDB;z29
zplA%KEJ#I`ges3lD(9eu8Yp4I422ruoS2gnoLQ1;&B2hs$iU91pOc@Sna9Y$<C&M2
zTI8IQSX`W1%+8R^$e@bhL2T}3XGmpaki)N(k%0~3Nd`p*HwGpK5MW|p1XWxNj0_&2
za+HCQfsuiMfmLfe1LH;p1_nk3PX-1CHn1QM10#bMgEs>cSm{~@W(GC}28L{H=A8`e
zObo{ugtd1v@G>$83G8GLVq!SXAgZIilR<)!VHbl81H(=R1tx}#+CpkO88ny}b}(q$
zp{PE<U}(j%o5478JA<het0b!=i|jTAGi@QOoeVZi4B9$78621yKn`L8J4lUzlYxPO
zk3ouopFx{JfI){rh{1wEn8Axdgdvzglp&fyj3J9boWX~Ifq{jANlK8x7wiot20w-X
z1{Q`O1_lNuhG2#euqliTp$v=+VbKhX#SGyL5ey6r91M&MkqnFs@eGL!3=CWhj0{N(
JDGX^0k^oBeL5%<a

diff --git a/WEB-INF/classes/modele/Abonnement.class b/WEB-INF/classes/modele/Abonnement.class
deleted file mode 100644
index ee41e5d8f300de99d400c65350de040019988fdf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1639
zcmX^0Z`VEs1_oOO2QCIC24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3Vi-29Z(oK$_sr2M?R)ZEm(5=I7r(vr-a%;Ln7
z)Y2l?+{DZrMg}1tgt5UTMVWc&)*yrUco_H@1Q;1uGgI6^${0OCqCz|j!VDse416hx
zC8@{;i$Y8($;?gF_sLIA%yCI9Nwwx;5MvN$XOQ4wkYtcT@c_goMh5n>#GKMp|1?Gh
zH4TUnNdB|dL=uANuohxqV36TqkY$i#WDw6y%uaRA&r41$3C}FaaL&&wE=kNQDQ0A_
zL^cen(-YG$Eao#ZusG+Zq%tz_`();&`jzG;r51%GCgr3uGHByA6wTk7VT=sI>8T~5
z7@;kqfz?joVr+^<u~-N)nj<~6#1j%N%o>`Wj0_ybZ~+z#PmmJ9^wbhi6d=cuILvM|
z*D^8)7GtWGfLe~G7-Tp{Nj@Y@85y{O^Gl18Q{6H_0mP56O%If)7#Red^7BiIONtT;
zd{av@@>7cW*%*wu7)%&U*%{10v1rc7paN0~N!FQpW%=2u`Vhk*5$l$iT#{c@$;dDR
z>K<_VfGUI->XDe2l9O7j;*+1BU0Ps`8O=x{C>ld53sSKtk491t$!I7E5o&~UVopwQ
zW=X0w2ZJRegC)Z2)#!Q5mQhCmoQpsV)Qn@xSj))3<C&M2TI8IQSX`W1%+6rL$e@Z5
zB-nh)&S1yLActQmBLf>GSQr!;I2f217#Nrtm_X$N0|NsSD2Ib-VFnQf1_n+BMo>Y+
zz{nuaz`&r$z{tSJz`($&wVi=+BLf2iBZC410|Tf`0+B2X++gJ(Wgz7?3``6x3=9k+
zAmv)xTN&83WVSN!YUyre5Jcz}V_;=qVBlq7Vc=unWZ-AuV-R2vW)NgxWKd#IhFUBO
zw|EN!`v$nhY+%=jFfcNxFsMS6DlssD{lo^g5Md3(krE8743Z3t3~CJOQ1!@0^R7WN
zT84p<L4!dPsuW?g^i~F5bfXm*Siu3L#h?vUk8HFcx~o+f7#VaJbfHQSMr)%44#d?O
z46I;B=)nU-mw_4VcTue^4D4E47<jd|FbM8o5Z%Qf&A@<e6-co@I8qH53>g?0I2afi
Xj2IXhEEuf7vB$_@&0x!5&mai^F<f=4

diff --git a/WEB-INF/classes/modele/AbonnementDao.class b/WEB-INF/classes/modele/AbonnementDao.class
deleted file mode 100644
index 81902b953d1071f9235d21aa8cc166c1e97b8116..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3812
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

diff --git a/WEB-INF/classes/modele/DS.class b/WEB-INF/classes/modele/DS.class
deleted file mode 100644
index 0c876cb2214110b5d54f530a86c7693661d5ef41..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1119
zcmX^0Z`VEs1_oOOdoBhh24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00S4h9ZJ2GRVYbiIQ7;*#{D)Z)S%J(r@)veY6j1}+9}b_O0E23`g}Mh1R_
zNzOTm#l?&a>}mN$eu=rMj0~z8J_y<1lA_GKbZbo{A+QE(b_M}P24RFk*NWuSf|AVq
zJWd8724Qvv5grCn1~C*j2UixCq~<a*Fz1(+FfxcjjLgi}4=BpaD+w+sN=?kQ=3?My
zkl<mEWRPNH;7U&|@l7o*PE1c_WDwCnb_3K|TnsV{vg{0UJPh&-3NYuOn#jn&UH~#b
zCy$Xq6r0b&I2e=|8RWB4l9H_u!DgkeUr=0_Q=D2<rk_+=V#L9q!pI<!Uy_lUo0ylH
zospQFk(Zd4np#rI!Jx*-z?_?($;F_-pvlgl#lxV@pu@-@1`eCz!W?}_4EQGIC8nnq
zF*5L`r<OS9=jEj)gMy2Z!553GAYlWJX{c8*MWEpUvH@Y7H9LbIBLin{eoAUis=iAw
z7lSSXGbe*CgCP%t5rZ)!14m|FaY<rcaw;POw+~#IH6sIybAC!HBLlxrW?rgaX>L+#
zQAlD^PAVe<Z*WOsa<*?`0hBKeiwO*yEm5NzoOIY3tYHy@s-BU7!zMWgntHi{^Gl18
zQ{6H_7P7kp>wyA~L6Je1fr){Efsug|<ah=K24)5(P*z}IWH4c1U`S?Q0?SKkZD(K<
zV&B2Q8NQr>&u0^Zp!PNf@ofy!8yOfGSQxk%cp3N^m>5hM7#O4&*cccXI2l+NxEZ(@
z_!xK@c)+9t13!Zq0|SEq1Ji#7UIs>X23-)r&&9yVpv_<owXl<c8LVGjNYO_~*;h!_
zkI{-nTSs>XgSr*Vas~k_)=dn8lB^KRC0RBwFf#Bkh%ku5tyg2<WME(rVqj(vW?*9w
zVc=vCW#C~DXAohKVi0GLV31^xWKdy{20KLt<P>oRR(1wmb_NR=vI0Achk=8^hJg+0
rEM;&gFfefMX3&k?&Y-`U!C)ge*g!r8DPmw?XJBNoWnf@nVz2`MK;HM-

diff --git a/WEB-INF/classes/modele/FilDeDiscussion.class b/WEB-INF/classes/modele/FilDeDiscussion.class
deleted file mode 100644
index af362b08855ab40f70ebaea35cdc9fc11329cb1a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1312
zcmX^0Z`VEs1_oOO11<(824;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3VS-29Z(oK$_c%p8|gm(1ei(&FOG{5(bmrpy#Z
z21ZYiay}jgeg*+X2Ijo{Tt)^VAA}9TB}JKe>DC}cLOcw@3?hsSJSmAKsm?{Ii6vlT
zBq6FxGILY)ee#nNb6gTjQbRIxQ^A_Vco@V%Ci5nPG^Camx#lKj=75Zo<YABk$#AEn
z7AF^F7C=m6an4UkWn|#@$;?ajE6q(xEec6Y%1LEp2-fg~SOoSs)L9S_ELKA#FqI;U
zXofK|u%@S$c&32E&6AOVwHU%<(eMOGvZbe%_<;gML_-tPKt=|(VyL{R2BtK~0RHsU
z5>RL$0!tcZ5*9ZzGVm9ptCxYAj72%f0)h0@60qU0fMsM5D8>-t133dZkoiFNAPaB>
z=a&{Gr@Cc=LRthZrRafD1A`(12LlrW0|P4q6DVCVFfcHI(hQguW)K0>;tT>{S_(|_
zFff7=ECVBhGy?;JA_F4>BS^p2b_T|c3=9m63^EK144|~lz`(=6!oUkwE(=v2z`(@7
z#=yX!08*|cy_JDoOJ^$sua@ps20<-JmaPn;T9T|=86*%U$uY1qFfi~lurLTPa54xo
z@G%H62r~#XNHT~p$TNsCFfzz7$U{vB*#dFQ76$e;aL2HLT`0l8$e;jrFUZ|W3`}5u
zvw<CfunyvI83tAckYP#;%2<r%-GFAa0s|w13WF+CDZ*&&tqi>AMyoKef>o+9s6*9*
zEP}aO5Z!1E21W)A22H3^6r%;vjn-jcWzc0{WYEIuYEg8f4Hy_1w83sc4G`_E45H{p
sn=r64m@+Uj=wLNk0^Mi}21W*5>_#I+EhMaM7+4u>85kM#z-de$0AdW`_y7O^

diff --git a/WEB-INF/classes/modele/FilDeDiscussionDAO.class b/WEB-INF/classes/modele/FilDeDiscussionDAO.class
deleted file mode 100644
index e9ac7a035fe79dcdda1a830dc60a468eaae94523..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3393
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
S8N^Z29!LON%3BWh^a=pARV8Ks

diff --git a/WEB-INF/classes/modele/Message.class b/WEB-INF/classes/modele/Message.class
deleted file mode 100644
index cddf74058b4abd623ed0f2ef7127bfe249fc9f86..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2881
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

diff --git a/WEB-INF/classes/modele/MessageDao.class b/WEB-INF/classes/modele/MessageDao.class
deleted file mode 100644
index e6d70a20e4d89db61f707e4bd4d9e9ed44eb3272..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5138
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

diff --git a/WEB-INF/classes/modele/Utilisateur.class b/WEB-INF/classes/modele/Utilisateur.class
deleted file mode 100644
index 0f9e1d29260afe61797c09c56070ffccb66a82ed..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1810
zcmX^0Z`VEs1_oOOCoTpi24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00SP6iGJPId+^9tLg(9!3VC-29Z(oK*eLlFXdU;>42F(jrC%=Dhq|Mg}1t
zgi*mIMVWc&)*#J%JPiCGovf+3iJ3Vd5kVdXA&>}HZhnbNYCvLfaVkhygoi<tL5z`s
zKP9mw)ibX+xhS)sBr`vckwFq-a!F=xs=iNta$=54Vo7R9W^SrA7lQ<YBs+r?4}&y=
z42owUE?{I}FH6iRP4!P>WKh$97=z?jYfU5}hz@HZ1_lN>9tL>^1x5z(+{Elu=ls0n
z#FFsLk__kkyyB9?ypm!@1}|j8pgJ+l!W6+`AtM8ebAC!HBLlxrW?rgaX>L+#QAlD^
zPAVfq5Sg|>?8OpZnqiC#Z0V^bexL{w(ZK2&wqmHfC>Gm625_XOmbii<laYa=7|!HP
zPc89<M<^o$Z!s!gC_S|V6mKXoD-Cl37Pm4o2o+<|A_H|579C*6mE=RBgOPzNIKQ+g
zIn^x_6qEu;DOL}ZP#GBnobvNaic5+T3w%>cGV)W3`PmpuxfskC%-I<%Kq<hIkwFEd
z6p}qM^UCtGQ}rRHLlT8sVsc4-Q6(e845*{PX$z_lVyH)AUP?}Cv5HTAes*brH6&)h
z${+?Ii=b!>sVqoEmV_#gMlu1CVNnt>)ClLqoSfjyl2mIB25UwJ<lL$djh4M^8FduE
zSrf#_%g?oCjAdlt@yyFhEppBQ<;`Mt20KOuRg8eZ=0A1@2Sx@t{7M-a*dT$ypvb_%
zz{J47z{0=;DqR>D7??n11(+6M-~rR33}Orn4BQNipyG;wkwKAxfkBahk%5tcfq_+P
zI|JiJ1_lO31|<dt22jZcQp&=>16HmKRqn>X#K6kHz#s)uuBE+|fn7^yD+8~V?p6i?
zElHNG48jOAq!`#37#R2%SQz*jI2i;O_!tBkgc*bwBpHMm7#UO;RH0_d!kw^%fqetq
z32b0@i7_xTs4=KRl`1hXfqlsawi;m-#JN%otPIi&j0_rBjpju+T8@E{K@+>tyy!+N
zF|aa#!axhF(E{j3t1&P#Xk#~80NrRU237`b21W)Q23@Exkpn~+-Do`qMg~0weW+5D
z06_|SNPrkIure4kFftgxU9HQ&3=URNtt||~I~c^ZwlMH&ZDC;F#URVTfNqsJ12cmm
jIOP~I7&9<1a4;}3m@qIhSTWdulL#Y&ErUISBZDLWPJEKL

diff --git a/WEB-INF/classes/modele/UtilisateurDao.class b/WEB-INF/classes/modele/UtilisateurDao.class
deleted file mode 100644
index ec400bcf77f08c69a12bdf1fd4bdb55c1d6e6361..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3817
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

diff --git a/WEB-INF/src/controleur/Accueil.java b/WEB-INF/src/controleur/Accueil.java
deleted file mode 100644
index 1524c2f..0000000
--- a/WEB-INF/src/controleur/Accueil.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package controleur;
-
-import java.io.IOException;
-import jakarta.servlet.ServletException;
-import jakarta.servlet.annotation.WebServlet;
-import jakarta.servlet.http.HttpServlet;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.servlet.http.HttpSession;
-import org.apache.commons.text.StringEscapeUtils;
-
-@WebServlet("/accueil")
-public class Accueil extends HttpServlet {
-
-    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        if (request.getSession(false) == null || request.getSession().getAttribute("email") == null) {
-            response.sendRedirect(request.getContextPath() + "/login");
-            return;
-        }
-        HttpSession session = request.getSession();
-        String email = StringEscapeUtils.escapeHtml4((String) session.getAttribute("email"));
-        request.setAttribute("email", email);
-        request.getRequestDispatcher("/WEB-INF/vue/accueil.jsp").forward(request, response);
-    }
-}
diff --git a/WEB-INF/src/controleur/EnvoyerMessage.java b/WEB-INF/src/controleur/EnvoyerMessage.java
deleted file mode 100644
index b9c7916..0000000
--- a/WEB-INF/src/controleur/EnvoyerMessage.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package controleur;
-
-import jakarta.servlet.annotation.MultipartConfig;
-import jakarta.servlet.annotation.WebServlet;
-import jakarta.servlet.http.HttpServlet;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.servlet.http.Part;
-import modele.Message;
-import modele.MessageDao;
-import jakarta.servlet.ServletException;
-import java.io.File;
-import java.io.IOException;
-import java.time.LocalDateTime;
-
-@WebServlet("/envoyerMessage")
-@MultipartConfig(
-    maxFileSize = 1024 * 1024 * 5,
-    maxRequestSize = 1024 * 1024 * 10,
-    fileSizeThreshold = 0 // comme ça tous les fichiers qui sont normalement des images sont enregistrés sur le serveur
-)
-public class EnvoyerMessage extends HttpServlet {
-    private static final String UPLOAD_DIR = "uploads";
-
-    public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
-        if (req.getSession(false) == null || req.getSession().getAttribute("email") == null) {
-            res.sendRedirect(req.getContextPath() + "/login");
-            return;
-        }
-        req.getRequestDispatcher("/WEB-INF/vue/listeFil.jsp").forward(req, res);
-    }
-
-    public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
-        if (req.getSession(false) == null || req.getSession().getAttribute("email") == null) {
-            res.sendRedirect(req.getContextPath() + "/login");
-            return;
-        }
-        String email = (String) req.getSession().getAttribute("email");
-        String message = req.getParameter("contenu");
-        int filId = (int) req.getSession().getAttribute("filId");
-        if (message == null || message.isEmpty()) {
-            return;
-        }
-
-        Part filePart = req.getPart("file");
-        String fileName = null;
-        if (filePart != null && filePart.getSize() > 0) {
-            fileName = getFileName(filePart);
-            String uploadPath = getServletContext().getRealPath("") + File.separator + UPLOAD_DIR;
-            File uploadDir = new File(uploadPath);
-            if (!uploadDir.exists()) {
-                uploadDir.mkdir();
-            }
-            filePart.write(uploadPath + File.separator + fileName);
-        }
-
-        Message m = new Message(-1, message, LocalDateTime.now(), filId, email, fileName);
-        MessageDao messageDao = new MessageDao();
-        messageDao.create(m);
-        res.sendRedirect(req.getContextPath() + "/fil?id=" + filId);
-    }
-
-    private String getFileName(Part part) {
-        String contentDisposition = part.getHeader("content-disposition");
-        for (String cd : contentDisposition.split(";")) {
-            if (cd.trim().startsWith("filename")) {
-                return cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
-            }
-        }
-        return null;
-    }
-}
\ No newline at end of file
diff --git a/WEB-INF/src/controleur/GetFils.java b/WEB-INF/src/controleur/GetFils.java
deleted file mode 100644
index f9fe82c..0000000
--- a/WEB-INF/src/controleur/GetFils.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package controleur;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-
-import jakarta.servlet.ServletException;
-import jakarta.servlet.annotation.WebServlet;
-import jakarta.servlet.http.HttpServlet;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import modele.Abonnement;
-import modele.AbonnementDao;
-import modele.FilDeDiscussion;
-import modele.FilDeDiscussionDAO;
-import modele.Message;
-import modele.MessageDao;
-
-//http GET http://localhost:8080/sae/getFils Cookie:"JSESSIONID=ton_session_id" --> F12>Storage>JSESSIONID
-
-@WebServlet("/getFils")
-public class GetFils extends HttpServlet {
-    @Override
-    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
-        if (req.getSession(false) == null || req.getSession().getAttribute("email") == null) {
-            res.sendRedirect(req.getContextPath() + "/login");
-            return;
-        }
-
-        String email = (String) req.getSession().getAttribute("email");
-        AbonnementDao abonnementDao = new AbonnementDao();
-        FilDeDiscussionDAO filDao = new FilDeDiscussionDAO();
-        MessageDao messageDao = new MessageDao();
-
-        try {
-            List<Abonnement> abonnements = abonnementDao.findAbonnements(email);
-            List<FilDeDiscussion> fils = new ArrayList<>();
-            Map<Integer, List<Message>> messagesMap = new HashMap<>();
-
-            for (Abonnement abonnement : abonnements) {
-                FilDeDiscussion fil = filDao.findById(abonnement.getIdFil());
-                fils.add(fil);
-                List<Message> messages = messageDao.findByFil(fil.getId());
-                messagesMap.put(fil.getId(), messages);
-            }
-
-            ObjectMapper objectMapper = new ObjectMapper();
-            objectMapper.registerModule(new JavaTimeModule());
-            objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
-
-            Map<String, Object> jsonResponse = new HashMap<>();
-            jsonResponse.put("fils", fils);
-            jsonResponse.put("messages", messagesMap);
-
-            res.setContentType("application/json");
-            res.getWriter().write(objectMapper.writeValueAsString(jsonResponse));
-        } catch (Exception e) {
-            res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-            res.getWriter().write("{\"error\":\"Une erreur est survenue lors de la récupération des données.\"}");
-        }
-    }
-}
\ No newline at end of file
diff --git a/WEB-INF/src/controleur/Like.java b/WEB-INF/src/controleur/Like.java
deleted file mode 100644
index d268a99..0000000
--- a/WEB-INF/src/controleur/Like.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package controleur;
-
-
-import java.io.IOException;
-
-import jakarta.servlet.ServletException;
-import jakarta.servlet.annotation.WebServlet;
-import jakarta.servlet.http.HttpServlet;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import modele.MessageDao;
-
-@WebServlet("/Like")
-public class Like extends HttpServlet {
-
-    @Override
-    protected void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
-        String userEmail = (String) req.getSession().getAttribute("email");
-        if (userEmail == null) {
-            res.sendRedirect(req.getContextPath() + "/login");
-            return;
-        }
-
-        int messageId = Integer.parseInt(req.getParameter("messageId"));
-        MessageDao messageDao = new MessageDao();
-
-        if (messageDao.updateLike(messageId)) {
-            res.sendRedirect(req.getHeader("Referer"));
-        } else {
-            res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Erreur lors de la mise à jour du like.");
-        }
-    }
-    
-}
diff --git a/WEB-INF/src/controleur/Login.java b/WEB-INF/src/controleur/Login.java
deleted file mode 100644
index 655e8db..0000000
--- a/WEB-INF/src/controleur/Login.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package controleur;
-
-import jakarta.servlet.annotation.WebServlet;
-import jakarta.servlet.http.HttpServlet;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import modele.UtilisateurDao;
-import jakarta.servlet.ServletException;
-import java.io.IOException;
-import org.apache.commons.text.StringEscapeUtils;
-
-@WebServlet("/login")
-public class Login extends HttpServlet {
-    public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
-        req.getRequestDispatcher("/WEB-INF/vue/login.jsp").forward(req, res);
-    }
-
-    public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
-        String email = StringEscapeUtils.escapeHtml4(req.getParameter("email"));
-        String motdepasse = StringEscapeUtils.escapeHtml4(req.getParameter("motdepasse"));
-        UtilisateurDao udao = new UtilisateurDao();
-        if (udao.check(email, motdepasse)) {
-            System.out.println("Connexion réussie");
-            req.getSession().setAttribute("email", email);
-            res.sendRedirect(req.getContextPath() + "/accueil");
-        } else {
-            System.out.println("Connexion échouée");
-            res.sendRedirect(req.getContextPath() + "/login");
-        }
-    }
-}
\ No newline at end of file
diff --git a/WEB-INF/src/modele/DS.java b/WEB-INF/src/modele/DS.java
deleted file mode 100644
index f34509c..0000000
--- a/WEB-INF/src/modele/DS.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package modele;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-
-public class DS {
-    public static DS instance = new DS();
-
-    private DS() {
-        try {
-            Class.forName("org.postgresql.Driver");
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-    }
-
-    public Connection getConnection() {
-        String url = "jdbc:postgresql://psqlserv/but2";
-        String login = "othemanekhachnaneetu";
-        String pwd = "moi";
-        Connection con = null;
-        try {
-            con = DriverManager.getConnection(url, login, pwd);
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-        return con;
-    }
-}
\ No newline at end of file
diff --git a/WEB-INF/src/modele/Message.java b/WEB-INF/src/modele/Message.java
deleted file mode 100644
index 4b743b4..0000000
--- a/WEB-INF/src/modele/Message.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package modele;
-
-import java.time.LocalDateTime;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-
-public class Message {
-    private int id;
-    private String contenu;
-    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss")
-    private LocalDateTime datePublication;
-    private int filId;
-    private String auteurEmail;
-    private String fileName;
-    private boolean likeCount;
-
-    public Message() {
-    }
-
-    public Message(int id, String contenu, LocalDateTime datePublication, int filId, String auteurEmail,
-            String fileName) {
-        this.id = id;
-        this.contenu = contenu;
-        this.datePublication = datePublication;
-        this.filId = filId;
-        this.auteurEmail = auteurEmail;
-        this.fileName = fileName;
-        this.likeCount = false;
-    }
-
-    public int getId() {
-        return id;
-    }
-
-    public void setId(int id) {
-        this.id = id;
-    }
-
-    public String getContenu() {
-        return contenu;
-    }
-
-    public void setContenu(String contenu) {
-        this.contenu = contenu;
-    }
-
-    public LocalDateTime getDatePublication() {
-        return datePublication;
-    }
-
-    public void setDatePublication(LocalDateTime datePublication) {
-        this.datePublication = datePublication;
-    }
-
-    public int getfilId() {
-        return filId;
-    }
-
-    public void setFilId(int filId) {
-        this.filId = filId;
-    }
-
-    public String getAuteurEmail() {
-        return auteurEmail;
-    }
-
-    public void setAuteurEmail(String auteurEmail) {
-        this.auteurEmail = auteurEmail;
-    }
-
-    public String getFileName() {
-        return fileName;
-    }
-
-    public void setFileName(String fileName) {
-        this.fileName = fileName;
-    }
-
-    public boolean getLikeCount() {
-        return likeCount;
-    }
-
-    public void setLikeCount(boolean likeCount) {
-        this.likeCount = likeCount;
-    }
-
-    public String afficherLike() {
-        if (likeCount == true) {
-            return "Vous avez aimé ce message";
-        }
-        return "Vous n'avez pas aimé ce message";
-    }
-
-    @Override
-    public String toString() {
-        return "Message{" + "id=" + id + ", contenu=" + contenu + ", datePublication=" + datePublication + ", filId="
-                + filId + ", auteurEmail=" + auteurEmail + "like" + afficherLike() +'}';
-    }
-}
diff --git a/WEB-INF/src/modele/MessageDao.java b/WEB-INF/src/modele/MessageDao.java
deleted file mode 100644
index 729a4df..0000000
--- a/WEB-INF/src/modele/MessageDao.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package modele;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.util.List;
-import java.util.ArrayList;
-
-public class MessageDao {
-    
-    public Message findMessage(int id) {
-        Message message = new Message();
-        try(Connection con = DS.instance.getConnection()) {
-            PreparedStatement ps = con.prepareStatement("SELECT * FROM message WHERE id = ?");
-            ps.setInt(1, id);
-            ResultSet rs = ps.executeQuery();
-            if (rs.next()) {
-                message.setId(rs.getInt("id"));
-                message.setContenu(rs.getString("contenu"));
-                message.setDatePublication(rs.getTimestamp("datePublication").toLocalDateTime());
-                message.setFilId(rs.getInt("filId"));
-                message.setAuteurEmail(rs.getString("auteurEmail"));
-                message.setFileName(rs.getString("fileName"));
-                message.setLikeCount(rs.getBoolean("likeCount"));
-            } else {
-                System.out.println("Message inexistant");
-            }
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-        return message;
-    }
-
-    public List<Message> findAll() {
-        List<Message> messages = new ArrayList<>();
-        try(Connection con = DS.instance.getConnection()) {
-            PreparedStatement ps = con.prepareStatement("SELECT * FROM message");
-            ResultSet rs = ps.executeQuery();
-            while (rs.next()) {
-                Message message = new Message();
-                message.setId(rs.getInt("id"));
-                message.setContenu(rs.getString("contenu"));
-                message.setDatePublication(rs.getTimestamp("datePublication").toLocalDateTime());
-                message.setFilId(rs.getInt("filId"));
-                message.setAuteurEmail(rs.getString("auteurEmail"));
-                message.setFileName(rs.getString("fileName"));
-                message.setLikeCount(rs.getBoolean("likeCount"));
-                messages.add(message);
-            }
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-        return messages;
-    }
-
-    public List<Message> findByFil(int idFil) {
-        List<Message> messages = new ArrayList<>();
-        try(Connection con = DS.instance.getConnection()) {
-            PreparedStatement ps = con.prepareStatement("SELECT * FROM message WHERE filId = ?");
-            ps.setInt(1, idFil);
-            ResultSet rs = ps.executeQuery();
-            while (rs.next()) {
-                Message message = new Message();
-                message.setId(rs.getInt("id"));
-                message.setContenu(rs.getString("contenu"));
-                message.setDatePublication(rs.getTimestamp("datePublication").toLocalDateTime());
-                message.setFilId(rs.getInt("filId"));
-                message.setAuteurEmail(rs.getString("auteurEmail"));
-                message.setFileName(rs.getString("fileName"));
-                message.setLikeCount(rs.getBoolean("likeCount"));
-                messages.add(message);
-            }
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-        return messages;
-    }
-
-    public String findUserName(String email) {
-        String userName = "";
-        try(Connection con = DS.instance.getConnection()) {
-            PreparedStatement ps = con.prepareStatement("SELECT nom FROM utilisateur WHERE email = ?");
-            ps.setString(1, email);
-            ResultSet rs = ps.executeQuery();
-            if (rs.next()) {
-                userName = rs.getString("nom");
-            } else {
-                System.out.println("Utilisateur inexistant");
-            }
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-        return userName;
-    }
-
-    public void delete(int id) {
-        try(Connection con = DS.instance.getConnection()) {
-            PreparedStatement ps = con.prepareStatement("DELETE FROM message WHERE id = ?");
-            ps.setInt(1, id);
-            ps.executeUpdate();
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-    }
-
-    public void create(Message message) {
-        try(Connection con = DS.instance.getConnection()) {
-            PreparedStatement ps = con.prepareStatement("INSERT INTO message (contenu, filid, auteuremail, fileName) VALUES (?, ?, ?, ?)");
-            ps.setString(1, message.getContenu());
-            ps.setInt(2, message.getfilId());
-            ps.setString(3, message.getAuteurEmail());
-            ps.setString(4, message.getFileName());
-            ps.executeUpdate();
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-    }
-    
-    //cette methode permet de mettre a jour le nombre de like d'un message en fonction de l'action de l'utilisateur (like ou unlike)
-    public boolean updateLike(int id) {
-        try(Connection con = DS.instance.getConnection()) {
-            PreparedStatement ps = con.prepareStatement("SELECT likeCount FROM message WHERE id = ?");
-            ps.setInt(1, id);
-            ResultSet rs = ps.executeQuery();
-            if (rs.next()) {
-                boolean currentLikeStatus = rs.getBoolean("likeCount");
-                boolean newLikeStatus = !currentLikeStatus;
-                ps = con.prepareStatement("UPDATE message SET likeCount = ? WHERE id = ?");
-                ps.setBoolean(1, newLikeStatus);
-                ps.setInt(2, id);
-                ps.executeUpdate();
-                return true;
-            } else {
-                System.out.println("Message inexistant");
-                return false;
-            }
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-            return false;
-        }
-    }
-
-}
diff --git a/WEB-INF/vue/accueil.jsp b/WEB-INF/vue/accueil.jsp
deleted file mode 100644
index a8739e7..0000000
--- a/WEB-INF/vue/accueil.jsp
+++ /dev/null
@@ -1,70 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<%@ page import="modele.UtilisateurDao" %>
-<%@ page import="modele.AbonnementDao" %>
-<%@ page import="modele.FilDeDiscussion" %>
-<%@ page import="modele.FilDeDiscussionDAO" %>
-<%@ page import="modele.Abonnement" %>
-<%@ page import="java.util.List" %>
-
-<!DOCTYPE html>
-<html lang="fr">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>CampusTalk - Accueil</title>
-    <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
-    <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png"> 
-</head>
-<body class="bg-gray-100">
-    <nav class="bg-white shadow-md">
-        <div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8">
-            <div class="relative flex items-center justify-between h-16">
-                <div class="absolute inset-y-0 left-0 flex items-center sm:hidden">
-                    <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white" aria-controls="mobile-menu" aria-expanded="false">
-                        <span class="sr-only">Open main menu</span>
-                        <svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
-                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7" />
-                        </svg>
-                        <svg class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
-                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
-                        </svg>
-                    </button>
-                </div>
-                <div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
-                    <div class="flex-shrink-0">
-                        <a class="text-xl font-bold text-gray-800" href="#">CampusTalk</a>
-                    </div>
-                    <div class="hidden sm:block sm:ml-auto">
-                        <div class="flex space-x-4">
-                            <a href="<%= request.getContextPath() %>/logout" class="text-red-600 hover:bg-red-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Se déconnecter</a>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </nav>
-    <% UtilisateurDao udao=new UtilisateurDao(); String email=(String) session.getAttribute("email"); String
-        username=udao.findUtilisateur(email).getNom(); AbonnementDao adao=new AbonnementDao(); List<Abonnement> abonnements
-        = adao.findAbonnements(email);
-        FilDeDiscussionDAO fdao = new FilDeDiscussionDAO();
-        %>
-        <div class="max-w-2xl mx-auto mt-12 p-6 bg-white rounded-lg shadow-md">
-            <h2 class="text-2xl font-bold mb-4">Bienvenue sur CampusTalk</h2>
-            <p class="mb-4">Bonjour, <%= username %> !</p>
-            <p class="mb-4">Vous êtes connecté en tant que <%= email %></p>
-            <a href="<%= request.getContextPath() %>/listerFil" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Voir les autres fils de discussion</a>
-        </div>
-        <div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md">
-            <h3 class="text-xl font-bold mb-4">Vos abonnements</h3>
-            <ul class="list-disc pl-5">
-                <% for (Abonnement abo : abonnements) { %>
-                    <li class="mb-2">
-                        <a href="<%= request.getContextPath() %>/fil?id=<%= abo.getIdFil() %>" class="text-blue-500 hover:underline">
-                            <%= fdao.findById(abo.getIdFil()).getNom() %>
-                        </a>
-                    </li>
-                <% } %>
-            </ul>
-        </div>
-</body>
-</html>
diff --git a/WEB-INF/vue/creerFil.jsp b/WEB-INF/vue/creerFil.jsp
deleted file mode 100644
index 6b141be..0000000
--- a/WEB-INF/vue/creerFil.jsp
+++ /dev/null
@@ -1,69 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-
-<!DOCTYPE html>
-<html lang="fr">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>CampusTalk - Créer un Fil de Discussion</title>
-    <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
-    <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png">
-</head>
-<body class="bg-gray-100">
-    <nav class="bg-white shadow-md">
-        <div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8">
-            <div class="relative flex items-center justify-between h-16">
-                <div class="absolute inset-y-0 left-0 flex items-center sm:hidden">
-                    <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white" aria-controls="mobile-menu" aria-expanded="false">
-                        <span class="sr-only">Open main menu</span>
-                        <svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
-                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7" />
-                        </svg>
-                        <svg class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
-                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
-                        </svg>
-                    </button>
-                </div>
-                <div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
-                    <div class="flex-shrink-0">
-                        <a class="text-xl font-bold text-gray-800" href="#">CampusTalk</a>
-                    </div>
-                    <div class="hidden sm:block sm:ml-auto">
-                        <div class="flex space-x-4">
-                            <a href="<%= request.getContextPath() %>/logout" class="text-red-600 hover:bg-red-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Se déconnecter</a>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </nav>
-    <div class="container mx-auto px-4 mt-4 text-center">
-        <a href="<%= request.getContextPath() %>/listerFil" class="bg-blue-500 text-white px-4 py-2 rounded">Retour aux fils de discussion</a>
-    </div>
-
-    <% if (request.getAttribute("error") != null) { %>
-        <div class="max-w-2xl mx-auto mt-4 p-4 bg-red-100 text-red-700 rounded-lg">
-            <%= request.getAttribute("error") %>
-        </div>
-    <% } %>
-
-    <div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md">
-        <h1 class="text-2xl font-bold mb-4 text-center">Créer un nouveau fil de discussion</h1>
-        <form action="creerFil" method="post" class="mt-4">
-            <div class="mb-4">
-                <label for="nom" class="block text-gray-700 font-semibold">Nom du fil:</label>
-                <input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="nom" name="nom" required>
-            </div>
-            <div class="mb-4">
-                <label for="createuremail" class="block text-gray-700 font-semibold">Email du créateur:</label>
-                <input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="createuremail" name="createuremail" required>
-            </div>
-            <div class="mb-4">
-                <label for="description" class="block text-gray-700 font-semibold">Description:</label>
-                <textarea class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="description" name="description" rows="3" required></textarea>
-            </div>
-            <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">Créer</button>
-        </form>
-    </div>
-</body>
-</html>
\ No newline at end of file
diff --git a/WEB-INF/vue/fil.jsp b/WEB-INF/vue/fil.jsp
deleted file mode 100644
index f2a447f..0000000
--- a/WEB-INF/vue/fil.jsp
+++ /dev/null
@@ -1,126 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<%@ page import="modele.FilDeDiscussion" %>
-<%@ page import="modele.FilDeDiscussionDAO" %>
-<%@ page import="modele.Message" %>
-<%@ page import="modele.MessageDao" %>
-<%@ page import="java.util.List" %>
-<%@ page import="java.time.LocalDateTime" %>
-<%@ page import="java.time.format.DateTimeFormatter" %>
-
-<!DOCTYPE html>
-<html lang="fr">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>CampusTalk - Fil de Discussion</title>
-    <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
-    <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png">
-    <style>
-        .message-container {
-            transition: background-color 0.3s ease;
-        }
-        .message-container:hover {
-            background-color: #f3f4f6;
-        }
-        .message-image {
-            max-width: 200px; 
-            max-height: 200px; 
-            object-fit: cover;
-            border-radius: 8px;
-        }
-    </style>
-</head>
-<body class="bg-gray-100 text-gray-900 font-sans">
-    <nav class="bg-white shadow-md">
-        <div class="container mx-auto px-4 py-2 flex justify-between items-center">
-            <a class="text-xl font-bold" href="#">CampusTalk</a>
-            <div>
-                <a class="bg-red-500 text-white px-4 py-2 rounded" href="<%= request.getContextPath() %>/logout">Se déconnecter</a>
-            </div>
-        </div>
-    </nav>
-
-    <div class="container mx-auto px-4 mt-4 text-center">
-        <a href="<%= request.getContextPath() %>/accueil" class="bg-blue-500 text-white px-4 py-2 rounded">Retour</a>
-    </div>
-
-    <%
-        int id = Integer.parseInt(request.getParameter("id"));
-        session.setAttribute("filId", id);
-        FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
-        FilDeDiscussion fil = fddao.findById(id);
-        MessageDao mdao = new MessageDao();
-        List<Message> messages = mdao.findByFil(id);
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM yyyy 'à' HH:mm");
-    %>
-
-    <div class="container mx-auto px-4 mt-8">
-        <div class="bg-white p-6 rounded-lg shadow-lg">
-            <h2 class="text-2xl font-bold mb-4 text-center"><%= fil.getNom() %></h2>
-            <div class="overflow-y-auto max-h-96" id="messages-box">
-                <% for (Message m : messages) {
-                    LocalDateTime datePublication = m.getDatePublication();
-                    String formattedDate = (datePublication != null) ? datePublication.format(formatter) : "Date non disponible";
-                %>
-                <div class="flex items-start mb-4 message-container">
-                    <div class="w-10 h-10 rounded-full overflow-hidden">
-                        <img src="https://www.gravatar.com/avatar/<%= m.getAuteurEmail().hashCode() %>?d=identicon&s=40" alt="Avatar">
-                    </div>
-                    <div class="ml-4 bg-gray-200 p-4 rounded-lg">
-                        <h4 class="font-bold"><%= mdao.findUserName(m.getAuteurEmail()) %></h4>
-                        <p class="text-sm text-gray-600"><%= formattedDate %></p>
-                        <p class="mt-2"><%= m.getContenu() %></p>
-                        <% if (m.getFileName() != null) { %>
-                        <img src="<%= request.getContextPath() %>/uploads/<%= m.getFileName() %>" alt="Image" class="mt-2 message-image">
-                        <% } %>
-                        <div class="mt-2 flex items-center">
-                            <form action="<%= request.getContextPath() %>/Like" method="post" class="mr-2">
-                                <input type="hidden" name="messageId" value="<%= m.getId() %>">
-                                <button type="submit" class="text-blue-500 hover:text-blue-700">
-                                    <% if (m.getLikeCount()) { %>
-                                    ❤️ Enlever le like
-                                    <% } else { %>
-                                    🤍 Like
-                                    <% } %>
-                                </button>
-                            </form>
-                        </div>
-                    </div>
-                </div>
-                <% } %>
-            </div>
-
-            <div class="mt-6 bg-white p-6 rounded-lg shadow-lg">
-                <form action="envoyerMessage" method="post" enctype="multipart/form-data">
-                    <div class="mb-4">
-                        <label for="contenu" class="block text-gray-700 font-semibold">Votre message :</label>
-                        <textarea class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="contenu" name="contenu" rows="3" required></textarea>
-                    </div>
-                    <div class="mb-4">
-                        <label for="file" class="block text-gray-700 font-semibold">Ajouter une image :</label>
-                        <div class="flex items-center">
-                            <input type="file" class="hidden" id="file" name="file">
-                            <label for="file" class="cursor-pointer bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors flex items-center">
-                                <svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
-                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"></path>
-                                </svg>
-                                Télécharger
-                            </label>
-                        </div>
-                    </div>
-                    <input type="hidden" name="filId" value="<%= id %>">
-                    <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors">Envoyer</button>
-                </form>
-            </div>
-            
-        </div>
-    </div>
-
-    <script>
-        window.onload = function () {
-            let messagesBox = document.getElementById('messages-box');
-            messagesBox.scrollTop = messagesBox.scrollHeight;
-        };
-    </script>
-</body>
-</html>
\ No newline at end of file
diff --git a/WEB-INF/vue/listerFil.jsp b/WEB-INF/vue/listerFil.jsp
deleted file mode 100644
index 4754c08..0000000
--- a/WEB-INF/vue/listerFil.jsp
+++ /dev/null
@@ -1,82 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<%@ page import="modele.FilDeDiscussion" %>
-<%@ page import="modele.FilDeDiscussionDAO" %>
-<%@ page import="modele.AbonnementDao" %>
-<%@ page import="modele.Abonnement" %>
-<%@ page import="java.util.List" %>
-<%@ page import="java.util.Set" %>
-<%@ page import="java.util.HashSet" %>
-
-<!DOCTYPE html>
-<html lang="fr">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>CampusTalk - Fils de Discussion</title>
-    <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
-    <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png">
-</head>
-<body class="bg-gray-100">
-    <nav class="bg-white shadow-md">
-        <div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8">
-            <div class="relative flex items-center justify-between h-16">
-                <div class="absolute inset-y-0 left-0 flex items-center sm:hidden">
-                    <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white" aria-controls="mobile-menu" aria-expanded="false">
-                        <span class="sr-only">Open main menu</span>
-                        <svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
-                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7" />
-                        </svg>
-                        <svg class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
-                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
-                        </svg>
-                    </button>
-                </div>
-                <div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
-                    <div class="flex-shrink-0">
-                        <a class="text-xl font-bold text-gray-800" href="#">CampusTalk</a>
-                    </div>
-                    <div class="hidden sm:block sm:ml-auto">
-                        <div class="flex space-x-4">
-                            <a href="<%= request.getContextPath() %>/logout" class="text-red-600 hover:bg-red-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Se déconnecter</a>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </nav>
-
-    <div class="container mx-auto px-4 mt-4 text-center">
-        <a href="<%= request.getContextPath() %>/accueil" class="bg-blue-500 text-white px-4 py-2 rounded">Retour à l'accueil</a>
-        <a href="<%= request.getContextPath() %>/creerFil" class="bg-blue-500 text-white px-4 py-2 rounded">Créer un fil de discussion</a>
-    </div>
-
-    <div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md">
-        <h2 class="text-2xl font-bold mb-4 text-center">Fils de Discussion</h2>
-        <p class="text-gray-700 mb-4 text-center">(auxquels vous n'êtes pas abonné)</p>
-        <% 
-            String email = (String) session.getAttribute("email");
-            AbonnementDao adao = new AbonnementDao();
-            List<Abonnement> abonnements = adao.findAbonnements(email);
-            Set<Integer> abonnementsIds = new HashSet<>();
-            for (Abonnement abonnement : abonnements) {
-                abonnementsIds.add(abonnement.getIdFil());
-            }
-
-            FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
-            for (FilDeDiscussion f : fddao.findAll()) {
-                if (!abonnementsIds.contains(f.getId())) {
-        %>
-        <div class="mb-4 p-4 bg-gray-100 rounded-lg shadow-md">
-            <h4 class="font-bold text-lg"><%= f.getNom() %></h4>
-            <% if (f.getDescription() != null) { %>
-                <p class="text-gray-700"><%= f.getDescription() %></p>
-            <% } %>
-            <a href="<%= request.getContextPath() %>/suivreFil?id=<%= f.getId() %>" class="bg-blue-500 text-white px-4 py-2 rounded mt-2 inline-block">Suivre</a>
-        </div>
-        <% 
-                }
-            }
-        %>
-    </div>
-</body>
-</html>
\ No newline at end of file
diff --git a/WEB-INF/vue/login.jsp b/WEB-INF/vue/login.jsp
deleted file mode 100644
index c1328ac..0000000
--- a/WEB-INF/vue/login.jsp
+++ /dev/null
@@ -1,47 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-
-<!DOCTYPE html>
-<html lang="fr">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>CampusTalk - Connexion</title>
-    <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
-    <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png">
-    <style>
-        body {
-            background-color: #f8f9fa;
-        }
-    </style>
-</head>
-<body class="bg-gray-100">
-    <nav class="bg-white shadow-md">
-        <div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8">
-            <div class="relative flex items-center justify-between h-16">
-                <div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
-                    <div class="flex-shrink-0">
-                        <a class="text-xl font-bold text-gray-800" href="#">CampusTalk</a>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </nav>
-    <div class="max-w-md mx-auto mt-12 p-6 bg-white rounded-lg shadow-md">
-        <h2 class="text-2xl font-bold mb-4 text-center">Bienvenue sur CampusTalk</h2>
-        <form action="login" method="post">
-            <div class="mb-4">
-                <label for="email" class="block text-gray-700 font-semibold">Adresse e-mail</label>
-                <input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="email" id="email" placeholder="Entrez votre e-mail" required>
-            </div>
-            <div class="mb-4">
-                <label for="motdepasse" class="block text-gray-700 font-semibold">Mot de passe</label>
-                <input type="password" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="motdepasse" id="motdepasse" placeholder="Entrez votre mot de passe" required>
-            </div>
-            <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">Se connecter</button>
-        </form>
-        <div class="text-center mt-3">
-            <p>Vous n'avez pas de compte ? <a href="<%= request.getContextPath() %>/register" class="text-blue-500 hover:underline">S'inscrire</a></p>
-        </div>
-    </div>
-</body>
-</html>
\ No newline at end of file
diff --git a/WEB-INF/vue/register.jsp b/WEB-INF/vue/register.jsp
deleted file mode 100644
index 321f260..0000000
--- a/WEB-INF/vue/register.jsp
+++ /dev/null
@@ -1,51 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-
-<!DOCTYPE html>
-<html lang="fr">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>CampusTalk - Inscription</title>
-    <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
-    <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png">
-</head>
-<body class="bg-gray-100">
-    <nav class="bg-white shadow-md">
-        <div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8">
-            <div class="relative flex items-center justify-between h-16">
-                <div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
-                    <div class="flex-shrink-0">
-                        <a class="text-xl font-bold text-gray-800" href="#">CampusTalk</a>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </nav>
-    <div class="max-w-md mx-auto mt-12 p-6 bg-white rounded-lg shadow-md">
-        <h2 class="text-2xl font-bold mb-4 text-center">Inscription</h2>
-        <% if (request.getAttribute("error") != null) { %>
-            <div class="bg-red-100 text-red-700 p-4 rounded-lg mb-4">
-                <%= request.getAttribute("error") %>
-            </div>
-            <% request.removeAttribute("error"); } %>
-        <form action="register" method="post">
-            <div class="mb-4">
-                <label for="nom" class="block text-gray-700 font-semibold">Nom</label>
-                <input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="nom" id="nom" placeholder="Entrez votre nom" required>
-            </div>
-            <div class="mb-4">
-                <label for="email" class="block text-gray-700 font-semibold">Adresse e-mail</label>
-                <input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="email" id="email" placeholder="Entrez votre e-mail" required>
-            </div>
-            <div class="mb-4">
-                <label for="motdepasse" class="block text-gray-700 font-semibold">Mot de passe</label>
-                <input type="password" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="motdepasse" id="motdepasse" placeholder="Choisissez un mot de passe" required>
-            </div>
-            <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">S'inscrire</button>
-        </form>
-        <div class="text-center mt-3">
-            <p>Vous avez déjà un compte ? <a href="<%= request.getContextPath() %>/login" class="text-blue-500 hover:underline">Se connecter</a></p>
-        </div>
-    </div>
-</body>
-</html>
\ No newline at end of file
diff --git a/META-INF/context.xml b/sae/META-INF/context.xml
similarity index 100%
rename from META-INF/context.xml
rename to sae/META-INF/context.xml
diff --git a/sae/README.md b/sae/README.md
deleted file mode 100644
index 244d8e9..0000000
--- a/sae/README.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# S4.A02.1-H-Adrien.fryson-Othemane.khachnane
-
-
-
-## Getting started
-
-To make it easy for you to get started with GitLab, here's a list of recommended next steps.
-
-Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
-
-## Add your files
-
-- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
-- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
-
-```
-cd existing_repo
-git remote add origin https://gitlab.univ-lille.fr/othemane.khachnane.etu/s4.a02.1-h-adrien.fryson-othemane.khachnane.git
-git branch -M main
-git push -uf origin main
-```
-
-## Integrate with your tools
-
-- [ ] [Set up project integrations](https://gitlab.univ-lille.fr/othemane.khachnane.etu/s4.a02.1-h-adrien.fryson-othemane.khachnane/-/settings/integrations)
-
-## Collaborate with your team
-
-- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
-- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
-- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
-- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
-- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
-
-## Test and Deploy
-
-Use the built-in continuous integration in GitLab.
-
-- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
-- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
-- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
-- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
-- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
-
-***
-
-# Editing this README
-
-When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
-
-## Suggestions for a good README
-
-Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
-
-## Name
-Choose a self-explaining name for your project.
-
-## Description
-Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
-
-## Badges
-On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
-
-## Visuals
-Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
-
-## Installation
-Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
-
-## Usage
-Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
-
-## Support
-Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
-
-## Roadmap
-If you have ideas for releases in the future, it is a good idea to list them in the README.
-
-## Contributing
-State if you are open to contributions and what your requirements are for accepting them.
-
-For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
-
-You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
-
-## Authors and acknowledgment
-Show your appreciation to those who have contributed to the project.
-
-## License
-For open source projects, say how it is licensed.
-
-## Project status
-If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
diff --git a/sae/WEB-INF/src/.DS_Store b/sae/WEB-INF/src/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..7e26352a1583e69cc3679c58b929a84e089fa611
GIT binary patch
literal 6148
zcmZQzU|@7AO)+F(5MW?n;9!8zj35RBCIAV8Fop~hR0Kpbg3ZWbNKGm)E=bDBPlCz~
zb_(QnHile=e1;T;R0dS{?@TJl$t*50Fu2CZ#LU9V#?HaP!OamHoRME1T#{H)TI`fq
z6b<5q<mcxk!PtpOVVSAr@d6^w`FSOYnR%&2ASJ<>DXB?`MKR%-c`5njPWh#IDaByD
zPzerBPR@7%$?9rjBU2p(BTI`~9ffK`17lMi1v5j_+FDKyQDuGWp!n>Z+`Rm5NT@P0
zLTCnFC=H`}7#J8(JXIE4l$VpAmkx?}n4(d7Gz3ONU^E0qLtvza0JQqx;2x;~FzWBo
z5Eu;soFM=z9~7WXMh7U}0HHxr42%p6pyo4(W`P+3=?5@?#6Vg>G)OCm25Dtr1hK$o
zfVDC(GC;I4g1aFgeV{H0hz4tCU}OMmXJBLiYiEG9c^M(v85kkj8DO0kMu>I>Mu>I>
zMu>Kp^G4~>5Eu;sXb3PvXaP|D@5%trLJ-kWax?@+LtsRN03(Y_u!|G8QpWCIP+beE
zPZOZhpxPf&9fK-r)J6akWI#~@suWb+gS3KZa8=C60IA7G8v?Kp8l^`=fc_x>04W<x
AKL7v#

literal 0
HcmV?d00001

diff --git a/sae/WEB-INF/src/controleur/Accueil.java b/sae/WEB-INF/src/controleur/Accueil.java
index 74fef29..1524c2f 100644
--- a/sae/WEB-INF/src/controleur/Accueil.java
+++ b/sae/WEB-INF/src/controleur/Accueil.java
@@ -7,6 +7,7 @@ import jakarta.servlet.http.HttpServlet;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.servlet.http.HttpSession;
+import org.apache.commons.text.StringEscapeUtils;
 
 @WebServlet("/accueil")
 public class Accueil extends HttpServlet {
@@ -17,7 +18,7 @@ public class Accueil extends HttpServlet {
             return;
         }
         HttpSession session = request.getSession();
-        String email = (String) session.getAttribute("email");
+        String email = StringEscapeUtils.escapeHtml4((String) session.getAttribute("email"));
         request.setAttribute("email", email);
         request.getRequestDispatcher("/WEB-INF/vue/accueil.jsp").forward(request, response);
     }
diff --git a/WEB-INF/src/controleur/CreerFil.java b/sae/WEB-INF/src/controleur/CreerFil.java
similarity index 61%
rename from WEB-INF/src/controleur/CreerFil.java
rename to sae/WEB-INF/src/controleur/CreerFil.java
index f0cadc3..098a0ff 100644
--- a/WEB-INF/src/controleur/CreerFil.java
+++ b/sae/WEB-INF/src/controleur/CreerFil.java
@@ -2,19 +2,29 @@ package controleur;
 
 import java.time.LocalDateTime;
 
+import jakarta.servlet.annotation.MultipartConfig;
 import jakarta.servlet.annotation.WebServlet;
 import jakarta.servlet.http.HttpServlet;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Part;
 import modele.FilDeDiscussion;
 import modele.FilDeDiscussionDAO;
 import modele.UtilisateurDao;
 import jakarta.servlet.ServletException;
+
+import java.io.File;
 import java.io.IOException;
 import org.apache.commons.text.StringEscapeUtils;
 
 @WebServlet("/creerFil")
+@MultipartConfig(
+    maxFileSize = 1024 * 1024 * 5,
+    maxRequestSize = 1024 * 1024 * 10,
+    fileSizeThreshold = 0
+)
 public class CreerFil extends HttpServlet {
+    private static final String UPLOAD_DIR = "uploads";
 
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
@@ -37,13 +47,37 @@ public class CreerFil extends HttpServlet {
             req.getRequestDispatcher("/WEB-INF/vue/creerFil.jsp").forward(req, res);
             return;
         }
+
+        Part filePart = req.getPart("file");
+        String fileName = null;
+        if (filePart != null && filePart.getSize() > 0) {
+            fileName = getFileName(filePart);
+            String uploadPath = getServletContext().getRealPath("") + File.separator + UPLOAD_DIR;
+            File uploadDir = new File(uploadPath);
+            if (!uploadDir.exists()) {
+                uploadDir.mkdir();
+            }
+            filePart.write(uploadPath + File.separator + fileName);
+        }
+
         f.create(new FilDeDiscussion(
             -1,
             nom,
             LocalDateTime.now(),
             createuremail,
-            description
+            description,
+            fileName
         ));
         res.sendRedirect(req.getContextPath() + "/listerFil");
     }
+
+    private String getFileName(Part part) {
+        String contentDisposition = part.getHeader("content-disposition");
+        for (String cd : contentDisposition.split(";")) {
+            if (cd.trim().startsWith("filename")) {
+                return cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
+            }
+        }
+        return null;
+    }
 }
diff --git a/WEB-INF/src/controleur/Fil.java b/sae/WEB-INF/src/controleur/Fil.java
similarity index 100%
rename from WEB-INF/src/controleur/Fil.java
rename to sae/WEB-INF/src/controleur/Fil.java
diff --git a/sae/WEB-INF/src/controleur/Like.java b/sae/WEB-INF/src/controleur/Like.java
index 6224d8e..d268a99 100644
--- a/sae/WEB-INF/src/controleur/Like.java
+++ b/sae/WEB-INF/src/controleur/Like.java
@@ -24,15 +24,11 @@ public class Like extends HttpServlet {
         int messageId = Integer.parseInt(req.getParameter("messageId"));
         MessageDao messageDao = new MessageDao();
 
-        if (req.getParameter("like") != null) {
-            messageDao.like(messageId, userEmail);
+        if (messageDao.updateLike(messageId)) {
+            res.sendRedirect(req.getHeader("Referer"));
         } else {
-            messageDao.unlike(messageId, userEmail);
+            res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Erreur lors de la mise à jour du like.");
         }
-
-        res.sendRedirect(req.getHeader("Referer"));
-
-        //TODO: Implement the like and unlike methods in MessageDao
     }
     
 }
diff --git a/WEB-INF/src/controleur/ListerFil.java b/sae/WEB-INF/src/controleur/ListerFil.java
similarity index 100%
rename from WEB-INF/src/controleur/ListerFil.java
rename to sae/WEB-INF/src/controleur/ListerFil.java
diff --git a/WEB-INF/src/controleur/Logout.java b/sae/WEB-INF/src/controleur/Logout.java
similarity index 100%
rename from WEB-INF/src/controleur/Logout.java
rename to sae/WEB-INF/src/controleur/Logout.java
diff --git a/WEB-INF/src/controleur/Register.java b/sae/WEB-INF/src/controleur/Register.java
similarity index 100%
rename from WEB-INF/src/controleur/Register.java
rename to sae/WEB-INF/src/controleur/Register.java
diff --git a/WEB-INF/src/controleur/SuivreFil.java b/sae/WEB-INF/src/controleur/SuivreFil.java
similarity index 100%
rename from WEB-INF/src/controleur/SuivreFil.java
rename to sae/WEB-INF/src/controleur/SuivreFil.java
diff --git a/WEB-INF/src/modele/Abonnement.java b/sae/WEB-INF/src/modele/Abonnement.java
similarity index 100%
rename from WEB-INF/src/modele/Abonnement.java
rename to sae/WEB-INF/src/modele/Abonnement.java
diff --git a/WEB-INF/src/modele/AbonnementDao.java b/sae/WEB-INF/src/modele/AbonnementDao.java
similarity index 100%
rename from WEB-INF/src/modele/AbonnementDao.java
rename to sae/WEB-INF/src/modele/AbonnementDao.java
diff --git a/sae/WEB-INF/src/modele/DS.java b/sae/WEB-INF/src/modele/DS.java
index f34509c..a9b4271 100644
--- a/sae/WEB-INF/src/modele/DS.java
+++ b/sae/WEB-INF/src/modele/DS.java
@@ -15,9 +15,9 @@ public class DS {
     }
 
     public Connection getConnection() {
-        String url = "jdbc:postgresql://psqlserv/but2";
-        String login = "othemanekhachnaneetu";
-        String pwd = "moi";
+        String url = "jdbc:postgresql://localhost:5432/postgres";
+        String login = "postgres";
+        String pwd = "";
         Connection con = null;
         try {
             con = DriverManager.getConnection(url, login, pwd);
diff --git a/WEB-INF/src/modele/FilDeDiscussion.java b/sae/WEB-INF/src/modele/FilDeDiscussion.java
similarity index 83%
rename from WEB-INF/src/modele/FilDeDiscussion.java
rename to sae/WEB-INF/src/modele/FilDeDiscussion.java
index 92c5c3e..8fa5b8b 100644
--- a/WEB-INF/src/modele/FilDeDiscussion.java
+++ b/sae/WEB-INF/src/modele/FilDeDiscussion.java
@@ -8,16 +8,18 @@ public class FilDeDiscussion {
     private LocalDateTime dateCreation;
     private String createurEmail;
     private String description;
+    private String logo;
 
     public FilDeDiscussion() {
     }
 
-    public FilDeDiscussion(int id, String nom, LocalDateTime dateCreation, String createurEmail, String description) {
+    public FilDeDiscussion(int id, String nom, LocalDateTime dateCreation, String createurEmail, String description, String logo) {
         this.id = id;
         this.nom = nom;
         this.dateCreation = dateCreation;
         this.createurEmail = createurEmail;
         this.description = description;
+        this.logo = logo;
     }
 
     public int getId() {
@@ -59,4 +61,12 @@ public class FilDeDiscussion {
     public void setDescription(String description) {
         this.description = description;
     }
+
+    public String getLogo() {
+        return logo;
+    }
+
+    public void setLogo(String logo) {
+        this.logo = logo;
+    }
 }
diff --git a/WEB-INF/src/modele/FilDeDiscussionDAO.java b/sae/WEB-INF/src/modele/FilDeDiscussionDAO.java
similarity index 92%
rename from WEB-INF/src/modele/FilDeDiscussionDAO.java
rename to sae/WEB-INF/src/modele/FilDeDiscussionDAO.java
index 4ae597e..38a0e54 100644
--- a/WEB-INF/src/modele/FilDeDiscussionDAO.java
+++ b/sae/WEB-INF/src/modele/FilDeDiscussionDAO.java
@@ -20,6 +20,7 @@ public class FilDeDiscussionDAO {
                 f.setDateCreation(rs.getTimestamp("datecreation").toLocalDateTime());
                 f.setCreateurEmail(rs.getString("createuremail"));
                 f.setDescription(rs.getString("description"));
+                f.setLogo(rs.getString("logo"));
             } else {
                 System.out.println("Fil de discussion inexistant");
             }
@@ -31,10 +32,11 @@ public class FilDeDiscussionDAO {
 
     public void create(FilDeDiscussion filDeDiscussion) {
         try (Connection con = DS.instance.getConnection()) {
-            PreparedStatement pstmt = con.prepareStatement("INSERT INTO filDeDiscussion (nom, createuremail, description) VALUES (?, ?, ?)");
+            PreparedStatement pstmt = con.prepareStatement("INSERT INTO filDeDiscussion (nom, createuremail, description, logo) VALUES (?, ?, ?, ?)");
             pstmt.setString(1, filDeDiscussion.getNom());
             pstmt.setString(2, filDeDiscussion.getCreateurEmail());
             pstmt.setString(3, filDeDiscussion.getDescription());
+            pstmt.setString(4, filDeDiscussion.getLogo());
             pstmt.executeUpdate();
         } catch (Exception e) {
             System.err.println(e.getMessage());    
@@ -53,6 +55,7 @@ public class FilDeDiscussionDAO {
                 f.setDateCreation(rs.getTimestamp("datecreation").toLocalDateTime());
                 f.setCreateurEmail(rs.getString("createuremail"));
                 f.setDescription(rs.getString("description"));
+                f.setLogo(rs.getString("logo"));
                 filsDeDiscussion.add(f);
             }
         } catch (Exception e) {
diff --git a/sae/WEB-INF/src/modele/Message.java b/sae/WEB-INF/src/modele/Message.java
index 6bdb0bb..4b743b4 100644
--- a/sae/WEB-INF/src/modele/Message.java
+++ b/sae/WEB-INF/src/modele/Message.java
@@ -12,7 +12,7 @@ public class Message {
     private int filId;
     private String auteurEmail;
     private String fileName;
-    private int likeCount;
+    private boolean likeCount;
 
     public Message() {
     }
@@ -25,7 +25,7 @@ public class Message {
         this.filId = filId;
         this.auteurEmail = auteurEmail;
         this.fileName = fileName;
-        this.likeCount = 0;
+        this.likeCount = false;
     }
 
     public int getId() {
@@ -76,17 +76,24 @@ public class Message {
         this.fileName = fileName;
     }
 
-    public int getLikeCount() {
+    public boolean getLikeCount() {
         return likeCount;
     }
 
-    public void setLikeCount(int likeCount) {
+    public void setLikeCount(boolean likeCount) {
         this.likeCount = likeCount;
     }
 
+    public String afficherLike() {
+        if (likeCount == true) {
+            return "Vous avez aimé ce message";
+        }
+        return "Vous n'avez pas aimé ce message";
+    }
+
     @Override
     public String toString() {
         return "Message{" + "id=" + id + ", contenu=" + contenu + ", datePublication=" + datePublication + ", filId="
-                + filId + ", auteurEmail=" + auteurEmail + "like" + likeCount + '}';
+                + filId + ", auteurEmail=" + auteurEmail + "like" + afficherLike() +'}';
     }
 }
diff --git a/sae/WEB-INF/src/modele/MessageDao.java b/sae/WEB-INF/src/modele/MessageDao.java
index 4294c7b..729a4df 100644
--- a/sae/WEB-INF/src/modele/MessageDao.java
+++ b/sae/WEB-INF/src/modele/MessageDao.java
@@ -21,7 +21,7 @@ public class MessageDao {
                 message.setFilId(rs.getInt("filId"));
                 message.setAuteurEmail(rs.getString("auteurEmail"));
                 message.setFileName(rs.getString("fileName"));
-                message.setLikeCount(rs.getInt("likeCount"));
+                message.setLikeCount(rs.getBoolean("likeCount"));
             } else {
                 System.out.println("Message inexistant");
             }
@@ -44,7 +44,7 @@ public class MessageDao {
                 message.setFilId(rs.getInt("filId"));
                 message.setAuteurEmail(rs.getString("auteurEmail"));
                 message.setFileName(rs.getString("fileName"));
-                message.setLikeCount(rs.getInt("likeCount"));
+                message.setLikeCount(rs.getBoolean("likeCount"));
                 messages.add(message);
             }
         } catch (Exception e) {
@@ -67,7 +67,7 @@ public class MessageDao {
                 message.setFilId(rs.getInt("filId"));
                 message.setAuteurEmail(rs.getString("auteurEmail"));
                 message.setFileName(rs.getString("fileName"));
-                message.setLikeCount(rs.getInt("likeCount"));
+                message.setLikeCount(rs.getBoolean("likeCount"));
                 messages.add(message);
             }
         } catch (Exception e) {
@@ -115,37 +115,29 @@ public class MessageDao {
             System.out.println(e.getMessage());
         }
     }
-
-    public boolean like(int id, String email) {
-        boolean liked = false;
-        try(Connection con = DS.instance.getConnection()) {
-            PreparedStatement ps = con.prepareStatement("SELECT * FROM like WHERE messageid = ? AND auteuremail = ?");
-            ps.setInt(1, id);
-            ps.setString(2, email);
-            ResultSet rs = ps.executeQuery();
-            if (rs.next()) {
-                liked = true;
-            }
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-        return liked;
-    }
-
-    public boolean unlike(int id, String email) {
-        boolean unliked = false;
+    
+    //cette methode permet de mettre a jour le nombre de like d'un message en fonction de l'action de l'utilisateur (like ou unlike)
+    public boolean updateLike(int id) {
         try(Connection con = DS.instance.getConnection()) {
-            PreparedStatement ps = con.prepareStatement("SELECT * FROM like WHERE messageid = ? AND auteuremail = ?");
+            PreparedStatement ps = con.prepareStatement("SELECT likeCount FROM message WHERE id = ?");
             ps.setInt(1, id);
-            ps.setString(2, email);
             ResultSet rs = ps.executeQuery();
             if (rs.next()) {
-                unliked = true;
+                boolean currentLikeStatus = rs.getBoolean("likeCount");
+                boolean newLikeStatus = !currentLikeStatus;
+                ps = con.prepareStatement("UPDATE message SET likeCount = ? WHERE id = ?");
+                ps.setBoolean(1, newLikeStatus);
+                ps.setInt(2, id);
+                ps.executeUpdate();
+                return true;
+            } else {
+                System.out.println("Message inexistant");
+                return false;
             }
         } catch (Exception e) {
             System.out.println(e.getMessage());
+            return false;
         }
-        return unliked;
     }
 
 }
diff --git a/WEB-INF/src/modele/Utilisateur.java b/sae/WEB-INF/src/modele/Utilisateur.java
similarity index 100%
rename from WEB-INF/src/modele/Utilisateur.java
rename to sae/WEB-INF/src/modele/Utilisateur.java
diff --git a/WEB-INF/src/modele/UtilisateurDao.java b/sae/WEB-INF/src/modele/UtilisateurDao.java
similarity index 100%
rename from WEB-INF/src/modele/UtilisateurDao.java
rename to sae/WEB-INF/src/modele/UtilisateurDao.java
diff --git a/sae/compilation.md b/sae/compilation.md
deleted file mode 100644
index ed1bf26..0000000
--- a/sae/compilation.md
+++ /dev/null
@@ -1 +0,0 @@
-javac -d WEB-INF/classes -cp ../../lib/servlet-api.jar:../../lib/commons-lang3-3.17.0.jar:../../lib/commons-text-1.13.0.jar:../../lib/jackson-datatype-jsr310-2.13.0.jar:../../lib/jackson-annotations-2.15.3.jar:../../lib/jackson-core-2.15.3.jar:../../lib/jackson-databind-2.15.3.jar:../../lib/jackson-dataformat-xml-2.15.3.jar  WEB-INF/src/controleur/*.java WEB-INF/src/modele/*.java
diff --git a/sae/uploads/Abr.png b/sae/uploads/Abr.png
deleted file mode 100644
index 104b2328ee7164628311b8ee28dc54376ec0b75d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 22686
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

diff --git a/sae/script.sql b/script.sql
similarity index 99%
rename from sae/script.sql
rename to script.sql
index 1932907..ba4d366 100644
--- a/sae/script.sql
+++ b/script.sql
@@ -17,6 +17,7 @@ CREATE TABLE FilDeDiscussion (
     dateCreation TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
     createurEmail VARCHAR(100),
     description TEXT,
+    logo VARCHAR(255),
     CONSTRAINT pk_fil PRIMARY KEY (id),
     CONSTRAINT fk_createur FOREIGN KEY (createurEmail) REFERENCES Utilisateur(email)
         ON DELETE SET NULL
diff --git a/uploads/Abr.png b/uploads/Abr.png
deleted file mode 100644
index 104b2328ee7164628311b8ee28dc54376ec0b75d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 22686
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

-- 
GitLab