From 1b7b3e4470dcc57bdd1a54703c939e185d1b788c Mon Sep 17 00:00:00 2001 From: MaximeOLIVA <maxime.oliva@etu.univ-cotedazur.fr> Date: Sun, 5 Feb 2023 18:36:10 +0100 Subject: [PATCH] sign_out --- .../database_helper.cpython-310.pyc | Bin 900 -> 2060 bytes Lab2/__pycache__/server.cpython-310.pyc | Bin 1456 -> 2234 bytes Lab2/database.db | Bin 12288 -> 20480 bytes Lab2/database_helper.py | 38 +++++++++++++++--- Lab2/schema.sql | 8 +++- Lab2/server.py | 20 +++++++-- 6 files changed, 57 insertions(+), 9 deletions(-) diff --git a/Lab2/__pycache__/database_helper.cpython-310.pyc b/Lab2/__pycache__/database_helper.cpython-310.pyc index d37e5e85171172afe6ad9b5abdbe258c244d477d..3ebbc7beb6dff05b871c1ac6c6b345a31a21ff7e 100644 GIT binary patch literal 2060 zcmd1j<>g{vU|=YCaX*=hoq^#oh=Yuo7#J8F7#J9eLl_tsQW#Pga~PsPG*b>^E>jc} zBSQ*v6mtqo3Tq2P6iW(Q3VRDf6l)4c3TF#L6k7^c3U>=b6nhF!3U3QT6h{hQ3V#bj z6laP+ieL*v6juskFoUMhOOSnjnvAy?(|>WNB$gy5B^IaZr6eVT#9^3`fq{XAfq}sp z<Q5GE28I%b62=t96ozKzT80{i6oyiUBB2td1<WNZ3mI7$Y8grx<5_DMf*CZK{BAL& zBx$nUVoy&kNh~QTDgycG7JG4FPG(7}@h$e`{Jgx><dR!FE{-9NPL9E@@u5MUMIg&G z8Nt*_h9XV|28Lf=`k}?CMaBBLi4~c-sroLd#n~nK1^U6|sVS*>`XMeZE|%u{;i*Xh zMfvGPiMhF%dFlE-iAhHKFi*v2q~;W)7U>mK-eOBnEs0M_Vgq@HgMop8hmnI(fRTl< zh?{|d0mbJahk#UoeVzpN`2xli#)XU^e=lHK$WY5z!kogC!raW%FIdY|!?b{9Aww;5 z4dVjV8s>$Jj11unDGV$OEDX)ej0|}kh783@<&2CBAQ;KO$WX(ufNdd!W(UzJpfF?c zD`I9~V5s6MPR>ZpP1Gwc%(=x_q{&ePa&Hkk0|Ub?w&c>H;{2jpEcpegdAC@KQWI06 zcvCA<lS@ldi<65o3rcRWCFkenW|rJyP0q<LPSs?&#R3ZIB3_VombA>A)F|fS!W?ke zLI_Y&yv3hfl$uzQ8V?IJkn&;y1_lN$Mh-?$F!3<T{NrHeVJs3s4=PY%0l5$yR5~CJ z@Ru+&GeClikpaqPf(8n6FgOqx86p`{Sb`ZeS^cU6U4r}r6iO14a#9sSgI$Ayt*a!F zgnazn-CbQg{UA~yZkkNs=(@!Y^*6*9oD2+*1XBd|4@YuNYGPh|N|HDzu6Y<37?>D& z7<m}kz_3UR<OxuSf*cRRAT~%N*b`PDPl!Ps&RD}#!(78s!&<{u!%)MR&c2Wd>M15r z%!M<gFd=z~Iha9{#ji@w(=XUHC`2JMuOuJhCxx=aoYK@{4SO90bfjq=;<l0*?5QGA zkT*c#uE~CjH8nReGv^jZL1J-nd45sKEzY#eqT-Ug#N5<dTxp59nK_kUHd}gXUP@}w zEtcfWl1fm{D$Oe?szeGFkjHLuLu0tKIJHOt5hyZ@T;L#KV=R&f1qvvef&v7DL74y^ zv!L>*N)i$%3mL#ko+*V993)JjAgN(mzzog;%thjmKnZ6^L5^)`&=>~0`nWoWC}=6T z1^N3z11H?WHON)L)z{I}$JSoK(a%L8z%e*D+&{?0*4{eAO_K!@I-pbu4x(EeX{ja2 z8Tomsnk+>UpfHmJ5g_?nEFd4E`<^GUv?L=nuOu@$u_RR!<b5G<n&4s-VB}zAfd&B^ zW04YiAb<h{9tZ}YlpzQS1Z2;HMew8tHRSYwlAw{(g=UCb5h%TCGTmY=$<I#BgLn-s zX|v_zr^jdJnSwk4N!UV&I8*^SA5?6E;tzyDB?{d6VIb$LfE~*SD#B_Q7l7k1oe>;^ zjNlk#s$nWp0?RPfFhFF$I#{5|ojDj(xUnE5dT2h@LXBBeZ$e@?#NXT1&(_|$O2fs~ z$2G(ik_Pap3~|$BMT>lJ@+|^q66PXhSiBc0f>>x_#SRLq{L&J8P+);FJrg4rBOf@% z`QU-Z##p4vz`&r%4K8SJv8LrD7H5O&t0GVp0I?lZ>=l7b0A~|$GARNDHdrfCY6Cj} poZ&cZa`RJ4b5iX<(NPT2&%waM$il?I#KF$N#lgwJ$-%?J1pv%apoIVc delta 378 zcmeAXXkq8e=jG*MU|?XVVY`!D!8DOihS6lAwuvBPFoP!7OOS-0CgUx}^s0#yy7-wH z7#K7ei$K&$h9Zv1nvChpOhsIio0%s_XfhXp%(=y$T9KMuT9O*YmYkoPn^`hhg~iE; zgMope2uyG?FfiQWPA*DKEJ=+oElw@sV_;w?=3!u9U}BVE<YHt4!y@6y`<P_w6&M&8 zsyIs+ni&=_rZ6sKWMl|uNMQ<QU<AWRh7{&t22B>fDnXYZ{{V%O#H5^5h0tKvpkV6| zH%%t6dy2T>R)g&a6JSShB<G|i=EbKZiGf@Iayt_v57>4##v&1rPb1ljSV7KZP0L9v z&MsmCnZynvK#GfmK`f9uh{wPNg9(V~Ho5sJr8%i~j3CoN{^MZaVPs+AVB+B5;Q#<l Cdqigd diff --git a/Lab2/__pycache__/server.cpython-310.pyc b/Lab2/__pycache__/server.cpython-310.pyc index 643957fffe8a2fd38c2dbc2da828d3507eca7cf5..d9221492281ddef57ac6629235aaeb7ff1bc2918 100644 GIT binary patch delta 1138 zcmdnMy-ScUpO=@5fq{V`<;nfz$D9-SWEd|^)RwPLVMt-hVU1!1(`->}sf?-Y&5ThT zsT^6HDa<J>>5M6?y-X==DeNr_&5Ti8U~!HVPN+Cn3O87s8!XNP7w1jk1B>&3#rfgl z0x5!EabB>vP>LnY0^t-9umoR<Xo^@1Lll21dy05AQ&D<~L@GzTKq|)q!G#Qr3@J>( zV5})Qao2T5?#+`J7csK(1~X{#O}1qAm)B&v#qjbZ0|UcKrXoQG28PU;j0pAw#>rcl za~TCDE3qWk%P=r7RB`ARXQt=HXXYh?LI#GJ7#J8>85kIx85kIf!x$JCN*ER}E@Y@> zNMWpDC}SwnOksl1B}@yLYZy`(B^hcMQkWze7BUq}q%a3Fl&~~2)H0SZEnux-gvc*s zDpIduOkqg_IiEF{A*G%zm_d`>uZWj{fuV>G$-xsD85oL$K%&ARLWF^VL6fbB8N?O^ z5t0lH3{gCZr6n1uc_o?2i6yDG_|jAJQi~ExQsYbVvs3e;*mCmI<1_O#nTn(s7#MD` zf<=osLAt>NC>hk>VuyNN6XZ)V1_lNWCJsh6MyCHFOe~CSOahD?j4VtnOhpQyfZ~J% zRDNj*N=Pv>Ffg#dLP`rWq=XS6w2-k#5FB~T!3-%Z!L|&VtbRrE2#*(WfZQhwBEWuT zLH9E|$XEHLC7O&yQj-f=MdZQm&o3>p1bKi5>H$7R7KpQzCbzLT$ti-&0|lfeQxQ1i zIFfTx6Z7Izk~A5Mq$d}$3fHrxq~@fSq`HDk0l9&Li3My%kun1V1BP$eV7>(fO9?|3 zV+lhRlQ=kSEMP8S$zlbigcRmpriF~b44N!{;8gfh1r&>nw-~cE*>15FmlS2@rQhOB zEKbhMjIYm0Eh$MYD!#>*l9`@aQhbXgD?c;u7F$tbUP^xME%xM${LJLkVok<dT*(=U zMTyBE#b}XPB*(zO;0N*mC^C2$MHs;%w>aYCa}zW3;^RX!g>JE?<s=qo7l9HtBxpfu zizGpbp$HUpMQW3+S>;7R`2rm0MM|Ks0|i2n+~fpSBOMI}1_lvuD&b({VB%xpVgzFe YE=E3nE=E3XE=CRx4i+{>9!8db0IWXd9smFU delta 378 zcmdlbxPhB5pO=@5fq{V`kpE7yHQPi!8OE-O+Vb_OjH#^6j8SZ<Y+39n%qcACj47<W zOet(B>@5t<j8Pn5agG#Ds5n;&H&~n#EY1U0&zr&r7UxQ3P2taGDsoN{NM(!XPGwub zvyg$2A%!Uzj5P&cg503Ve2djBC$TvD)?`7(6O8PeZ!s=nWaSHH(Bz-o$n3APlIa%1 z%aaTY3@e$6gcukYGG{U}Fla*9FDHQ6w^&M2i%W_`879AH&Sm789Lti-C^va6o0FU% z0|P^m2m@GyGy?-e6i0GSYGPh|N|GjHk?dq%b}4Ih1_p*=4h9AW4ki{x7Dg7PB6$V| zhFcu*@wthadGYZfn!LAI(?AX^Vgi}Q3?f)Sg!E($4tX{?5L13~42O}N6axc;2m=Qb a2NNF?7b71F7bBk(7b6D;8zT=R%Rc}TGEbTS diff --git a/Lab2/database.db b/Lab2/database.db index 076379e3f40ce91f451625cb3b7fea57713a1c68..df5370f416fc0b03b3b7453c4ffa0a2129de1920 100644 GIT binary patch delta 575 zcmZojXjs5FL0V9ifq{XQ0Rea>>KKcvGU$bS@$$c6VBxK1;0xzJ$Xm@Pv#^l2o-dqX zg}AzUqZ~84xVk!HV|7VlQckLmzq`Aui>F^`uxn5-3WwD>$kj2#RUyRD$;VXzMM{H9 zK_SH7+tp7Y%rVH>!!bz1#6VL41pNF%6#PPcd~~=J6kL5BJ$>LRQjD=E2?+A^bqtDB z@OF(<&;Y5=(d5#!WMLEcRcB<#%u7kFC@##&EJ=+|EG@|g^W#w*5^spYW!@al$Ir-U zJlT$4a&iNIHY3aAH~bQ8jQsl;`1frVR9L`2u|dSggpos%UsO`qP_iVoIHkBGwInsA z1jI}$sVu5YPD)8HPAN_?G|WxR%+X8E&owkMHZe6v1TzBz7l_0Eg@OMb)KGIxF-(0R zMKBD~!N`9Pp~FN+l-ZCIzb0OgZjd!Qq1FhwSQ}>fg_Q=Dn)w=5W>}V)lv<V<JNxB3 V`9_3h7dxey7CR;zgd5{G767{kk%0gJ delta 311 zcmZozz}S#5L0V9Zfq{XU0Rh-2>KF@(G3fc%^76l7VB!mB;0xzJxLHu(Iq&9hK7Pi@ zllY}4H}YpOGEaWPFTugY-^9SblfP-Rpg<Xay(trixTL74q^6|v;VrqTZuvzenR&U1 zIjKIC`FU<diFwJX$@#gd4(YjxnK^pN`MHTzsYNA~mW&+YqT=%6+LB(SIhm>M`5Ad> zskw<cKACyh`30GI>A|I`DXCc?IdrWEhchs6@iH(lF!7&b;6KOzkbmQ5L4n2m{zA-} ejHq@pOE8-<CMTs<rKVy^G6^wjbE4UVYzF|Z=~Pny diff --git a/Lab2/database_helper.py b/Lab2/database_helper.py index a4153f6..c6047fc 100644 --- a/Lab2/database_helper.py +++ b/Lab2/database_helper.py @@ -9,6 +9,7 @@ def get_db(): db = g.db = sqlite3.connect(DATABASE_URI) return db + def create_database(): conn = sqlite3.connect('database.db') cursor = conn.cursor() @@ -18,6 +19,16 @@ def create_database(): conn.commit() conn.close() + +def clean_db(): + try: + get_db().execute("DROP table USERS;") + get_db().execute("DROP table LOGGEDINUSERS;") + return True + except: + return False + + def create_user(email, password, firstname, familyname, gender, city, country): try: get_db().execute("INSERT into USERS values(?, ?, ?, ?, ?, ?, ?);", [firstname, familyname, gender, city, country, email, password]) @@ -26,21 +37,38 @@ def create_user(email, password, firstname, familyname, gender, city, country): except: return False -def clean_db(): + +def authenticate(email, password): try: - get_db().execute("DROP table USERS;") + cursor = get_db().cursor() + cursor.execute("SELECT * FROM USERS WHERE EMAIL=? AND PASSWORD=?;", [email, password]) + user = cursor.fetchone() + if user: + return True + return False + except: + return False + + +def log_in(token, email): + try: + get_db().execute("INSERT into LOGGEDINUSERS values(?, ?)", [token, email]) + get_db().commit() return True except: return False -def authenticate(email, password): + + +def log_out(token): try: cursor = get_db().cursor() - cursor.execute("SELECT * FROM USERS WHERE EMAIL=? AND PASSWORD=?;", [email, password]) + cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token]) user = cursor.fetchone() if user: + cursor.execute("DELETE FROM LOGGEDINUSERS WHERE TOKEN=?;", [token]) + get_db().commit() return True return False except: return False - \ No newline at end of file diff --git a/Lab2/schema.sql b/Lab2/schema.sql index 9f6c426..446b1f8 100644 --- a/Lab2/schema.sql +++ b/Lab2/schema.sql @@ -4,7 +4,13 @@ CREATE TABLE USERS( GENDER VARCHAR(6) NOT NULL, CITY VARCHAR(20) NOT NULL, COUNTRY VARCHAR(20) NOT NULL, - EMAIL VARCHAR(20) NOT NULL, + EMAIL VARCHAR(30) NOT NULL, PASSWORD VARCHAR(20) NOT NULL, PRIMARY KEY (EMAIL) ); + +CREATE TABLE LOGGEDINUSERS( + TOKEN VARCHAR(40) NOT NULL, + EMAIL VARCHAR(30) NOT NULL, + PRIMARY KEY (EMAIl) +) diff --git a/Lab2/server.py b/Lab2/server.py index 9e0bc2d..edf405a 100644 --- a/Lab2/server.py +++ b/Lab2/server.py @@ -36,7 +36,7 @@ def sign_up(): else: return "", 400 else: - return "test", 400 + return "", 400 @app.route("/sign_in", methods = ['POST']) def sign_in(): @@ -47,11 +47,25 @@ def sign_in(): return "", 401 else : token = generate_token() - print(token) - return token, 200 + if database_helper.log_in(token, data['email']): + return token, 201 + else: + return "", 409 + else: + return "", 400 + +@app.route("/sign_out", methods = ['POST']) +def sign_out(): + data = request.get_json() + if('token' in data): + if database_helper.log_out(data['token']): + return "", 200 + else: + return "", 401 else: return "", 400 + @app.route("/delete", methods = ['GET']) def delete(): resp = database_helper.clean_db() -- GitLab