From 99dde7460cb0e95bc4f339975131c9f680022e22 Mon Sep 17 00:00:00 2001
From: MaximeOLIVA <maxime.oliva@etu.univ-cotedazur.fr>
Date: Sun, 5 Feb 2023 20:19:25 +0100
Subject: [PATCH] get_data

---
 .../database_helper.cpython-310.pyc           | Bin 2060 -> 2775 bytes
 Lab2/__pycache__/server.cpython-310.pyc       | Bin 2234 -> 3154 bytes
 Lab2/database.db                              | Bin 20480 -> 20480 bytes
 Lab2/database_helper.py                       |  41 +++++++++++-
 Lab2/server.py                                |  60 +++++++++++++++---
 5 files changed, 91 insertions(+), 10 deletions(-)

diff --git a/Lab2/__pycache__/database_helper.cpython-310.pyc b/Lab2/__pycache__/database_helper.cpython-310.pyc
index 3ebbc7beb6dff05b871c1ac6c6b345a31a21ff7e..adb1fc481d008e3961a353b6de73c0183b481ad2 100644
GIT binary patch
delta 711
zcmeAXxGu_<&&$ijz`(%Z^6!4~X0C~RGK@JBwL@fuQiNL=qPSB;Qbb!AqIgooQp8&r
zqIgpngBdg>Hnyx~VO%-ch&78*dGcJ=eT=G;W7w(~e@(v5mKmYQz`#%>z`($u$y}rY
zV)KFsB@n?0CqP!-V$aD>kIyeHv14FhC>CR2U|?e8V&r4wU}RzBW8`9FgTf+p1_p*?
z#>sP8B-q>-7#ON#CfBnm)u%8?GSo8HFc(SHFo!b)GlVmwFa$F&f?*_>t;y_Hq{hI&
z@RAW^uL8(PEC?svVk=55F3l+^k^sq~IgO_zKRY!qB;PeRF*C;p<USE3_kmo<1$Um-
z<QO(tHjpQ(BqrChDKm;qe#j!73bs1Ltq5!{a!_buv5zyeI6glwCo?ZK5@eYWl4UH=
zU|?e`(gp_vD7K)Ob#gA7nQ1yG9GF}fV%ck1YM2+W)UYgMWMn85#~Ch6epO17|FJ06
zTWhiwaf6%#jw4YJ3lx2~*b)m0Qu9(YSs{S~mIXQc7E4NENn#NXNFiE?@ujDh#Diqx
zQ$b;t3i1XhWD#-7!pOnMgYb+V0|PUICg0>4?AlVwAOlrF1SqbHv_LG7XN&YEpJP{(
jlVV_C;9%fkWMSf9;$Y|C;^5@q<ly1p<ly7r<>3JU=6H79

delta 155
zcmcaE+9SZ1&&$ijz`(#z@Zx?l7yCp$8OD%_+99lr!3>&08|SQLVbq-L#hS&aG<hrQ
zK1P+vl^n8@eK@ry?`AV*teX6uEmK^9fq|h&fPsNQletJ4#O4JNij(u%r5WufceBg0
xse&ZAC;M?}b1Q-5R6vC4<jGuW5+V!?3>*wRj4VtXOdRYSTpXMnoE$tnTmbt69i0FG

