From 1728610e015bf3ea524188a7b065a2e2342d45c2 Mon Sep 17 00:00:00 2001
From: MaximeOLIVA <maxime.oliva@etu.univ-cotedazur.fr>
Date: Tue, 7 Feb 2023 16:31:13 +0100
Subject: [PATCH] change_password

---
 .../database_helper.cpython-310.pyc           | Bin 3041 -> 3468 bytes
 Lab2/__pycache__/server.cpython-310.pyc       | Bin 3234 -> 3780 bytes
 Lab2/database.db                              | Bin 28672 -> 28672 bytes
 Lab2/database_helper.py                       |  20 ++++++++++---
 Lab2/server.py                                |  28 +++++++++++-------
 5 files changed, 34 insertions(+), 14 deletions(-)

diff --git a/Lab2/__pycache__/database_helper.cpython-310.pyc b/Lab2/__pycache__/database_helper.cpython-310.pyc
index 3550a2af235fb8d1abfe683389d03be3c07d2c65..2521f7a2f640d7d312631b2237ca65301146cc25 100644
GIT binary patch
delta 1731
zcmaDT-XqPI&&$ijz`($;Fz-?FIo^qUGK?(~wM!JGQlwiLqWDu}Qe;~gq6AVHgBdjC
zUV;?*X)@koOs|@_p^KlHfq_Aju?R%1WGLd8?8%tP$Tj&MQ?nDu$Xo2G6{*RkC8<Rm
z3=9lN1SbOn!!3^FoYcg;_>?4G1_p*=9tH*mCPp4c9!54WEaI8Gn0c}w$e1E-kaD)<
z{M_8klF2SCPDTjhz$S4g7o{eaq{f#PrxuAJ43lBx0vpA~SR^)i2g{rQkYTsjl1qz<
z^NS#ca-^k}BxmI3rE0Pi@q^qb03swn_OXCWLw7SzVrfZ6YF<fZa$-rU{N#nK(u~rR
z_p;VIfc&7zbc?klKRY!KVicMq*>dvJ<1_QL5$+R0xKDO+BZutdnQS}KL2fJpIRNay
zB1w>Y_&}k|TqFZxgQcWEEHv}kLFVU|mY9Gn0EGe*BNrndBL^c3BOlx%HpU`(1_p*?
z#>snGBqm>A_sfuDU|@L32r^F`WD5(zmRoE^sl}x^C0KpK1NLZ0zH4q`W{wlcN)d1b
zLaYQ?3W-KG#v&z{g$e;R49$$Sj3tcC3=5bRGSo8FFfCwCVXR?HXI#j{$WX(yfMp>=
z3X>#5EprWXI72W4BN#?9q%Z_CXfpd%X$HIcxH^X@1ULo<hx-S)Oy12YRbK>hy(TNz
zo+2#4rwR2FIDWyw2aaU4;NypSC?K)8xIDio#UJD+kU}O#4sbxi6Q(lQKcI{N#*_Ow
zLd`*;7~)n04npLJQUnDonoXRU#qs%hIhlE>QIn-Pr5RNwn{zG<#p3W=Y>5R0sd*`y
ztdJ-GyB%cWEtZtTlEhn#Md-<sFFmy+9wZl^3W}Gs$@*N1j2e>zxnw0k$)ZX)g|U{Y
zgrS*X0b>nQ4Py;M8q?%^%&PUF0WOXqt_q>Su0g>H!LEn^R<KpDR|xlT4RTd*^>y_0
z0r9Ov+={@-of+(`DDJ$}@&ah6MKKo_=AgTZKRF{YFFiFLrl=GYw4gN2#K^)3$^;yc
zv{IxwxsgMpo`r#d!5O4Phk=0s;@E`@wTv~43z$+sPKKlv#s$of6jUUV!W7Jq!W_(?
z$>LX~3QZwk|0}o!`TIhB1@Qz}*w!8qRft3Z3RsZK&7lPqxMUGZ&PYwphJ<E(YDH#o
zNpU^MX`m>DBy}FfA}vsYV4mE_CLw0Tz`#%?1aUMdVb?I!Fr_n3zQ?Rm@9XIo>>3oJ
zkeOGKui)z%9PH@s8myoJ4%YY}S7*-vPglPX9Y{FG2fO;YxCZIK6lyAzCFYc-7Hin+
zD1eYAJPvO0fc+F-oSK)CT6Bva!YfKm&Me4G%`3UZo|{@+oS2?k5Aqwb*SHJvi%WbV
zl5HSAK}ui|cv(@T2PzN*i&#OWA!}MrVsUm66DU2ig9vbX1!)17xJA++F<B4+DqkRZ
z5tLDiR6t@H3=H86MVcTcD6qgLBe@3@nnmF7=CH}lPbtkwwFBkpVg&{U1`Y-uMiwRx
dCJuHEP7Y2E9u7_pJ`P?EZVny}ehw}kb^wx$T9N<&

