Skip to content

Commit

Permalink
Merge pull request #185 from Arquisoft/develop
Browse files Browse the repository at this point in the history
Últimos cambios
  • Loading branch information
paulasuarezp authored May 2, 2023
2 parents 4459f81 + 03e602f commit 0e806b7
Show file tree
Hide file tree
Showing 211 changed files with 142,943 additions and 180 deletions.
8 changes: 7 additions & 1 deletion docs/03_system_scope_and_context.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,17 @@ E.g. UML deployment diagram describing channels to neighboring systems,
together with a mapping table showing the relationships between channels and input/output.
****

image:03_Technical_Context.png["Technical Context Diagram"]

Usaremos las siguientes tecnologías:
[options="header",cols="1,2"]
|===
|Tecnología|Descripción
|TypeScript|Lenguaje utilizado para realizar la aplicación.
|React|Biblioteca utilizada para crear interfaces de usuario en una sola página.
|SOLID|Arquitectura para almacenar la información privada de los usuarios de manera descentralizada.
|MongoDB Atlas|Base de datos utilizada para almacenar información relativa a la aplicación.
|Docker|Sistema utilizado para almacenar la aplicación en contenedores para su posterior despliegue.
|Microsoft Azure|Plataforma utilizada para desplegar la aplicación.
|===

Las librerías utilizadas se describen en el Anexo https://arquisoft.github.io/lomap_es2c/#_used_libraries[13.2. Used Libraries]
136 changes: 131 additions & 5 deletions docs/06_runtime_view.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,9 @@ header Runtime View
title User Registration
Actor User
Participant LoMap
Participant POD as "User's POD"
Database DataBase as "DataBase"
User -> LoMap: Sing up as a new user filling the form
User <-- LoMap: Ask user for his WebID
User -> LoMap: Provide his WebID
LoMap -> POD: Verify WebID
LoMap <-- POD: Gives LoMap permissions
LoMap -> DataBase: Add user credentials
LoMap <-- DataBase: Confirm credentials addition
Expand All @@ -68,13 +63,22 @@ Database DataBase as "DataBase"
User -> LoMap: Log in with his credentials
LoMap -> DataBase: Check user credentials
LoMap <-- DataBase: Confirm credentials
User <-- LoMap: Ask user for his WebID
User -> LoMap: Provide his WebID
LoMap -> POD: Verify WebID
LoMap <-- POD: Gives LoMap permissions
LoMap -> POD: Check POD availability
POD --> LoMap: Confirm POD availability
...User interacts with the apllication......
User -> LoMap: Log out from apllication
LoMap --> User: Show exit dialog and closes user session
LoMap --> User: Show exit dialog and closes user session
----

==== Edit web ID
Expand Down Expand Up @@ -129,3 +133,125 @@ LoMap --> User: Show confirm dialog
...User log out as shown......
----
=== Second level of detail

==== User Sign Up
Proceso de crear un nuevo usuario
[plantuml,"Register sequence diagram",png]
----
@startuml
header Runtime View
title User Registration
Actor User
Participant LoMapWebapp
Participant LoMapRestApi
Database DataBase as "DataBase"
User -> LoMapWebapp: Sing up as a new user filling the form
LoMapWebapp-> LoMapRestApi: Add user credentials
LoMapRestApi -> LoMapRestApi: Checking credentials
LoMapRestApi -> DataBase: Save user
DataBase--> LoMapRestApi : User saved correctly
LoMapWebapp<-- LoMapRestApi : Confirm credentials addition
User <-- LoMapWebapp: Show confirm dialog to User
@enduml
----

