diff --git a/dbs/social_interno.mv.db b/dbs/social_interno.mv.db
index 708268a..f5a4cd6 100644
Binary files a/dbs/social_interno.mv.db and b/dbs/social_interno.mv.db differ
diff --git a/server/services/public/communities/get.js b/server/services/public/communities/get.js
new file mode 100644
index 0000000..1ce6740
--- /dev/null
+++ b/server/services/public/communities/get.js
@@ -0,0 +1,17 @@
+
+const dbComunidades = _db.query(`
+ SELECT * FROM comunidade
+`)
+
+const data = _val.list()
+
+for (const dbComunidade of dbComunidades) {
+ data.add(
+ _val.map()
+ .set("uid", dbComunidade.getString("uid"))
+ .set("name", dbComunidade.getString("nome"))
+ .set("description", dbComunidade.getString("descricao"))
+ )
+}
+
+_out.json(data)
diff --git a/server/services/public/communities/options.js b/server/services/public/communities/options.js
new file mode 100644
index 0000000..f731105
--- /dev/null
+++ b/server/services/public/communities/options.js
@@ -0,0 +1 @@
+_out.json(_val.map().set("result", true))
\ No newline at end of file
diff --git a/server/services/public/info/get.js b/server/services/public/info/get.js
new file mode 100644
index 0000000..7c62ccf
--- /dev/null
+++ b/server/services/public/info/get.js
@@ -0,0 +1,14 @@
+
+const dbPessoa = _db.queryFirst(`
+ SELECT pessoa.*, cidade.nome "cidade"
+ FROM pessoa INNER JOIN cidade ON pessoa.cidade_id = cidade.id
+ WHERE utilizador_id = ?
+`, _user.id())
+
+_out.json(
+ _val.map()
+ .set("name", dbPessoa.getString('nome'))
+ .set("surname", dbPessoa.getString('apelido'))
+ .set("email", dbPessoa.getString('email'))
+ .set("cidade", dbPessoa.getString('cidade'))
+)
diff --git a/server/services/public/info/options.js b/server/services/public/info/options.js
new file mode 100644
index 0000000..f731105
--- /dev/null
+++ b/server/services/public/info/options.js
@@ -0,0 +1 @@
+_out.json(_val.map().set("result", true))
\ No newline at end of file
diff --git a/website/package.json b/website/package.json
index 3c0a7e6..ffe7509 100644
--- a/website/package.json
+++ b/website/package.json
@@ -3,6 +3,7 @@
"version": "0.1.0",
"private": true,
"dependencies": {
+ "@netuno/auth-client": "^1.0.4",
"@netuno/service-client": "^1.0.8",
"@testing-library/jest-dom": "^5.12.0",
"@testing-library/react": "^11.2.7",
diff --git a/website/src/App.js b/website/src/App.js
index d73dccc..bcdd921 100644
--- a/website/src/App.js
+++ b/website/src/App.js
@@ -11,6 +11,11 @@ import Home from './pages/Home';
import Info from './pages/Info';
import Register from './pages/Register';
import Login from './pages/Login';
+import Main from './pages/Main';
+import Communities from './pages/Communities';
+import Logout from './pages/Logout';
+
+import _auth from '@netuno/auth-client';
import './App.less';
@@ -19,23 +24,41 @@ const { Header, Footer, Content } = Layout;
const { SubMenu } = Menu;
function App() {
+ let menuItems = null;
+ if (_auth.isLogged()) {
+ menuItems = <>
+
+ Principal
+
+
+ Comunidades
+
+
+ Sair
+
+ >;
+ } else {
+ menuItems = <>
+
+ Home
+
+
+ Info
+
+
+ Registo
+
+
+ Login
+
+ >;
+ }
return (
@@ -49,6 +72,15 @@ function App() {
+
+
+
+
+
+
+
+
+
diff --git a/website/src/pages/Communities/index.js b/website/src/pages/Communities/index.js
new file mode 100644
index 0000000..4b1e226
--- /dev/null
+++ b/website/src/pages/Communities/index.js
@@ -0,0 +1,37 @@
+import React, { useState, useEffect } from 'react';
+
+import { Redirect } from "react-router-dom";
+
+import _auth from '@netuno/auth-client';
+
+import _service from '@netuno/service-client';
+
+export default ()=> {
+ if (!_auth.isLogged()) {
+ return ;
+ }
+ const [ data, setData ] = useState([]);
+ useEffect(() => {
+ _service({
+ url: 'public/communities',
+ success: (response) => {
+ setData(response.json);
+ },
+ fail: (e) => {
+ console.error('Service Communities Error', e);
+ }
+ });
+ }, []);
+ return (
+
+
Comunidades
+
+
+ { data.map((community)=> (
+ - {community.name}
+ ))}
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/website/src/pages/Login/index.js b/website/src/pages/Login/index.js
index 042e37a..4a8507b 100644
--- a/website/src/pages/Login/index.js
+++ b/website/src/pages/Login/index.js
@@ -2,6 +2,8 @@ import React from 'react';
import { Form, Input, Button, Checkbox } from 'antd';
+import _auth from '@netuno/auth-client';
+
const layout = {
labelCol: { span: 8 },
wrapperCol: { span: 16 },
@@ -13,6 +15,15 @@ const tailLayout = {
export default ()=> {
const onFinish = (values) => {
console.log('Success:', values);
+ _auth.login({
+ ...values,
+ success: ()=> {
+ window.location = '/main';
+ },
+ fail: ()=> {
+ alert("Fail.");
+ }
+ });
};
const onFinishFailed = (errorInfo) => {
diff --git a/website/src/pages/Logout/index.js b/website/src/pages/Logout/index.js
new file mode 100644
index 0000000..da770af
--- /dev/null
+++ b/website/src/pages/Logout/index.js
@@ -0,0 +1,24 @@
+import React from 'react';
+
+import { Redirect } from "react-router-dom";
+
+import _auth from '@netuno/auth-client';
+
+import { Button } from 'antd';
+
+export default ()=> {
+ if (!_auth.isLogged()) {
+ return ;
+ }
+ const onLogout = () => {
+ _auth.logout();
+ window.location = '/';
+ }
+ return (
+
+
Sair
+
Para confirmar que deseja terminar a sessão clique no botão abaixo.
+
+
+ );
+};
\ No newline at end of file
diff --git a/website/src/pages/Main/index.js b/website/src/pages/Main/index.js
new file mode 100644
index 0000000..c6ccea5
--- /dev/null
+++ b/website/src/pages/Main/index.js
@@ -0,0 +1,36 @@
+import React, { useState, useEffect } from 'react';
+
+import { Redirect } from "react-router-dom";
+
+import _auth from '@netuno/auth-client';
+
+import _service from '@netuno/service-client';
+
+import { Spin } from 'antd';
+
+export default ()=> {
+ if (!_auth.isLogged()) {
+ return ;
+ }
+ const [ userInfo, setUserInfo ] = useState(null);
+ useEffect(() => {
+ _service({
+ url: 'public/info',
+ success: (response) => {
+ setUserInfo(response.json);
+ },
+ fail: (e) => {
+ console.error('Service Info Error', e);
+ }
+ });
+ }, []);
+ if (userInfo == null) {
+ return ;
+ }
+ return (
+
+
Principal
+ Olá {userInfo.name}
+
+ );
+};
\ No newline at end of file