delta 1358
zcmeB?ekjhD&&$ijz`($;l<PtAX6}i6GK?h?wMzsUgBdiXUV<e2G#PI(rvI9Fpo^b{
zfq_Aju?R%1WGLdC9Lbnj&&|NVkPK1>!ys7>1_lOa1_p-WBnAeC5{3ngDU1slYZ+=7
z7BDSjsAVi+PGL%6Zf5EitYxZUTEMc9p_aLZaRF-$^Fl^OhH!=y1{MYuhGu3)hCB{K
zhGM01Mn(n@jAUR0nZdRYLbESqV610IVF+f>WbrFvW?*2b;wnzgNX<>uD=y5r#aN`t
zQN+f;z)-}_z`$^eExEL)IKSu?OMXFW-Yu4*)Wno1-qecJ<kFJV;^d;tf|6To$@#gt
znI*SalXLQmQ#Dy`u_Wi`<rVRQw6mmT=A_<YE-uU|;sluqCb$^%7#MExCl{qAmZZj~
zB$gy5B^IZG)E5gdFfed2axn6MvCKaXW*){O(aDDyo1H*Gc8eWqHIiviBN-TOaU|!Y
zCg#PbB#DCpk%xhSfr*iak%y5D42#4kcQ8%n0~u2!2679?uE{#gPDWr8zyv5xZ*fB%
zR$81|q<}C<hLH<w4jW^U!sG?ab9})jfm{tX?iNQ{YDscNeqO33OOYhVd?^qClE1|Q
zG78DbU~701OG`3R^GY(46H8JxC-<;OGpbBp!BVd!0ZK1Sw^&Q^vs3dRMu8m%Ccs+R
za`MyTGxJO*2eOJXs!h(}ke%GZx&s_S;9v(ks7MK9Kgg4s%tfjoHpneS${-flC@=vw
zj~!%Qerbu_<T^HaMvcky*s@*K85kH|GJ+H<g51M`Fya<lQEG8%P6<}0@qk?&lJA<E
zn3>}<*^gb8QG0R@M{+R8yb!k{uwlsV(E?ckb_$pPyN5HgI6glwCo?ZK5)}SI;F#oM
z<YVMuWP!#38)K2qWF^jp;i$0y_Vg{b#Dap<ycA7Vh!es72HA6q1(eu|Kq&(~Hu%z0
zOTbAnJ{9Eh)X5TDifsCzT*@@LkV8U550p;?QW$HQN*J0M7BJQ@Eo7Wr$fZ>87aHK=
z7~-lB8tfVrtPt!PqEL`nTwI=Cl%im(pq`gn4&xfCD};Nv2DvJLEdWU-C#9qprxd3c
z8iK6UOU}<#w+?YD0>?iy*y&N+NCp&%U<s;v{^X3ry!6y~m^CG!5aR=f7z-m0BF!3r
zVv!%5vv0Ac<s=qo7cqg%0~I<&;6M}waY0!Joa&2IKwLEtp#dVaL4*#70EJ2s$T(0K
z+B1MiC;^T<4x8Nkl+v73J5b^&mSJFE;9%fkWMSf9;$Y|C;^5@q<ly1p<ly7r<>2Ar
F2LLyK7ry`i

diff --git a/Lab2/__pycache__/server.cpython-310.pyc b/Lab2/__pycache__/server.cpython-310.pyc
index 82e18c8df79c6d8b9169717568d9d4daa15f5fab..b5132ee498d8e00d6aa1e48821d75a3350b8b256 100644
GIT binary patch
delta 1352
zcmZ1^c|?{kpO=@5fq{WxQQo6uAK{67GK@wOwZA*0a%6F)$fxk6Gp4ZiGNmY_D7G*(
zGe!xeD5WU3FhmKbvZttIGZjrwQBCED7fIz<Ai9u&ks*aC7>qU5CVMenXXKu&#59jl
zVDmvHCML#}laH`eF-lIhXH8~QnY@^Fp|~sq149uXh>&AoV9;bMVg|A0Cr7gxGAd8*
zWm94_p1grgo>61+1-1l3b&w<vh)@L)U@a_AEg%7Y1_p*G_MH6m`25lmO~xYS$%*VT
z;w}sf48<T_984UHe2grNEKDp+MVgbRu<O@@tYc+hU~mShna9AuP{Oc)aUnx3LkeRJ
zLm5MnZweEXW`@uuOf?KCOp*-Ej43SHEJfa6J~I-Zc>zleLkgoL!$QU)&l2VZtT0|J
zV+r#DHaHJ#PQ4^U4O2E#k$VaA0`?ll8io{RNrr_?MXo8V!3-&E!3-(v!3-%J!3-&!
z5WXgtUlAx2qPX*OQUVf-i_7ziQlhx?Qp;hSA}LTnG8OSMFfhD40}2&TFs+0LWKL#e
zU?>6wo+em8gduYpBLjmb2T~v^O)lh6%!}eL$<I#B3(1F>dy79gBQY;MHNF69t0r@i
zGRSyg5Fr90IN<~+ITh(MFfasw!c~TWfq{cbf>D8y4-9!21)#A2iU}5`BK^q^IAVCg
z&SEYCMPiZOWKT|MHjqz?geNDm3s0`)6cJ7b8OFiDz`(`C!pOzQ!c=59c?stODVXP`
zz&*zTF-3RsJT7T1h$$eqf!uqGwJb5GG_?rLu?7qb3<Z-Pb1Bz@SXH9>iOI?NrFkX#
z1^LA#@wutR#fj;u$)H>U!=R+Y21`15m`TSp1(I}3Qy@vlw1jB^Gd%hkYZ!}+OPIik
z1r+CuMTR9z3s`Fy>mi8%lFAk`*D}>G73rt21T&x~2~AE&Qn<wqbzKyHYHng?PJB^n
za%MqhYF<eZDBvNv%M9dw9S{LZ4e)#h5`cs^DCY<zXQU?AXU9W~Nv+5%E-8-U1_gjG
z#Q)GJkK%!-C{E2wNiB+E1F1+&K?~7aJRo6M$TfqaP63<_I2hR&nf|jeG5zCXW?|%G
z6a%FNaGnIEh9XAG$?V)KUDX&E7-oVru`n<&@Gy!n7J)==am2^xCT8Zv$A@T&-C|A4
zNi5DTVgmUB6dOe#wUC&10EyX5{>rVQq5@)SfCx<x0ZNrch9DLwqKhm+EVaoNJVrJa
z3=9k+44^`SgOP)YkA;g7j5)X%`6Rg*`2@Ha`M9|l`NX&w`9NYqT#Ou|94u^%Jd7;=
E0Ld#5j{pDw

delta 719
zcmX>iyGW8RpO=@5fq{WxBG-dtEB=XmGK^9awZChm$fqc@FhmKZvZp9!GZl5GD5Y}5
z3#W1{5Lw8;$dJMm491$ulam;)GxAKfVw%S&xcMd%6BDE6<U1@?j8c=sS(6!+C+}um
zC@#amz)-{oB4imD7&O_6m_cm0$;E7jj7pQ2vMDi|Og_OT&!|561zUol8c31{M5urW
zuof1m7LWix0|P@8drp3Oe12((CS#G(<VtoKaaRTghGLK|4kivpK1LQs7A6*^B8|yw
z*!3shX5~$dVPIe=VOYSpkfD|#g|UXAjG;&;g$YVCL+BEw1<W-JDU6Z~3mJ>FN|+X~
zz<9NcB}@xgYZz-7QkW$f7BUrSq_6}tq%Z_Cq_74vq_71uXtMhisZH+Zkd@bDD&l2e
zV0d{3<XD6k;J$v#p(uKbKRF{YFFiHBAhEc(JijPKlc`8)G9#C`QjsnL14AIlGeQgu
z3>-`njC_oIi~>w7j4c0Im|2*LbSKwv#%O}f)nqOLg+-AL0|Ub?;q=s!_|oFkqWF}=
zlEnDb+{DZrO{OBX$&6e&!U-VrI2afhxR_WNxfofPiu5Nta6OQMIyG|&BLhPb*hm(L
zk=m23xTU$lF(C}{hSKB&ZYfqh1_p-A$@SdIjCzw5cvmW`GB7aIfQ)8gU|`^36k#j^
ziQM9dkIzla%!`i?(G;EhhF6Bo8f1j|WIjF>d1Vk&9Ykn=2#{xs^g%3;*+r_8!}yFW
zOc)p#L>NHv$ic|L#K+3T$j8FP$j8CO$S29g$S1(X$j8ma$j1i};}GItVPoWBWcddG
DE-Hz<