diff --git a/Lab2/__pycache__/server.cpython-310.pyc b/Lab2/__pycache__/server.cpython-310.pyc
index d9221492281ddef57ac6629235aaeb7ff1bc2918..6c064d338417cf4b6e71c129cd25d4444cad19d5 100644
GIT binary patch
delta 1651
zcmdlbcu9gUpO=@5fq{YHD8qx~XugSjGE7p86LmuCS<)F(SbLdLI8(S<7@8TQxKlZ@
zI8(S&c%b6EDSTjY9<Vq+TwEYU5G>9M78inx3#W*H#reSEqA6lfbHr05z~cO1amf^@
zy<RC&DbipG0kDJ&Od>@#MGh=3m?EE|(83TUl**o>n9WqwouZV=5igv|u|Q-Y10zEU
zQ!p57Do<u&yw1zRz`#(<#K6G7!c@dPc`cix$x5bM3`HCa3=Auoig+0q7&2!vGB9W|
z-QrJ4EJ;jCEKZHjNX;ooEsEku&Ph$oi%&_?WSnfrA~sopon1~4WE@B{2NMe;3nL3t
z5lEzpPrtM{wWxUWYsM9fLAN;5GK-2!@)C1XZ*iq1=4R$pg4t~8sd*`>MYmXzGfOIO
zu_x!3=9LsxzGP)!V0bCYz`#(%$N+K(*ikP}f&}=WuAKamSzo@0pMilPiaWU|HL)Z$
z9%P>;(=8T|ql*L>7#Jq6XBA^EEs&ZV%aY8a%)r0^bJXNxEDc7&Amc=!#(_LNk&%I+
zNCqSdvZP2BWHnn6Ge|%VMDS0pVAWw%n!J=%iP2>8308R?b&#3-5RXoN%NlB^22uwK
z-y#(d3v2`nvJoKnvghQd$LE)ptYj=wnq0*uQ|}52L69yECJshEa2T>M6={MDm(Wj4
z28W7%az<iadTM+@VsUYKeo@LT=77+UWKe2_VNg(kV$~UBng#;{LkYtI#)S;E3@MB?
z3}p;OLMcp8ni)#71T&<t1~b%aviTK(Tpq=ppOX>*wIGT+FSQ)T34w$L6OvazHWYD!
zd<iB%8Rr&1nj-^2PJtv136Qs#i?l(Wl7xFIJ+(wXr9QDFQQxK{KRY$gE*aztn2$id
z0R=zUN1%uS`KX3rA!99L4Py~c2~!P24P!GXaWe)pXfpZ1QtxC?>Scx`4j!<%A^EPk
ziJ3XKgws<?!099&lt|)JL4um~Okm#^ffEGSGhhPjBQy<Q!=hon;$mW9<N_slJ&>;y
zQGJEvDSaETMRv&`55YXg!oa`)3L0mIdIpB#7-)Qfd{?AX!mxm;hH)WdEmI9skyZ^;
z3Zo=L4O0pem}CZ%EMSrqOtOJVc1ea5jydeL%q7e<%*~7`oN1tt;R<F*;SOfd<naUN
zrI(=aeF<{MOHjzZ1i7NVND7qS*g)x>y$GD`#6a;X4k9E#gd~Un2M;K}fJ+KZXh|^z
zlxcK8T3H|g&Y4*ppP!eLnU@;H2MTROKo@~5(_}#kY$XN;hFh!-Wr;bZsc31bNSA?u
zAq5oDpor&U;$mcBWMg7uM1ntgI9Zrjn2K~KTd}(`@=k7GPj*#hU|^^K=>pls!zjX7
z1QNN$5g(tMn3)$JAEGIGi#07Lu{gU36bO*?3{nere33QCqvn$}IOJ78g;)`&&?o}s
za&T@0r`{q^WP@E-q&hi<!^pyffq_AU0hDz)7&(~uSh*PaShyJZIJg-3B)J&*1h^Ra
VxVaelI3Z#j!W=AYj694i{{Vd8R;>U4

delta 728
zcmca4u}hFIpO=@5fq{V`<;nfz$D9-SWSA~7Ow<Xj=S*izVeMr~;Y#6dVQ6NI;!fqr
z;!NR5fr;~`@PWm7z~cOHae)*;usAPRTquPFYL0M<2w0piMKndMg&~SRl|4l~o2e*0
zMIx0WULciYf#5<0MurroU@&IVl$`9vcwLB_fq|iziGhKEg{cU{uHx8yk7)&?S`=qm
zW>IlTUSe))6jxeeZe~s;n9Y`+nwOGV6vdL9SyCA_c@2xC_$`K)Cm9$RRx%X{GB7Y?
z&SZqJC*NSvcfG}*l30?Mlvtb^pOKnVkXjVQom`ZfSdtoFTAW&>$#jbaB!7#gD7Cnt
zh?9YV0YZR6>=t`*W_n(HX@S6Gd)8z&83qQ1DvrtPSR0IZLF)LBtenWmz)&Ov5)}p!
zA`A=+nrubPAhsxoker;rro$*TxtC3eQFHPJHhDG$kZGKgZ?lD3$Ri9Y;sB|Z1rcB~
zSdh(NU|@)1&&f}Z&o3>}WGs@JoX9RCZV3uL9tH*m4kivpK1LQs7A6*^BBjZCOpfwJ
ziXekPF4ANwk_2hzNX|)3%!^M+(qt@>o}9=oEX9_Rnv+_R>IyOjWH|>D3)qk%<;mN*
zTp0x?|K&<{m1AIF@B^t}VPIh3VH9C30*Tz>h>y=r%*>0A57895#hR9rSe#u1ib;s0
zL2ALa7HNT;p*DFbx4bAQ5Q{*5FH!;tDuW2Q$uGE#bTk+k7(~Fn;9%rn;$z`r1Y-#<
XMm~NnMm}yXMh*@R7B)s6MwWj7R*{*Y

diff --git a/Lab2/database.db b/Lab2/database.db
index df5370f416fc0b03b3b7453c4ffa0a2129de1920..54ebaacbed664a2c1e4e273e1e464e8ab799fc61 100644
GIT binary patch
delta 212
zcmZozz}T>Wae_3X_Cy(HM(vFWOZYjM_}dxy_wl!H78I!FS2kthkmMJY6gHMDNi9w(
zE=es(O(_8}(@H9fDw7iv6B8#tkQbS}Pu^`ai@_iMNd_z&O#H_f_>b}5+bpQCi(f*V
z*_aWmt~jMQ#n3P}F*8RmIX{<a@;!SsHb(xP4E#Gc3o5MVcei9@4mEU2E)J<G3C}Ti
o%rpy0bV<nw&khd^%gV?N3pPrs%Fp!8G<Hf(N=ZjGi~$J%09;i-KmY&$

delta 145
zcmZozz}T>Wae_3X>O>i5M%9f8OZeFs`S&sK@7pY>u!Vo}K6y7b2L3M${P#8sDxBq?
z7{J9SHu;gh(q<NgKm3y%SRj%+Hw!9k;&-t&%<>B>4J<YDHLT3AEHf#!EHifY%XjjP
l2+b~bN;55XOg0ENPEJZmFHR{=F*M9g%*@eC&d+5)0s!jgD%b!3

diff --git a/Lab2/database_helper.py b/Lab2/database_helper.py
index c6047fc..9c81217 100644
--- a/Lab2/database_helper.py
+++ b/Lab2/database_helper.py
@@ -59,7 +59,6 @@ def log_in(token, email):
         return False
 
 
-
 def log_out(token):
     try:
         cursor = get_db().cursor()
@@ -72,3 +71,43 @@ def log_out(token):
         return False
     except:
         return False
+
+
+def tokenToEmail(token):
+    try:
+        cursor = get_db().cursor()
+        cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token])
+        result = cursor.fetchone()
+        email = result[1]
+        if email:
+            return email
+        return None
+    except:
+        return None
+
+
+def is_online(token):
+    try:
+        cursor = get_db().cursor()
+        cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token])
+        result = cursor.fetchone()
+        if result:
+            return True
+        return False
+    except:
+        return False
+
+
+def get_data_email(email):
+    try:
+        cursor = get_db().cursor()
+        cursor.execute("SELECT * FROM USERS WHERE EMAIL=?;", [email])
+        result = cursor.fetchone()
+        if result:
+            data = []
+            for r in result:
+                data.append(r)
+            return data
+        return None
+    except:
+        return None
diff --git a/Lab2/server.py b/Lab2/server.py
index edf405a..bc7ad65 100644
--- a/Lab2/server.py
+++ b/Lab2/server.py
@@ -8,12 +8,22 @@ app = Flask(__name__)
 
 #database_helper.create_database()
 
+
 @app.route("/", methods = ['GET'])
 def hello_world():
     return "<p>Hello, Lab_2!</p>", 200
 
 
-@app.route("/sign_up", methods = ['POST'])
+@app.route("/delete", methods = ['GET'])
+def delete():
+    resp = database_helper.clean_db()
+    if resp:
+        return "", 200
+    else:
+        return "", 409
+
+
+@app.route("/users/sign_up", methods = ['POST'])
 def sign_up():
     data = request.get_json()
     if ('email' in data and isinstance(data['email'], str)
@@ -38,7 +48,8 @@ def sign_up():
     else:
         return "", 400
 
-@app.route("/sign_in", methods = ['POST'])
+
+@app.route("/users/sign_in", methods = ['POST'])
 def sign_in():
     data = request.get_json()
     if('email' in data
@@ -54,7 +65,8 @@ def sign_in():
     else:
         return "", 400
 
-@app.route("/sign_out", methods = ['POST'])
+
+@app.route("/users/sign_out", methods = ['POST'])
 def sign_out():
     data = request.get_json()
     if('token' in data):
@@ -66,15 +78,45 @@ def sign_out():
         return "", 400
 
 
-@app.route("/delete", methods = ['GET'])
-def delete():
-    resp = database_helper.clean_db()
-    if resp:
-        return "", 200
+@app.route("/account/change_password", methods = ['PUT'])
+def change_password():
+    data = request.get_json()
+    if('token' in data and 'oldPassword' in data and 'newPassword' in data):
+        return True
+        #return "", 204
     else:
-        return "", 409
+        return "", 400
 
 
+@app.route("/account/get/data/<token>", methods = ['GET'])
+def get_user_data_token(token):
+    email = database_helper.tokenToEmail(token)
+    if email:
+        return get_user_data_email(token, email)
+    else:
+        return "", 403
+
+
+@app.route("/account/get/data/<token>/<email>", methods = ['GET'])
+def get_user_data_email(token, email):
+    if database_helper.is_online(token):
+        data = database_helper.get_data_email(email)
+        if data:
+            value = {
+                "firstname": data[0],
+                "familyname": data[1],
+                "gender": data[2],
+                "city": data[3],
+                "country": data[4],
+                "email": data[5],
+                "password": data[6],
+            }
+            return jsonify(value), 200
+        else:
+            return "", 404
+    else:
+        return "", 403
+
 def generate_token():
     characters = string.ascii_letters + string.digits
     return ''.join(random.choices(characters, k=36))
-- 
GitLab