==== Login and Logout
Proceso de crear un nuevo usuario
[plantuml,"Register sequence diagram",png]
----
@startuml
header Runtime View
title Log in - Log out
Actor User
Participant LoMapWebApp
Participant LoMapRestApi
Participant POD as "User's POD"
Database DataBase as "DataBase"
User -> LoMapWebApp: Log in with his credentials
LoMapWebApp-> LoMapRestApi: Check user credentials
LoMapRestApi-> DataBase: Check user credentials
LoMapRestApi<-- DataBase: Confirm credentials
LoMapWebApp<-- LoMapRestApi: Confirm credentials
User <-- LoMapWebApp: Ask user for his WebID
User -> LoMapWebApp: Provide his WebID
LoMapWebApp-> POD: Verify WebID
LoMapWebApp<-- POD: Gives LoMapWebApppermissions
LoMapWebApp-> POD: Check POD availability
POD --> LoMapWebApp: Confirm POD availability
LoMapWebApp-->LoMapRestApi:Save WebId
LoMapRestApi-->DataBase:Save WebId
...User interacts with the apllication......
User -> LoMapWebApp: Log out from apllication
LoMapWebApp--> User: Show exit dialog and closes user session
@enduml
----
==== Edit profile
Un usuario quiere cambiar su perfil:

[plantuml,"Sequence diagram",png]
----
header Runtime View
title Profile edit
Actor User
Participant LoMapWebApp
Participant LoMapRestApi
Database DataBase as "DataBase"
...User log in as shown......
User -> LoMapWebApp: Asks for profile editing
User <-- LoMapWebApp: Show edit menu to User
User -> LoMapWebApp: Provide the new information
LoMapWebApp-> LoMapRestApi: Verify information and update
LoMapRestApi-> LoMapRestApi: Verify information
LoMapRestApi-> DataBase: Update user credentials
LoMapRestApi<-- DataBase: Confirm credentials
LoMapWebApp<-- LoMapRestApi: Confirm
LoMapWebApp--> User: Show confirm dialog
...User log out as shown......
----

==== Place adding
Proceso de añadir un lugar al mapa:
[plantuml,"Add favorite place sequence diagram",png]
----
header Runtime View
title Add favorite place
Actor User
Participant LoMapWebApp
Database DataBase as "User's POD"
...User log in as shown......
User -> LoMapWebApp: Wanna add a place
User <-- LoMapWebApp: Show favorite places form
User -> LoMapWebApp: Provide the info
LoMapWebApp-> DataBase: Add new user data
LoMapWebApp<-- DataBase: Confirm data addition
LoMapWebApp--> User: Show confirm dialog
...User log out as shown......
----
5 changes: 1 addition & 4 deletions docs/08_concepts.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,4 @@ Para la interfaz de usuario usaremos React junto con TypeScript. React facilita


=== Escalabilidad y mantenimiento
Con el fin de que nuestra aplicación sea fácilmente _escalable_ y _mantenible_ se seguirán unos estándares de código. Se busca crear un código limpio, documentado y que siga unos patrones para facilitar su comprensión, el arreglo de bugs y añadir nuevas funcionalidades en un futuro.

=== Internacionalización
La aplicación ha sido encargada por el ayuntamiento de Bruselas pero con vista a que además de los ciudadanos la utilicen turistas y en un futuro se use en otras ciudades, por ello la aplicación se desarrollará en inglés.
Con el fin de que nuestra aplicación sea fácilmente _escalable_ y _mantenible_ se seguirán unos estándares de código. Se busca crear un código limpio, documentado y que siga unos patrones para facilitar su comprensión, el arreglo de bugs y añadir nuevas funcionalidades en un futuro.
14 changes: 14 additions & 0 deletions docs/09_design_decisions.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,18 @@ En la siguiente tabla, ordenadas por prioridad, se encuentran las decisiones arq
| Puede agregar complejidad a la aplicación web.
| https://github.com/Arquisoft/lomap_es2c/wiki/00.-Decisiones-arquitect%C3%B3nicas#da-08-redux[DA-08]

| *Azure*
| El proveedor de servidores en la nube Azure cuenta con las características necesarias para nuestra aplicación y ya estamos acostumbrados a su uso.
| La cuenta gratuita tiene un saldo limitado y a largo plazo es insostenible.
| https://github.com/Arquisoft/lomap_es2c/wiki/00.-Decisiones-arquitect%C3%B3nicas#da-12-entorno-de-despliegue[DA-12]