diff --git a/Lab2/database.db b/Lab2/database.db
index 879c356c93d13a5af64b630499fc883bd6de459a..1b858e61be87b732faaf70f226460eae399e4454 100644
GIT binary patch
delta 363
zcmZp8z}WDBae_3X^F$eER%ZsiaIcLii}^WO`F;7@`9=6{Y!(#g;bY<VWw4p-FR#m8
zmXel|R$N@3Uz9TWhFmcZ|3M2z4oQAdNnu09$rI&8CqIxE<jN~6NQ9`_+%8{hAi}{X
z%D}&!znI^I?=9bUzD7Q8KGDsB0)KhyO*mK?j13i&6B82?i&KhI3=MM=GjsHk^K+Av
tQqoaHGE#GL@)b%_i%U${$<oD!p(~OY%UChA5ut1I+c-8sUJeE%004yOap3>}

delta 105
zcmZp8z}WDBae_3X`9v9KR&xfuXp@a8i}^X3`Mvqu`9=6{Y!*~F!8iGaTrrCkBZuVV
z1#-IFspSQU#l_|MMJa}x+vRHwcv$$}GVpKbFXlJld%Ias;V$3iw{dKOyetez005wL
B9R>gZ

diff --git a/Lab2/database_helper.py b/Lab2/database_helper.py
index 99a97b0..a14e796 100644
--- a/Lab2/database_helper.py
+++ b/Lab2/database_helper.py
@@ -76,6 +76,17 @@ def tokenToEmail(token):
         return None
 
 
+def tokenToPassword(token):
+    try:
+        email = tokenToEmail(token)
+        cursor = get_db().cursor()
+        cursor.execute("SELECT PASSWORD FROM USERS WHERE EMAIL=?;", [email])
+        password = cursor.fetchone()[0]
+        return password
+    except:
+        return None
+
+
 def is_online(token):
     try:
         cursor = get_db().cursor()
@@ -103,26 +114,27 @@ def get_data_email(email):
         return None
 
 
-
 def change_password(email, newpassword):
     try:
-        sql = "UPDATE USERS SET password = 'newpassword1' WHERE email = 'cbdgsdsd11mail.com';"
-        get_db().execute(sql)
+        sql = "UPDATE USERS SET PASSWORD = ? WHERE EMAIL = ?;"
+        get_db().execute(sql, (newpassword, email))
         get_db().commit()
         return True
     except:
         return False
 
+
 def check_email_exists(email):
     cursor = get_db().cursor()
     cursor.execute("SELECT email FROM USERS WHERE email=?", (email,))
     result = cursor.fetchone()
     return True if result else False
 
+
 def postMessage(email_sender, email_recipient, message):
     try:
         get_db().execute("INSERT into MESSAGES (EMAIL_RECIPIENT, EMAIL_SENDER, MESSAGE) values(?, ?, ?)", [email_recipient, email_sender, message])
         get_db().commit()
         return True
     except:
-        return False
\ No newline at end of file
+        return False
diff --git a/Lab2/server.py b/Lab2/server.py
index 28abb6e..471f7d0 100644
--- a/Lab2/server.py
+++ b/Lab2/server.py
@@ -81,13 +81,21 @@ def sign_out():
 def change_password():
     data = request.get_json()
     if('token' in data and 'oldPassword' in data and 'newPassword' in data):
-        if database_helper.is_online(data['token']):
-            email = database_helper.tokenToEmail(data['token'])
-            #check old password is good
-            if database_helper.change_password(email, data['newPassword']):
-                return "", 204
+        if(len(data['oldPassword']) > 5 and len(data['newPassword']) > 5):
+            if database_helper.is_online(data['token']):
+                email = database_helper.tokenToEmail(data['token'])
+                password = database_helper.tokenToPassword(data['token'])
+                if(data['oldPassword'] == password):
+                    if database_helper.change_password(email, data['newPassword']):
+                        return "", 204
+                    else:
+                        return "", 400
+                else:
+                    return "", 403
+            else:
+                return "", 401
         else:
-            return "", 401
+            return "", 406
     else:
         return "", 400
 
@@ -123,7 +131,7 @@ def get_user_data_email(token, email):
 @app.route("/account/post_message", methods = ['POST'])
 def post_message():
     data = request.get_json()
-    if('token' in data 
+    if('token' in data
         and 'message' in data
         and 'email_recipient' in data):
         email_sender = database_helper.tokenToEmail(data['token'])
@@ -137,10 +145,10 @@ def post_message():
             else:
                 return "", 404
         else:
-            return "", 404
+            return "", 403
     else:
-        return "", 401
-            
+        return "", 400
+
 
 def generate_token():
     characters = string.ascii_letters + string.digits
-- 
GitLab