Skip to content

Commit b9ead70

Browse files
committed
docs(sitmun.github.io): update docs, add Troubleshooting, restructure archive
- Move docs/archive.md to _archive/archive.md - Add docs/troubleshooting.md - Remove docs/demo.md - Update multiple pages: API, Architecture, Configuration, Design, Features (client/server), Getting Started, Index, License, Management, Roadmap (and subpages) - Update mkdocs.yml navigation to reflect changes - Add .python-version for local toolchain - Update poetry.lock
1 parent 598c426 commit b9ead70

25 files changed

Lines changed: 955 additions & 548 deletions

.python-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3.11.10

docs/archive.md renamed to _archive/archive.md

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,26 +34,18 @@ Pero hay información que posiblemente no está documentada en otros sitios.
3434
> towards open source projects, we migrated to GitHub Actions. These configuration files are thus currently the GitHub
3535
> Actions workflows in the .github/workflows directory in each repository. These files will generally use `npm` and `ng`
3636
> for the front-end libraries and applications, and gradle for the back-end components. They use `sonarcloud` for static
37-
> code analysis, `compodoc` to create the angular libraries documentation (accessible then in <https://sitmun.github.io/>)
38-
> etc. They also deploy some applications and components (currently to GitHub pages and Heroku) for testing.
37+
> code analysis, `compodoc` to create the angular libraries documentation (published on a static site)
38+
> etc. They also deploy some applications and components (e.g., to GitHub pages) for testing.
3939
>
4040
> The scripts require a number of values that are different for each developer / build environment, and other values
4141
> which are secrets that can't be shared in the repositories. If you want to build locally, those values generally
4242
> must be in environment variables. Depending on the repository and your needs your environment will need to have
4343
> defined:
4444
>
4545
> - `JAVA_HOME`: Make sure it points to a proper installation of the required version of Java.
46-
> - `USERNAME`: Your GitHub user. Required to access to the packages in the GitHub registry, and to publish packages
47-
> there, with the proper access token (see next point).
48-
> - `GITHUB_API_KEY`: A GitHub personal access token, created for `USERNAME` and with, at least, the required scopes.
49-
> These scopes are, in a nutshell, `read:packages` to download and install packages from GitHub packages and
50-
> `write:packages` to upload and publish. Your GitHub user needs also read permissions on the repository to
51-
> download packages, and write permission to publish them.
5246
> - `SONAR_TOKEN`: A SonarCloud authentication token is required for the sonarqube Gradle task to work on your computer.
5347
>
54-
> The CI build scripts need values for these too. Those are stored as secrets associated to the SITMUN organization in
55-
> GitHub and currently are: `SONAR_TOKEN`, `TOKEN_FOR_WORKFLOWS` (the `GITHUB_API_KEY`), `USERNAME_FOR_WORKFLOWS` (`USERNAME`),
56-
> `HEROKU_TOKEN` and `HEROKU_EMAIL` (currently used for the automatic deployment of the back-end to Heroku for testing purposes).
48+
>
5749
>
5850
> Regarding the libraries which are published to the GitHub packages registry, they are published only on tagged commits.
5951
> So you can push changes to a library as you like, but if you want that to be published as a package by the CI server,
@@ -71,12 +63,6 @@ Pero hay información que posiblemente no está documentada en otros sitios.
7163
>
7264
> Each repository has a `sonar-project.properties` file with the proper configuration to make it possible to analyze its
7365
> code on SonarCloud.
74-
>
75-
> **Programming languages, runtimes and tools**
76-
>
77-
> Some repositories use only Java (e.g. the backend-core), others use only Node.js and others use both.
78-
> For the required versions, again the CI server configuration files should be taken as the canonical ones.
79-
> You also need the Git client.
8066
8167
## Documentación del código
8268

@@ -90,5 +76,6 @@ tan solo lo esencial y tratar de mantener eso razonablemente actualizado.
9076
> `git push` to master is done to the repository. The tools currently used are:
9177
>
9278
> - Compodoc for the Typescript/Angular code.
93-
> - Swagger2markup for the REST API.
9479
> - Javadoc for the Java classes in the server.
80+
81+

docs/api.md

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,41 @@
11
# Referencia
22

3-
## API de Autenticación
3+
## API de Autenticación {#api-de-autenticacion}
44

5-
La **[API de Autenticación](https://sitmun-backend-core.herokuapp.com/swagger-ui/index.html?urls.primaryName=API%20de%20Autenticaci%C3%B3n)** expone vía una API Web mecanismos para interactuar con el sistema de seguridad de SITMUN.
5+
La API de Autenticación expone vía una API Web mecanismos para interactuar con el sistema de seguridad de SITMUN.
66
Esta API se ha creado para que la **aplicación de administración** y los **visores de mapas obtengan**,
7-
tras pasar las credenciales de usuario obtengan un token de acceso [JSON web token](https://jwt.io/) (JWT) necesario para operar con el resto de las API.
7+
tras pasar las credenciales de usuario obtengan un token de acceso JSON web token (JWT) necesario para operar con el resto de las API.
88

9-
[Explorar API de Autenticación :simple-openapiinitiative:](https://sitmun-backend-core.herokuapp.com/swagger-ui/index.html?urls.primaryName=API%20de%20Autenticaci%C3%B3n){ .md-button }
9+
## API de Configuración y Autorización {#api-de-configuracion-y-autorizacion}
1010

11-
## API de Configuración y Autorización
12-
13-
La **[API de Configuración y Autorización](https://sitmun-backend-core.herokuapp.com/swagger-ui/index.html?urls.primaryName=API%20de%20Configuraci%C3%B3n%20y%20Autorizaci%C3%B3n)**
14-
expone vía una API Web mecanismos para obtener una configuración derivada del estado actual de los objetos de dominio
11+
La API de Configuración y Autorización expone vía una API Web mecanismos para obtener una configuración derivada del estado actual de los objetos de dominio
1512
en función de la identidad y rol del que solicita la información.
1613
Esta API se ha creado para que los **visores de mapas** y el **proxy** puedan configurarse.
1714

18-
La **API de Configuración y Autorización** se compone de dos tipos de endpoints:
15+
La API de Configuración y Autorización se compone de dos tipos de endpoints:
1916

2017
- **Configuración y Autorización de Visor de mapas**.
21-
La petición pueden autenticarse usando un esquema de *autenticación por portador*
22-
([*Bearer authentication*](https://swagger.io/docs/specification/authentication/bearer-authentication/))
23-
usando un token que se ha obtenido previamente mediante la **[API de Autenticación][api-de-autenticacion]**.
18+
La petición pueden autenticarse usando un esquema de autenticación por portador (Bearer authentication)
19+
usando un token que se ha obtenido previamente mediante la API de Autenticación.
2420
Si no se autentica, se asume que la petición se ha realizado por un usuario que en el dominio de **SITMUN 3** se denomina
2521
*usuario público*.
2622
- **Configuración y Autorización de Proxy**.
2723
La petición debe autenticarse usando una API key enviada mediante la cabecera denominada `X-SITMUN-Proxy-Key`.
2824
El uso de una API key específica para el endpoint **Configuración y Autorización de Proxy** es una decisión de seguridad.
29-
Evita que a un cliente malicioso le pueda bastar el uso del token obtenido de la **[API de Autenticación][api-de-autenticacion]**
25+
Evita que a un cliente malicioso le pueda bastar el uso del token obtenido de la API de Autenticación
3026
para obtener secretos vía el endpoint **Configuración y Autorización de Proxy**.
3127

32-
[Explorar API de Configuración y Autorización :simple-openapiinitiative:](https://sitmun-backend-core.herokuapp.com/swagger-ui/index.html?urls.primaryName=API%20de%20Configuraci%C3%B3n%20y%20Autorizaci%C3%B3n){ .md-button }
33-
34-
## API de Proxy
28+
## API de Proxy {#api-de-proxy}
3529

36-
La **[API de Proxy](https://sitmun-backend-core.herokuapp.com/swagger-ui/index.html?urls.primaryName=API%20del%20Proxy)**
37-
permite acceder a los visores de mapas a servicios remotos y bases de datos.
30+
La API de Proxy (Proxy Middleware) permite acceder a los visores de mapas a servicios remotos y bases de datos.
3831

39-
Los **visores de mapas** pueden autenticarse usando un esquema de *autenticación por portador*
40-
([*Bearer authentication*](https://swagger.io/docs/specification/authentication/bearer-authentication/))
32+
Los **visores de mapas** pueden autenticarse usando un esquema de autenticación por portador (Bearer authentication)
4133
usando un token que se ha obtenido previamente mediante la API de Autenticación.
4234
Si no se autentica, se asume que la petición se ha realizado por un usuario que en el dominio de **SITMUN 3** se denomina
4335
*usuario público*.
4436

45-
[Explorar API de Proxy :simple-openapiinitiative:](https://sitmun-backend-core.herokuapp.com/swagger-ui/index.html?urls.primaryName=API%20del%20Proxy){ .md-button }
37+
## API de Administración {#api-de-administracion}
4638

47-
## API de Administración
48-
49-
La **[API de Administración](https://sitmun-backend-core.herokuapp.com/swagger-ui/index.html?urls.primaryName=API%20de%20Administraci%C3%B3n)** expone vía una API Web mecanismos para modificar el estado de los objetos de dominio
39+
La API de Administración expone vía una API Web mecanismos para modificar el estado de los objetos de dominio
5040
de **SITMUN 3** por parte de la **aplicación de administración**.
51-
La **aplicación de administración** debe autenticarse con un JSON Web Token obtenido de la **[API de Autenticación][api-de-autenticacion]**.
52-
53-
[Explorar API de Administración :simple-openapiinitiative:](https://sitmun-backend-core.herokuapp.com/swagger-ui/index.html?urls.primaryName=API%20de%20Administraci%C3%B3n){ .md-button }
41+
La **aplicación de administración** debe autenticarse con un JSON Web Token obtenido de la API de Autenticación.

docs/architecture.md

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Las aplicaciones de usuario final de **SITMUN 3** interactúan relativamente poc
2727

2828
Esto conviene tenerlo en cuenta cuando estemos dimensionando el hardware que necesitamos para el despliegue, y cómo lo vamos a repartir.
2929

30-
**SITMUN 3** tiene una arquitectura de 3-tiers. Las aplicaciones web se desarrollan con Angular, Spring Boot se usa en el tier web, y una base de datos relacional (Oracle o PostgreSQL a día de hoy, pero se pueden usar otras) en el tier de datos.
30+
**SITMUN 3** tiene una arquitectura de 3-tiers. Las aplicaciones web se desarrollan con Angular 16, Spring Boot 3 se usa en el tier web, y una base de datos relacional (PostgreSQL 16, Oracle 23c, o H2 para desarrollo a día de hoy, pero se pueden usar otras) en el tier de datos.
3131

3232
## Principales componentes
3333

@@ -61,7 +61,7 @@ rectangle appadmin [
6161
]
6262
6363
database configdb [
64-
<color:Crimson><$oracle> / <color: RoyalBlue><$postgresql> (PostgreSQL)
64+
<color:Crimson><$oracle> (Oracle 23c) / <color: RoyalBlue><$postgresql> (PostgreSQL 16) / <color: Green>H2 (Desarrollo)
6565
6666
--
6767
@@ -117,7 +117,7 @@ component privatewms #PapayaWhip [
117117
]
118118
119119
database territdb #PapayaWhip [
120-
<$lock_protected{scale=0.5}> <color:Crimson><$oracle> / <color: RoyalBlue><$postgresql> (PostgreSQL)
120+
<$lock_protected{scale=0.5}> <color:Crimson><$oracle> (Oracle 23c) / <color: RoyalBlue><$postgresql> (PostgreSQL 16)
121121
122122
--
123123
@@ -778,16 +778,6 @@ together {
778778
}
779779
780780
together {
781-
package "Despliegue en Heroku" <<application, dev>> as ":deploy:heroku-dev-full" #ffa500 {
782-
783-
}
784-
785-
note top of ":deploy:heroku-dev-full"
786-
Configuración adaptada para
787-
su despliegue en **Heroku**
788-
usando **Heroku postgres**
789-
para persistencia
790-
end note
791781
792782
package "Schema Export" <<tool, dev>> as ":cli" #ffa500 {
793783
@@ -801,8 +791,7 @@ together {
801791
}
802792
803793
804-
":deploy:heroku-dev-full" ..> ":app" : <<import>>
805-
":deploy:heroku-dev-full" .[norank].> ":legacy" : <<import>>
794+
806795
807796
":cli" .r.> ":app" : <<import>>
808797

docs/configuration.md

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
## Backend
77

8-
### API de Autenticación
8+
### API de Autenticación {#configuration-api-de-autenticacion}
99

1010
Estas propiedades se utilizan para configurar el acceso al servidor LDAP para autenticar a los usuarios.
1111

@@ -18,39 +18,38 @@ Estas propiedades se utilizan para configurar el acceso al servidor LDAP para au
1818
| `sitmun.authentication.ldap.url` | Localización del servidor LDAP | |
1919
| `sitmun.authentication.ldap.base-dn` | Contexto raíz para todas las operaciones LDAP | |
2020
| `sitmun.authentication.ldap.user-dn-pattern` | Patrón que identifica el usuario | |
21-
| `sitmum.authentication.ldap.username` | El nombre de usuario a utilizar cuando se autentique con el servidor LDAP | nulo |
22-
| `sitmum.authentication.ldap.password` | La contraseña a utilizar cuando se autentique con el servidor LDAP | nulo |
21+
| `sitmun.authentication.ldap.password` | La contraseña a utilizar cuando se autentique con el servidor LDAP | nulo |
2322

24-
### API de Configuración y Autorización
23+
### API de Configuración y Autorización {#configuration-api-de-configuracion-y-autorizacion}
2524

26-
| Propiedad | Descripción | Valor por defecto |
27-
|---------------------------------------------------|-------------------------------------------------------|-------------------|
28-
| `sitmun.proxy.config-response-validity-in-secons` | Duración máxima del token de acceso que admite la API | `3600` |
29-
| `sitmun.authentication.middleware.secret` | Token que usa el componente proxy para autenticarse | |
25+
| Propiedad | Descripción | Valor por defecto |
26+
|-----------------------------------------------------------|--------------------------------------------------------------------|-------------------|
27+
| `sitmun.proxy-middleware.config-response-validity-in-seconds` | Duración máxima (en segundos) de validez de la respuesta de configuración | `3600` |
28+
| `sitmun.proxy-middleware.secret` | Secreto que usa el componente proxy para autenticarse | |
3029

3130
Mediante las siguientes propiedades se puede forzar la reescritura de las URI de los servicios en las repuestas de
3231
configuración para clientes de mapas para que apunten al componente Proxy.
3332

34-
| Propiedad | Descripción | Valor por defecto |
35-
|----------------------|-----------------------------------|-------------------|
36-
| `sitmun.proxy.force` | Fuerza el uso del proxy de SITMUN | `false` |
37-
| `sitmun.proxy.url` | Localización del proxy de SITMUN | |
33+
| Propiedad | Descripción | Valor por defecto |
34+
|-----------------------------------|-----------------------------------|-------------------|
35+
| `sitmun.proxy-middleware.force` | Fuerza el uso del proxy de SITMUN | `false` |
36+
| `sitmun.proxy-middleware.url` | Localización del proxy de SITMUN | |
3837

3938
## Proxy
4039

4140
| Propiedad | Descripción | Valor por defecto |
4241
|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------|-------------------|
43-
| `sitmun.config.url` | Ruta al endpoint de configuración del **proxy** en la API de configuración y autorización | |
44-
| `sitmun.authentication.middleware.secret` | Token que usa el proxy para autenticarse (ver [API de configuración y autorización](#api-de-configuracion-y-autorizacion)) | |
42+
| `sitmun.backend.config.url` | Ruta al endpoint de configuración del **proxy** en la API de configuración y autorización | |
43+
| `sitmun.backend.config.secret` | Secreto que usa el proxy para autenticarse (ver API de configuración y autorización) | |
4544

4645
## Visor de mapas
4746

48-
| Propiedad | Descripción | Valor por defecto |
49-
|-----------|---------------------------------------------------|---------------------------------------------|
50-
| `apiUrl` | La URL pública donde se despliega el **backend**. | `https://sitmun-backend-core.herokuapp.com` |
47+
| Propiedad | Descripción | Valor por defecto |
48+
|-----------|---------------------------------------------------|---------------------------------|
49+
| `apiUrl` | La URL pública donde se despliega el **backend**. | `http://localhost:9000/backend` |
5150

5251
## Administrador
5352

54-
| Propiedad | Descripción | Valor por defecto |
55-
|--------------|---------------------------------------------------|----------------------------------------------|
56-
| `apiBaseURL` | La URL pública donde se despliega el **backend**. | `https://sitmun-backend-core.herokuapp.com` |
53+
| Propiedad | Descripción | Valor por defecto |
54+
|--------------|---------------------------------------------------|----------------------------------|
55+
| `apiBaseURL` | La URL pública donde se despliega el **backend**. | `http://localhost:9000/backend` |

docs/demo.md

Lines changed: 0 additions & 13 deletions
This file was deleted.

docs/design.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ La petición que el **proxy** realizaría al endpoint `/api/config/proxy` de la
196196
{
197197
"appId": 1,
198198
"terId": 34,
199-
"type": "wms",
199+
"type": "WMS",
200200
"typeId": 1,
201201
"method": "GET",
202202
"parameters": {
@@ -219,14 +219,14 @@ La respuesta podría ser como sigue:
219219

220220
```json
221221
{
222-
"type": "wms",
222+
"type": "OgcWmsPayload",
223223
"exp": 1623340800,
224224
"payload": {
225-
"uri": "https://geoserveis.icgc.cat/icgc_bm5m/wms/service",
226-
"method": "GET",
227225
"vary": [
228226
"BBOX"
229227
],
228+
"uri": "https://geoserveis.icgc.cat/icgc_bm5m/wms/service",
229+
"method": "GET",
230230
"parameters": {
231231
"SERVICE": "WMS",
232232
"REQUEST": "GetMap",
@@ -261,3 +261,8 @@ GET /icgc_bm5m/wms/service?SERVICE=WMS&REQUEST=GetMap
261261
&WIDTH=498&HEIGHT=594
262262
Host: geoserveis.icgc.cat
263263
```
264+
265+
[api-de-autenticacion]: api.md#api-de-autenticacion
266+
[api-de-configuracion-y-autorizacion]: api.md#api-de-configuracion-y-autorizacion
267+
[api-de-proxy]: api.md#api-de-proxy
268+
[servicio-de-proxy]: design.md#servicio-de-proxy

docs/features-client.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,3 +153,13 @@
153153
## Aplicación de Administración
154154

155155
!!! warning "Documentación en desarrollo"
156+
157+
[api-de-autenticacion]: api.md#api-de-autenticacion
158+
[api-de-configuracion-y-autorizacion]: api.md#api-de-configuracion-y-autorizacion
159+
[api-de-proxy]: api.md#api-de-proxy
160+
161+
## Canonical Link References
162+
163+
- [API de autenticación][api-de-autenticacion]
164+
- [API de configuración y autorización][api-de-configuracion-y-autorizacion]
165+
- [API de Proxy][api-de-proxy]

0 commit comments

Comments
 (0)