From fca0991b9a4c22148bd54d64d4752ed46a3cc12e Mon Sep 17 00:00:00 2001 From: eduveks Date: Wed, 14 Apr 2021 00:10:03 +0000 Subject: [PATCH] =?UTF-8?q?Sess=C3=A3o=2011?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/_development.json | 11 +++++ dbs/social_ma.mv.db | Bin 73728 -> 81920 bytes server/services/_openapi.json | 15 +++++++ server/services/_schema/cities.js | 10 +++++ server/services/_schema/result.out.200.json | 11 +++++ server/services/_schema/result.out.409.json | 15 +++++++ server/services/register.post.in.json | 32 +++++++++++++++ server/services/register.post.js | 6 ++- server/services/register.post.out.200.json | 3 ++ server/services/register.post.out.409.json | 3 ++ website/src/App.js | 42 +++++++++++++++----- website/src/Core.js | 7 ++++ website/src/pages/Login/index.js | 4 ++ website/src/pages/Main/index.js | 4 ++ 14 files changed, 152 insertions(+), 11 deletions(-) create mode 100644 server/services/_openapi.json create mode 100644 server/services/_schema/cities.js create mode 100644 server/services/_schema/result.out.200.json create mode 100644 server/services/_schema/result.out.409.json create mode 100644 server/services/register.post.in.json create mode 100644 server/services/register.post.out.200.json create mode 100644 server/services/register.post.out.409.json create mode 100644 website/src/Core.js diff --git a/config/_development.json b/config/_development.json index eb77e8c..41eccab 100644 --- a/config/_development.json +++ b/config/_development.json @@ -51,5 +51,16 @@ "access_expires": 60, "refresh_expires": 1440, "algorithm": "HS512" + }, + "openapi": { + "host": "http://eduardo-velasques.dev.netuno.org:10090", + "basePath": "/services", + "schemes": [ "http" ], + "servers": [ + { + "url": "http://eduardo-velasques.dev.netuno.org:10090/services", + "description": "Desenvolvimento Remoto" + } + ] } } diff --git a/dbs/social_ma.mv.db b/dbs/social_ma.mv.db index f2892ea8d2370881005f201f3d2d9fc7bbc00a5a..70f219d61d5009b6fe4965923ecd8a6f13d5535a 100644 GIT binary patch delta 6557 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 delta 3287 zcmd5;ZEO@p7~YxtXgS(SQ$&zL?+QJVdeqsS-P^qrC`ALc1SzqBNYG?I+tN=;ZO{mX zgda*m5Jx=YcQlHMgp~bpB4A7eV+4bVh)G*PRH7yVB?d)ni?e&Z+i5B$=nuWi=G`an zzVp5_&&)IL)~$i9ANZrSNg<}ScIYih9%WwcZ+_II0HK)P^l*Di(vmE3cXVC}H8HEz z?ADviuB2p|Dwg`xmv150Zz-7hPeaS{dnGGdfDmgn+mmLjwYkS!p>9g@ydokO)vJx> z#v}!8YG+bYHEJEVsiRnD#wEnMIy$yn6NF%j!AyEZm= zv^x_L!r5Qya5b1&72-H<(baaJA8-pF+sbjuY}fkNzTn!t^q^})1M3`1PK9svU3k_< zz8;!yPmQdd0)M<{ck&wx1K+>qo6eENsZ!ft{r=<-uN3?Jwc&8#D`a=gTryO*4SsIg z8<$@zgo8bH+XLsO1mQbJr}`^N$NDPrOG~Bw;`(|(>RSJpPYbFz6bXP#K_yE+a|DW&?I|cG&cyf?Ni-!xyo1G|l_x5X#2P?^N z=X`SKU=i8LPqTM+H3EBA*Y>%jWXBTwrPOGt6R@(enrJ6hKx>xWcVYp6>REF6WTZm< zwkW_A!!S=Dfj*c%QZXzSX^8vFKi;g_(x)Hh!=`QI_b(b@(@#V{^E_<&`QVpjKG^U) ziS$QdLx|klzY8|pLHhe6aLq|F;+Q!kJg^I{;Yi;=#J8qm1{v+29V|AMZJS*|&JR_R z(hUXnor9IdzM7^ovhdPbxOgR5aOoVpyNb-Zd=4%tB%_zV3I>A9CeJCR0j2ijE8qB? z$?UDICq>s@@2#zQ1Nv$C5n6hLmL3u56CbObE31v}{abh5n>lwmjV`CrbG_*0-@TP{ z|Ha_TkH1ZX-%4TKX1o5kkAP1)-A7u6qfq*m)C|vq(tBjRV^$I3m?mJNhjr3d8^ZVnf6wWZ3E zOe6Pd@u_nFT$!;ct2?GKCQW0?kUCNhX4Y$JV(k1|RHG)Ge@&cl{zU`nBF~(E)7X;D zL6hzmKxLh#s_v*XJl1Y*>Q3@FJGLh+&d>-6ijtES(bVE`%nWVu=?DgIL%Iol_QI<4 zBSFyTD@nF;`CJ}VuPUlu0mtg8g&|O#+7SX}QzVNoY*(pNb*oydS;eRJg}_}fk)Qq{ z1j>D|;@xyX5%9xa8e5cAI6)TUio(D+(p3g33NL!l5_ysFT5$~_#w!c@IH)QtR0Pq5 zy{@zhmZGx3iiAYL8%vQ?Hj^To3hPy5=3~tB0`FzQyqsW0rqE*Q!2D7rKF+PsdYHsC zmYJfWiA*Lz(F`PT9Q-2EmTo8p0Q6=q3PI5&!}LZm=%u1FP?8Y~6-#8HE-NgwEF+$a zb@z#sgS?QSe-HLzY$!N~F)|X0S3X9Tm09$$>kLWETrrO{hAO5CAH`Dif&fJu29vG@+ zWz!No*~G4F_HNEe+JDhd^_1k&UHFT;gB1-jDgO$&OK_2B;%5u!RUFMBA7A90^OcZ^WW1X$g z-AY-GqZy7D-!#YRp;b5HSo}Y5yv5_#qrl~uUZ0t!{NJCJ%=MZ6qyikBbjLW}7_KGn QFq>GQry04YYy}AY2^XNhumAu6 diff --git a/server/services/_openapi.json b/server/services/_openapi.json new file mode 100644 index 0000000..8a67c12 --- /dev/null +++ b/server/services/_openapi.json @@ -0,0 +1,15 @@ +{ + "info": { + "title": "Plataforma Social", + "description": "REST API da Plataforma Social.", + "version": "1.0" + }, + "components": { + "securitySchemes": { + "BearerAuth": { + "type": "http", + "scheme": "bearer" + } + } + } + } \ No newline at end of file diff --git a/server/services/_schema/cities.js b/server/services/_schema/cities.js new file mode 100644 index 0000000..78510d0 --- /dev/null +++ b/server/services/_schema/cities.js @@ -0,0 +1,10 @@ + +const dbCidades = _db.query("SELECT uid FROM cidade") + +const citiesUids = _val.list() + +for (let dbCidade of dbCidades) { + citiesUids.add(dbCidade.getString("uid")) +} + +_dataSchema.set("enum", citiesUids) \ No newline at end of file diff --git a/server/services/_schema/result.out.200.json b/server/services/_schema/result.out.200.json new file mode 100644 index 0000000..312da85 --- /dev/null +++ b/server/services/_schema/result.out.200.json @@ -0,0 +1,11 @@ +{ + "type": "object", + "properties": { + "result": { + "type": "boolean" + } + }, + "required": [ + "result" + ] +} \ No newline at end of file diff --git a/server/services/_schema/result.out.409.json b/server/services/_schema/result.out.409.json new file mode 100644 index 0000000..39c19ed --- /dev/null +++ b/server/services/_schema/result.out.409.json @@ -0,0 +1,15 @@ +{ + "type": "object", + "properties": { + "result": { + "type": "boolean" + }, + "error": { + "type": "string-not-empty" + } + }, + "required": [ + "result", + "error" + ] +} \ No newline at end of file diff --git a/server/services/register.post.in.json b/server/services/register.post.in.json new file mode 100644 index 0000000..d0e5ef8 --- /dev/null +++ b/server/services/register.post.in.json @@ -0,0 +1,32 @@ +{ + "summary": "Registro", + "description": "Registro da conta do usuário.", + "type": "object", + "security": [ + { "BearerAuth": [] } + ], + "properties": { + "name": { + "type": "string-not-empty" + }, + "surname": { + "type": "string-not-empty" + }, + "username": { + "type": "string-not-empty" + }, + "password": { + "type": "string-not-empty" + }, + "email": { + "type": "string-not-empty" + }, + "city_uid": { + "type": "uid", + "_schema": "cities" + } + }, + "required": [ + "name", "surname", "username", "password", "email", "city_uid" + ] +} \ No newline at end of file diff --git a/server/services/register.post.js b/server/services/register.post.js index 3a48bb2..a68ff88 100644 --- a/server/services/register.post.js +++ b/server/services/register.post.js @@ -15,16 +15,18 @@ if (dbCidade == null) { _header.status(409) _out.json( _val.map() - .set("error", true) - .set("message", "city-not-found") + .set("result", false) + .set("error", "city-not-found") ) } else if (emailExists != null) { + _header.status(409) _out.json( _val.map() .set("result", false) .set("error", "email-exists") ) } else if (usernameExists != null) { + _header.status(409) _out.json( _val.map() .set("result", false) diff --git a/server/services/register.post.out.200.json b/server/services/register.post.out.200.json new file mode 100644 index 0000000..982da14 --- /dev/null +++ b/server/services/register.post.out.200.json @@ -0,0 +1,3 @@ +{ + "_schema": "result.out.200" +} \ No newline at end of file diff --git a/server/services/register.post.out.409.json b/server/services/register.post.out.409.json new file mode 100644 index 0000000..3fc0029 --- /dev/null +++ b/server/services/register.post.out.409.json @@ -0,0 +1,3 @@ +{ + "_schema": "result.out.409" +} \ No newline at end of file diff --git a/website/src/App.js b/website/src/App.js index c3c5a22..388eda3 100644 --- a/website/src/App.js +++ b/website/src/App.js @@ -1,5 +1,6 @@ import React, { useEffect, useState} from 'react'; +import _auth from '@netuno/auth-client'; import _service from '@netuno/service-client'; import { Layout, Menu } from 'antd'; @@ -14,6 +15,8 @@ import Login from './pages/Login'; import Register from './pages/Register'; import Main from './pages/Main'; +import Core from './Core'; + import logo from './logo.svg'; import './App.less'; @@ -22,6 +25,7 @@ const { Header, Footer, Content } = Layout; const { SubMenu } = Menu; function App() { + const [ logged, setLogged ] = useState(false); const [ data, setData ] = useState([]); useEffect(() => { _service({ @@ -37,20 +41,40 @@ function App() { }); }, []); + Core.events.login = () => { + setLogged(true); + } + Core.events.logout = () => { + setLogged(false); + } + + let menu = null; + if (_auth.isLogged()) { + menu = <> + + Principal + + ; + } else { + menu = <> + + Home + + + Login + + + Registrar + + ; + } + return (
- - Home - - - Login - - - Registrar - + {menu}
diff --git a/website/src/Core.js b/website/src/Core.js new file mode 100644 index 0000000..ef16406 --- /dev/null +++ b/website/src/Core.js @@ -0,0 +1,7 @@ + +export default class Core { + static events = { + login: ()=> {}, + logout: ()=> {} + }; +} diff --git a/website/src/pages/Login/index.js b/website/src/pages/Login/index.js index 9ad51ae..d26bb6c 100644 --- a/website/src/pages/Login/index.js +++ b/website/src/pages/Login/index.js @@ -6,6 +6,8 @@ import _auth from '@netuno/auth-client'; import { Redirect } from "react-router-dom"; +import Core from "../../Core"; + import './index.less'; const layout = { @@ -31,6 +33,8 @@ export default ()=> { } else { localStorage.removeItem("login"); } + Core.events.login(); + //window.location = '/main'; }, fail: ()=> { setLoading(false); diff --git a/website/src/pages/Main/index.js b/website/src/pages/Main/index.js index 5abc607..2773aa7 100644 --- a/website/src/pages/Main/index.js +++ b/website/src/pages/Main/index.js @@ -4,6 +4,8 @@ import { Redirect } from "react-router-dom"; import _auth from '@netuno/auth-client'; +import Core from "../../Core"; + import { Button } from 'antd'; export default ()=> { @@ -14,6 +16,8 @@ export default ()=> { const onLogout = ()=> { _auth.logout(); setLoading(true); + Core.events.logout(); + //window.location = '/login'; } return (