| *Cloudinary*
| Es un sistema sencillo de usar y, para el nivel de almacenamiento que requerimos, es gratuito.
| Si no se realizan bien las peticiones puede ocasionar errores cross-site.
| https://github.com/Arquisoft/lomap_es2c/wiki/00.-Decisiones-arquitect%C3%B3nicas#da-10-procesamiento-de-im%C3%A1genes-en-la-nube[DA-10]

| *Axios*
| Cliente HTTP muy sencillo de utilizar.
| Al nivel de nuestra aplicación no presenta desventajas.
| https://github.com/Arquisoft/lomap_es2c/wiki/00.-Decisiones-arquitect%C3%B3nicas#da-11-cliente-http-para-realizar-peticiones-desde-la-webapp[DA-11]
|===
2 changes: 1 addition & 1 deletion docs/10_quality_scenarios.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,6 @@ Tabular or free form text.
|Un usuario quiere cambiar la localización de su POD|Privacidad|El usuario tiene que ser libre de ubicar sus datos donde quiera. La aplicación debe permitirle actualizar la referencia a su POD. Esto permite a cada usuario guardar sus datos donde y como quiera.
|Otro ayuntamiento quiere incorporar la aplicación en su ciudad|Flexibilidad|Nuestra aplicación debe tener una implementación adecuada. Debe usar los patrones y arquitecturas de diseño necesarias para que sea fácil modificar la aplicación para su uso en otra localización
|Se necesita añadir más funcionalidad|Escalabilidad|La aplicación esta recién creada. La funcionalidad solicitada actual no tiene porque ser la final. Debemos desarrollar un software escalable y preparado para añadir más requisitos.
|Personas con situaciones especiales (daltónicos, ciegos, etc...) quieren usar la aplicación|Accesibilidad|Debemos de seguir los estándares internacionales de accesibilidad para crear una aplicación que cualquier persona pueda usar. Accesibilidad orientada a las funcionalidades extra (permitir lectura con navegadores de voz, manejo con teclado, etc)
|Un pico de carga en los servidores de la aplicación|Eficiencia|Es nuestra responsabilidad que nuestra aplicación sea eficiente y no haga los tiempos de espera ofrecidos por Inrupt aún mayores para cuidar la experiencia del usuario.
|Personas mayores o malas para la informática quieren usar la aplicación|Usabilidad|La aplicación debe ofrecer una interfaz amigable y sencilla. Tanto la gente mayor como la no habituada a usar aplicaciones deben de poder, si quieren, usarla sin problema. Accesibilidad orientada a la interfaz y sus características.
|===
4 changes: 2 additions & 2 deletions docs/11_technical_risks.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ List of risks and/or technical debts, probably including suggested measures to m

=== Technical Debts

* La principal duda técnica es la dependencia de Inrupt. Durante el desarrollo del trabajo hemos detectado mucha inestabilidad en sus servicios. En ocasiones tiene tiempos de respuesta muy altosmás, es una API en desarrollo por lo que no podemos asegurar que sea perfectamente fucnional o que vaya a cambiar significativamente en el futuro y nuestra aplicación deje de funcionar.
* La interoperabilidad nos genera muchas dudas debido a que ni si quiera se ha alcanzado un acuerdo firme. Se han tomado decisiones sin meditación a su respecto y puede generar problemas. Consideramos que el estandar de LoMap no ha tenido suficiente tiempo de desarrollo como para ser óptimo.
* La principal deuda técnica es la dependencia de Inrupt. Durante el desarrollo del trabajo hemos detectado mucha inestabilidad en sus servicios. En ocasiones tiene tiempos de respuesta muy altos. Además, es una API en desarrollo por lo que no podemos asegurar que sea perfectamente fucnional o que vaya a cambiar significativamente en el futuro y nuestra aplicación deje de funcionar.
* La interoperabilidad no ha llegado a un acuerdo firme. Se han tomado decisiones sin meditar y puede generar problemas. Consideramos que el estandar de LoMap no ha tenido suficiente tiempo de desarrollo como para ser óptimo.
* Nos ha sido imposible hacer una comprobación exhaustiva de bugs o la inclusión de funcionalidad extra debido al poco tiempo existente para el desarrollo del proyecto en comparación con la problemática percibida en general al usar las tecnologías impuestas por el profesorado.


