From 5d81e5cfa5051d79c3627cd3301d7f1820d322b6 Mon Sep 17 00:00:00 2001
From: MaximeOLIVA <maxime.oliva@etu.univ-cotedazur.fr>
Date: Thu, 9 Feb 2023 20:00:06 +0100
Subject: [PATCH] signin and signout

---
 .../__pycache__/server.cpython-310.pyc        | Bin 4748 -> 4605 bytes
 Twidder (Lab3)/database.db                    | Bin 28672 -> 28672 bytes
 Twidder (Lab3)/server.py                      |   5 +-
 Twidder (Lab3)/static/client.js               |  90 ++++++++++++------
 4 files changed, 63 insertions(+), 32 deletions(-)

diff --git a/Twidder (Lab3)/__pycache__/server.cpython-310.pyc b/Twidder (Lab3)/__pycache__/server.cpython-310.pyc
index 8b3cf9d8810871ddae71355c35d4efa59533d797..cf80ae791831a6db90d10bf6b22540a1d7baecea 100644
GIT binary patch
delta 1460
zcmeBC{j1EI&&$ijz`($;+WKj-#YA3N#;A$fafzJij47<WOetI`+${{vj8QzPoLO8c
zJSi}7-V{EtI4@Y7A1*GCA_x}e1B(l#2t&;gNf8B$^Ml33QdlOwig$z=rktVzmJ~@*
zO;KxMh!RavPtj;$h!RWXNYTt@Dq5YQmC6|}p31pEVj%+~Lkd$c7;9>8Uc|`CxY>vK
z9i#XyhL<N97#LPE6-hEMFl5eTgs><3vg!-o;!jB|NlZ#CPL0n<%_&GNn%u}LDu0Wm
zD7Cnth?{|d0YdOFFfiO=FV0NQi!Ut@oV<lKnNel31e<~;GXnzyD+2?AGXn!daS{Uq
zLkYtI#)S;E3@MB?3}p;O`YB8hdU7J0Tzv{l4Pz!_EmH~80@fPF8io``Nrr_?MY<(y
zHB8NnDXeKA=d%Sfq_77wXma=!@q-*7faLaxj0_C7SWEJ=Q}c?XK$6lRLWY5XL6f}*
z<dz~?kbois149%~VrfZ6YF<fZa$-s9Exz>ByveWGg!zhCK&qLGlt2pACh<s4mS*Qv
z)dsmAWFiL>2O}FJ(|-{r7DhHE7ABVe0?a&&EKDp+MVgac+2e#YA;DP00n)DuB4j47
zXO|TO+sU4jpB|rITC$R{NNw_6b{TPdkh!4HV`JiA<YHujn4~*dfa6=V7D%%g!gnvv
zAlR8xps@ssvB``K3`HQTpmt|Y1qpzC&57h|kROT^K!z$#PULjdfcOx^hle91Ho@@<
za#WEi0|SHi<WrpLjHZ)6ai-XUodhx%VjW8n*i4YuicCOBKsY_MB)+sbwJ08xY~oXM
z6EkyGG8L(TEtx!-OI<RVfq~&O9|Hpe8xsc;3nLd33nK?33saHR<jY(u*dXRlZseA5
z1bJMOtw<20RR}}~g9s52AqpbEZUzUkA&3k1J}Z)Yj3?jXmev5PQUfUf`&I+Q0(%ck
zfc<E}z`#&AS)NCe(PFYEkFmHJNR2rt5ukW)@_rsMcCd$vEGKW^(c<m`sj~(V4wIkq
zoQAo58?T~_K1dYdEOr!Uede{|Msn6<3qEyLP%@Y?IfYM`(SGtIz5{{aaBu{rQhu<N
z@kOc0nFX1tc_p`4@=9}ZiX=cbfD<>^8Y2)F6fY>r94T@pFXmTg0|$ZH<O}>}jN2x&
z3+OYtPc|2DHwFg}$VN>jaB8{5o{^fEl3G+;qysV*98zEc99$qn&rjYcAj+sc`M7{9
zqvT{>!DLr;1_p*3ptKCiJv@vej71=kTO9H6xrv#1@$n&=lDAmXauSQPi<m%$g7YFs
zZ4o%}_=Ci}CvO#0HC6#JH9>?fhybO)A}bIJ6i-DCAQmXJirhggkYkF}CkqJ~$$?}<
d7(m&RgOP)ggNcuYixG?^xfuC`C#MOi0RXe^9k&1g

delta 1576
zcmeyX+@s2y&&$ijz`(#TQ}t<b|3qF{#-fSZafvMHj47<WOevfxTrCXEj8QzPoLO8c
z+$lUzao!X@usAPRoF6VOkRk{c=L3ri!NrABM8M+wU~$nDv5BwZBVm>(r>KA>MZl7(
za7}6{>R@rv6pa+k7KSLX6s;8P7KSMCRE`v#Y^I{^DY~hg@e-+=3nUjZFfybt1%t7s
z-sUbwR>pdE{gl+4)RNR>koRDik%57MiGhK^nSp_!ScHLrp@d-p<3fg7h8l(<jub|y
z3Cw;gnQk!@aWF72tYj+UXJBB+oXN<*pviQLKP9mwF)6V)H9jLXry#W`iX%BEH8C$f
zB}tR<7E4iTaX}F`0|P@5H-i!bLlF-H1H&ygh%*F1HiAs#U}9lpVPs({65ia+^odaz
zZ2rrWAYB4b3nx!u(U&g*>4@S^E=o--NsTWpPA$@8y2S#rzetFIfnoA{770eF$sDZ7
zjB1l}SQY9)-eQG$Eey$PDU3A?Wei1{DNGQ$glPeD4MPf}Bts2D3X>$mLZ)Jg6y{)t
z5|(C$TE-Hl1*|oU5c!2nMd~$-DJ*HApk)naNMQ?R&}8>35(PO{4C+`==uBi}kYgy4
z2ML4xP^7@Xz@W)i#0(Np1QCLhZP+yVG?|K2K|#V=lAoQLH~Bq_m~v*G2`FGdhH)@)
zFtRZ+{TE?kVPs<xVB}zAVPat_(we-BEsm#%4`hrwh)|fU%`Phl4juNK{Pg(z(vp>o
zMVgZ%*=59CL56{XosEfukqaEoEKEgulY7{|MQejJ%OG6+@(hBVIfW4s*OM6;7>Ynv
zX+k4^Do6nACr%_k>43~r0TF_e?{YW_fV@_u3F1S-XL2LAFsm5@14H0sH%@g%v&ng!
zDKcP3fQ*7zz)}P@1>~6`)5-5RrP&|`Oy=iOm&{~fVE7F3HyaZu(Qq-bfWxH7da^&)
z3O0yIlmBu_)Pp>w$yOu|vReW~NP-9{5FrgB!0rL1y&@wJ7wk1wB%47|5XG0CS`rUR
zUh%29iJ3V?ETA}Kfy6b~Q6T@_Vl7L|DNThXa!49yXDG5{U|=YpJd<0K(Q@)(ZewwC
zkUbU<6Oet#%Ok^RHCc;Ci+ch{g$;;snjFt_8s;4XUPT!LkSM~X?8q*ioXcy)4fYSj
zO_MkAs<S#WFfh!Ue2-U`(Qz^l-+@4I(15ad6hGK6@kOc0nFX1tc_p`4@=9}ZisV2x
zfKw{i8e<R_6e*hQ=<y4U8CiaHHjw{|G$(uUn=$U0+{mxb=s9^Kzq>Tp9UvPunZTNF
zv1g<vrlb}X7wLjhfHcVaS7FJLiIInqg@x@e8>j%#nd~Uw%E&*tT_9OmgMoqJ9!M1^
z*m)R57>ht6w>aYCa}zW3;^RX!r6%(VigSbA69{sz?__;JRSRJdQw>CDfe1Yi0ZMa4
z)*u!rT8f-NEKm>?d4gCV_Y`SNZWlCCa$#U#5Mco2I}Sz;Mh+%E7A{6G=HO!FljLIL
K6PSEmPz?aZ(=5RN

diff --git a/Twidder (Lab3)/database.db b/Twidder (Lab3)/database.db
index 65f3830459f6eb4eeac00519831c3d02ae1efa70..e206d1c7ac9e883e5e2080bc8f604578ce5cee97 100644
GIT binary patch
delta 276
zcmZp8z}WDBae_2s`a~IL#`KK|E9E&)^Ka+B$G?!jd$XWICBF{;JqEFo)Z&ud#0rP>
z+{DZrz2y8{HU<W4qLa7lYfetK7iMJL{6$|_fSZxui@%9~7ry}CwatPGNBGkDcQRP%
z7bf{72UdDjghrYeW~Nq_hvb$!RhpUjC0dvU6dL-OxE30@V%W&Qz+k0cVG$6TSQ+jZ
z8Def|XqxDqm|<=nRp^mw>F8qMm64cdloDbF(mC1Izs8usf|WT`-_O@Lv7#_CEg~(o
p*frlX!_llNJkliDy(q<}s4B-R$)zkaGdHmUq{|_F^BaE=1pqo9TX_Hg

delta 175
zcmZp8z}WDBae_2s<U|=~#>kBcE9Kem@t@}3&cAfCV8RT3ezn}h3WxOE#LOJM<osNg
z$=mfcCqJ-P*kr&iz{$YBli!QKiC<*1q5?a=TAq4whF_AaXK;{zsG(&<P>F$|Uz(?9
zUXn$rcY1nwYMPg4YG&zVTmKqkOGf5UL#O28kgAgK9COD^vyeoWl#KA~@W8OFjNGtb
cqok_*Oy5jnr{tuR^x~A_6hp(!Z~R3R00LJ!SpWb4

diff --git a/Twidder (Lab3)/server.py b/Twidder (Lab3)/server.py
index ea20488..c126024 100644
--- a/Twidder (Lab3)/server.py	
+++ b/Twidder (Lab3)/server.py	
@@ -49,8 +49,11 @@ def sign_in():
             return "", 401
         else :
             token = generate_token()
+            value = {
+                "token" : token
+            }
             if database_helper.log_in(token, data['email']):
-                return token, 201
+                return jsonify(value), 201
             else:
                 return "", 409
     else:
diff --git a/Twidder (Lab3)/static/client.js b/Twidder (Lab3)/static/client.js
index c832ee3..cf894d6 100644
--- a/Twidder (Lab3)/static/client.js	
+++ b/Twidder (Lab3)/static/client.js	
@@ -116,29 +116,44 @@ function signUp(formData) {
 //---------------------------------------SIGN IN---------------------------------------
 
 function signIn(formData) {
-  let username = formData.l_email.value;
-  let password = formData.l_password.value;
+  let user = {
+    email : formData.l_email.value,
+    password : formData.l_password.value
+  }
+  let messageDiv = document.getElementById("error");
 
-  let tokens;
+  if(user.password.length > 5) {
 
-  if(password.length > 5) {
-    let serverAnswer = serverstub.signIn(username, password);
-    let success = serverAnswer.success;
-    let message = serverAnswer.message;
-    let token = serverAnswer.data;
+    let req = new XMLHttpRequest();
+    req.open("POST", "/users/sign_in", true);
+    req.setRequestHeader("Content-type", "application/json;charset=UTF-8")
+    req.send(JSON.stringify(user));
 
-    if(success) {
-      localStorage.setItem("token", token);
-      localStorage.setItem("email_username", username);
-      openTab('homePage');
-    } else {
-      document.getElementById("error").style.display = "block";
-      document.getElementById("error").innerHTML = message;
+    req.onreadystatechange =  function(){
+      if (req.readyState == 4){
+        if (req.status == 201){
+          let resp = JSON.parse(req.responseText);
+          let token = resp.token;
+          localStorage.setItem("token", token);
+          localStorage.setItem("email_username", user.email);
+          displayProfilView();
+          openTab('homePage');
+        } else if(req.status == 409){
+          messageDiv.style.display = "block";
+          messageDiv.innerHTML = "User already connected!";
+        } else if(req.status == 400){
+          messageDiv.style.display = "block";
+          messageDiv.innerHTML = "Wrong data format!";
+        } else if(req.status == 401){
+          messageDiv.style.display = "block";
+          messageDiv.innerHTML = "Wrong username or password!";
+        }
+      }
     }
 
   } else {
-    document.getElementById("error").style.display = "block";
-    document.getElementById("error").innerHTML = "Your password is too short.";
+    messageDiv.style.display = "block";
+    messageDiv.innerHTML = "Your password is too short.";
   }
 
 }
@@ -146,22 +161,35 @@ function signIn(formData) {
 //---------------------------------------SIGN OUT---------------------------------------
 
 function signOut() {
-  let serverAnswer = serverstub.signOut(localStorage.getItem("token"));
-  let success = serverAnswer.success;
-  let message = serverAnswer.message;
+  let messageDiv = document.getElementById("error");
 
-  if(success) {
-    displayWelcomeView();
-    localStorage.removeItem("tab");
-    localStorage.removeItem("token");
-    localStorage.removeItem("browsed_email");
-    document.getElementById("displayprofil").innerHTML = "";
-    document.getElementById("displaywelcome").innerHTML = document.getElementById("welcomeview").innerHTML;
-    document.body.style.backgroundColor = "#0F98B7";
-  } else {
-    document.getElementById("error").style.display = "block";
-    document.getElementById("error").innerHTML = message;
+  let req = new XMLHttpRequest();
+  req.open("POST", "/users/sign_out", true);
+  req.setRequestHeader("Content-type", "application/json;charset=UTF-8")
+  req.setRequestHeader("token", localStorage.getItem("token"))
+  req.send(null);
+
+  req.onreadystatechange =  function(){
+    if (req.readyState == 4){
+      if (req.status == 200){
+        displayWelcomeView();
+        localStorage.removeItem("tab");
+        localStorage.removeItem("token");
+        localStorage.removeItem("browsed_email");
+        localStorage.removeItem("email_username");
+        document.getElementById("displayprofil").innerHTML = "";
+        document.getElementById("displaywelcome").innerHTML = document.getElementById("welcomeview").innerHTML;
+        document.body.style.backgroundColor = "#0F98B7";
+      } else if(req.status == 401){
+        messageDiv.style.display = "block";
+        messageDiv.innerHTML = "User not connected";
+      } else if(req.status == 400){
+        messageDiv.style.display = "block";
+        messageDiv.innerHTML = "Wrong data format!";
+      }
+    }
   }
+
 }
 
 //---------------------------------------MESSAGE MANAGEMENT---------------------------------------
-- 
GitLab