32 changes: 30 additions & 2 deletions docs/appendix_1.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,11 @@ A table with columns <Library> and <Definition>.
| Mui | Facilita la creación de componentes altamente personalizables
| react-router-dom | Librería usada para definir las rutas de navegación de la aplicación
| react-hook-form | Simplifica la creación de formularios al hacer que la validación de los campos de estos sea sencilla.
| sweetalert2 | Librería utilizada para mostrar ventanas emergentes, facilitando al usuario la comprensión de las acciones realizadas
| sweetalert2 | Librería utilizada para mostrar ventanas emergentes, facilitando al usuario la comprensión de las acciones realizadas.
| leaflet | Librería que adapta el uso de OpenStreetMap facilitando su implementación y de licencia gratuita.
| yup | Validador de campos para los formularios que permite añadir mensajes de error personalidados.
| @inrupt/solid-ui-react | Librería Inrupt utilizada para manejar los PODs.
| redux | Librería que facilita el manejo de estado de la aplicación.
|===


Expand All @@ -76,4 +80,28 @@ A table with columns <Library> and <Definition>.
|===
|Librería|Explicación
| mongoose | Librería que facilita la integración de una base de datos MongoDB y Node.js
|===
| bcryptjs | Librería de encriptado de contraseñas para dotar de seguridad a la APP.
|===

=== Interoperability

[role="arc42help"]
****
.Contents
Some info about the application interoperability
.Motivation
Explain the decisions taken about the LoMap especification
.Form
Short explication about the decisions taken
****

En la aplicación LoMap y con ámbito reducido a la asignatura de Arquitectura del Software de la Universidad de Oviedo se ha tratado
de desarrollar una especificación para el almacenamiento de datos. Al día de la release final la especificación no ha llegado a un punto
estable con un acuerdo generalizado. Ante la incertidumbre sobre la realidad detrás de la interoperabilidad planteada y por cuestiones de
tiempo se ha decidido adoptar la estructura de datos pero no su ubicación. Solucionar bugs y hacer un despliegue correcto han sido tareas más
prioritarias que nos han impedido investigar los fallos producidos por Inrupt al tratar de adoptar la especificación en su totalidad.
Binary file added docs/images/03_Technical_Context.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/05_Level_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/08_Domain_Model.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/10_Goals_Tree.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/LogoCompleto.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
//
// ====================================

= image:LogoASW.png[arc42] LOMAP ES2C
= image:LogoCompleto.png[arc42] LOMAP ES2C
// toc-title definition MUST follow document title without blank line!
:toc: left
:toc-title: Table of Contents
Expand Down
9 changes: 1 addition & 8 deletions restapi/src/controllers/SessionManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,16 @@ import { User, SesionManager } from "../facade";
export { UserSesionManager };
import * as repo from "../persistence/Repository"
import mongoose from "mongoose";
const sessionStorage = require('sessionstorage-for-nodejs')
const bcrypt = require("bcryptjs");
require("dotenv").config();

class UserSesionManager implements SesionManager {

rondasDeEncriptacion = 10
// userInSession: User | null;

constructor() {
// this.userInSession = null;
}

async registrarse(usuario: User): Promise<User> {
let usuarioEncontrado;
try
{
try {
usuarioEncontrado = await repo.Repository.findOne(usuario)
} catch (e: any) {
throw new Error("Ha sucedido un error al crear la cuenta, vuelva a intentarlo más tarde.");
Expand Down
Loading

0 comments on commit 0e806b7

Please sign in to comment.