Skip to content

Commit

Permalink
Merge pull request #11 from ladesa-ro/feat/theme-web
Browse files Browse the repository at this point in the history
feat: theme web
  • Loading branch information
guesant authored Aug 17, 2024
2 parents 8a0c84a + 9774231 commit 9ab32ee
Show file tree
Hide file tree
Showing 36 changed files with 7,284 additions and 66 deletions.
4 changes: 2 additions & 2 deletions .devops/development/.kc-db.env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
POSTGRESQL_DATABASE=sisgea-servc-idp
POSTGRESQL_DATABASE=ladesa-ro-auth

# POSTGRESQL_USERNAME=postgres
POSTGRESQL_PASSWORD=5fc445f63b0b4cf388d0e772e053d468
POSTGRESQL_PASSWORD=5fc445f63b0b4cf388d0e772e053d468
4 changes: 2 additions & 2 deletions .devops/development/.kc.env.example
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
KC_DB=postgres

KC_DB_URL_HOST=sisgea-servc-idp-db
KC_DB_URL_HOST=ladesa-ro-auth-db
KC_DB_URL_PORT=5432
KC_DB_URL_DATABASE=sisgea-servc-idp
KC_DB_URL_DATABASE=ladesa-ro-auth

KC_DB_SCHEMA=keycloak
KC_DB_USERNAME=postgres
Expand Down
31 changes: 29 additions & 2 deletions .devops/development/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ services:
- "./volumes/db/scripts/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d"
env_file:
- .kc-db.env

networks:
ladesa-net:

ports:
- 127.128.5.11:5432:5432
- 23080:5432

ladesa-ro-auth:
build:
Expand All @@ -19,17 +21,42 @@ services:
- KEYCLOAK_EXTRA_ARGS=-Dkeycloak.profile.feature.scripts=enabled
entrypoint: /opt/keycloak/bin/kc.sh
command: start-dev --import-realm

container_name: ladesa-ro-auth

volumes:
- ./data/import:/opt/keycloak/data/import/

env_file:
- .kc.env

depends_on:
- ladesa-ro-auth-db

networks:
ladesa-net:

ports:
- 127.128.5.10:8080:8080
- 23032:5432

labels:
#
# ===================================================================
- "traefik.enable=true"
# ===================================================================
- "traefik.http.services.sso.loadbalancer.server.port=8080"
# ------------
- "traefik.http.routers.sso.rule=Host(`sso.ladesa.localhost`)"
- "traefik.http.routers.sso.entrypoints=websecure"
- "traefik.http.routers.sso.tls=true"
- "traefik.http.routers.sso.service=sso"
# ------------
- "traefik.http.routers.sso-insecure.rule=Host(`sso.ladesa.localhost`)"
- "traefik.http.routers.sso-insecure.entrypoints=web"
- "traefik.http.routers.sso-insecure.tls=false"
- "traefik.http.routers.sso-insecure.service=sso"
# ===================================================================


networks:
ladesa-net:
Expand Down
8 changes: 8 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
node_modules
.git
.gitignore
*.md
dist
Dockerfile
.vitepress/cache
.github
19 changes: 19 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,28 @@
FROM node:22 as keycloakify_jar_builder

Check warning on line 1 in Dockerfile

View workflow job for this annotation

GitHub Actions / image-build-push

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/

RUN apt-get update && \
apt-get install -y openjdk-17-jdk && \
apt-get install -y maven;

ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable

COPY ./themes/web/package.json ./themes/web/pnpm-lock.yaml /opt/app/
WORKDIR /opt/app
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
COPY ./themes/web/ /opt/app/

RUN pnpm build-keycloak-theme

FROM quay.io/keycloak/keycloak:25.0 as builder

Check warning on line 18 in Dockerfile

View workflow job for this annotation

GitHub Actions / image-build-push

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/
ENV KC_HEALTH_ENABLED=true
ENV KC_METRICS_ENABLED=false
ENV KC_FEATURES=docker,token-exchange,recovery-codes
ENV KC_DB=postgres
ENV KEYCLOAK_EXTRA_ARGS=-Dkeycloak.profile.feature.scripts=enabled
WORKDIR /opt/keycloak
COPY --from=keycloakify_jar_builder /opt/app/dist_keycloak/keycloak-theme-for-kc-22-and-above.jar /opt/keycloak/providers/
RUN /opt/keycloak/bin/kc.sh build --health-enabled=true

FROM quay.io/keycloak/keycloak:25.0
Expand Down
62 changes: 34 additions & 28 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,42 +4,48 @@ d_container_app=ladesa-ro-auth

compose_options=--file .devops/development/docker-compose.yml -p ladesa-ro-auth

dev-setup:

setup:
$(shell (cd .devops/development; find . -type f -name "*.example" -exec sh -c 'cp -n {} $$(basename {} .example)' \;))
$(shell (bash -c "docker network create $(d_network) &>/dev/null"))

$(shell (bash -c "sudo docker network create $(d_network) &>/dev/null"))
up:
make setup;
docker-compose $(compose_options) up --force-recreate --remove-orphans -d;

dev-up:
make dev-setup;
sudo docker compose $(compose_options) up -d --remove-orphans;
start:
make setup;

dev-shell:
make dev-setup;
make dev-up;
sudo docker compose $(compose_options) exec $(d_container_app) bash;
make down;
make up;

dev-shell-root:
make dev-setup;
make dev-up;
sudo docker compose $(compose_options) exec -u root $(d_container_app) bash;
docker compose $(compose_options) exec \
-u node \
--no-TTY \
-d $(d_container_app) \
bash -c "npm i && npm run migration:run && npm run start:dev" \& \
;

dev-down:
make dev-setup;
sudo docker compose $(compose_options) stop;
logs:
make setup;
docker compose $(compose_options) logs -f;

dev-logs:
make dev-setup;
sudo docker compose $(compose_options) logs -f
shell:
make setup;
make up;
docker compose $(compose_options) exec $(d_container_app) bash;

shell-root:
make setup;
make up;
docker compose $(compose_options) exec -u root $(d_container_app) bash;

dev-start:
make dev-setup;
make dev-down;
make dev-up;
stop:
make setup;
docker compose $(compose_options) stop;

sudo docker compose $(compose_options) exec -u node --no-TTY -d $(d_container_app) bash -c "npm i && npm run migration:run && npm run start:dev" \&;
down:
make setup;
docker-compose $(compose_options) down --remove-orphans;

dev-cleanup:
make dev-down;
sudo docker compose $(compose_options) down -v;
cleanup:
docker compose $(compose_options) down --remove-orphans -v;
90 changes: 58 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,58 @@
# auth

## Ambientes
<h1 align="center">Autenticação do Ladesa</h1>

### Produção
<p align="center">Fornece recursos de login, recuperação de acesso e checagem de identidade de uma forma muito doce 💝.</p>

[![CI Production][action-ci-prod-src]][action-ci-prod-href]
<div align="center">
<a href="https://github.com/ladesa-ro/auth/actions/workflows/ci.yml?query=branch%3Amain">
<img alt="CI Development" src="https://img.shields.io/github/actions/workflow/status/ladesa-ro/auth/ci.yml?style=flat&logo=github&logoColor=white&label=development&branch=main&labelColor=18181B" />
</a>

<a href="https://github.com/ladesa-ro/auth/actions/workflows/ci.yml?query=branch%3Aproduction">
<img alt="CI Development" src="https://img.shields.io/github/actions/workflow/status/ladesa-ro/auth/ci.yml?style=flat&logo=github&logoColor=white&label=production&branch=production&labelColor=18181B" />
</a>

</div>

### Desenvolvimento
## Motivação

[![CI Development][action-ci-dev-src]][action-ci-dev-href]
Os sistemas do Ladesa, assim como muitos aplicativos informáticos modernos, trabalham com a interação entre humanos e máquinas.

## Configuração Local
Diante disso, surge a demanda de identificar e representar as pessoas em ambientes virtuais para, dentre outras coisas, reconhecer as autorias de ações e delimitar quais operações cada perfil possa realizar em diferentes contextos.

### Obter o código fonte do projeto
Portanto, é necessário uma solução robusta e confiável que forneça os meios necessários para a correta identificação dos indivíduos, com a qual todo o ecossistema informático possa contar.

## Propósito

Diante da necessidade de que os softwares que conectem às plataformas do Ladesa têm de iniciar e confiar nas sessões dos usuários,
este projeto surge para cuidar do credenciamento e checagem de identidade a essas aplicações tecnológicas.

### Objetivo Geral

### Objetivos Específicos

## Desenvolvimento Local

É muito bom saber que você quer realizar o desenvolvimento do Autenticação do Ladesa. Após checar os requisitos necessários, você será guiado para obter o código-fonte deste sistema e saber, dentre outras coisas, como iniciar o desenvolvimento, subir um servidor local e construir a imagem da aplicação.

### Requisitos

Para o desenvolvimento local, é necessário preparar o seu ambiente de trabalho para mexer com este projeto. A seguir, estão listadas as tecnologias requisitadas para ter no computador afim de prosseguir aos próximos tópicos.

> [!TIP]
> Preparamos dicas e tutoriais para você acerca de cada requisito,
> **basta clicar nos links** para saber mais.
- [Acesso à Linha de Comando](https://docs.ladesa.com.br/developers/tutorials/os/command-line/);
- [Git](https://docs.ladesa.com.br/developers/tutorials/source-code/git/);
- [Docker](https://docs.ladesa.com.br/developers/tutorials/platforms/containers/docker/);
- GNU Make (documentação inexistente).

### Obter o código-fonte do projeto

O primeiro passo para trabalhar com o serviço de Autenticação do Ladesa é obter uma cópia dos arquivos deste repositório.

Por meio dos comandos a seguir, você terá em sua máquina de desenvolvimento o acesso ao repositório deste projeto:

```sh
git clone https://github.com/ladesa-ro/auth.git
Expand All @@ -21,38 +61,24 @@ cd auth

### Serviços do [.devops/development/docker-compose.yml](./.devops/development/docker-compose.yml)

| Host | Endereço | Descrição | Plataforma Base |
| ------------------- | ------------------- | ----------------------- | --------------------------------- |
| `ladesa-ro-auth` | `127.128.5.10:8080` | Aplicação KeyCloak | `quay.io/keycloak/keycloak:23.0` |
| `ladesa-ro-auth-db` | `127.128.5.11:5432` | Banco de dados postgres | `docker.io/bitnami/postgresql:15` |
| Host | Endereço | Porta Alvo | Descrição | Plataforma Base |
| ------------------- | ------------------------------------------------------------------------------ | ---------- | ----------------------- | --------------------------------- |
| `ladesa-ro-auth` | `localhost:23032` (mapeamento direto); `sso.ladesa.localhost` (proxy reverso); | `8080` | Aplicação KeyCloak | `quay.io/keycloak/keycloak:25.0` |
| `ladesa-ro-auth-db` | `127.128.5.11:5432` | `5432` | Banco de dados postgres | `docker.io/bitnami/postgresql:15` |

### Scripts Make

O projeto conta com um [arquivo make](./Makefile) que comporta scrips destinados ao desenvolvimento da aplicação.

```Makefile
dev-setup:
# Configura o ambiente de deselvolvimento, como a criação da rede sisgea-net e os arquivos .env
dev-up:
setup:
# Configura o ambiente de deselvolvimento, como a criação da rede ladesa-net e os arquivos .env
up:
# Inicia os containers docker
dev-shell:
shell:
# Inicia os containers docker e abre o bash na aplicação keycloak
dev-down:
down:
# Para todos os containers
dev-logs:
logs:
# Mostra os registros dos containers
```

## Aplicação KeyCloak

<!-- Badges -->

<!-- Badges / Actions / Production -->

[action-ci-prod-src]: https://img.shields.io/github/actions/workflow/status/ladesa-ro/auth/ci.yml?style=flat&logo=github&logoColor=white&label=CI@production&branch=production&labelColor=18181B
[action-ci-prod-href]: https://github.com/ladesa-ro/auth/actions/workflows/ci.yml?query=branch%3Aproduction

<!-- Badges / Actions / Development -->

[action-ci-dev-src]: https://img.shields.io/github/actions/workflow/status/ladesa-ro/auth/ci.yml?style=flat&logo=github&logoColor=white&label=CI@development&branch=main&labelColor=18181B
[action-ci-dev-href]: https://github.com/ladesa-ro/auth/actions/workflows/ci.yml?query=branch%3Amain
27 changes: 27 additions & 0 deletions themes/web/.eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:react-hooks/recommended",
"plugin:storybook/recommended"
],
ignorePatterns: ["dist", ".eslintrc.cjs"],
parser: "@typescript-eslint/parser",
plugins: ["react-refresh"],
rules: {
"react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
"react-hooks/exhaustive-deps": "off",
"@typescript-eslint/no-redeclare": "off",
"no-labels": "off"
},
overrides: [
{
files: ["**/*.stories.*"],
rules: {
"import/no-anonymous-default-export": "off"
}
}
]
};
Loading

0 comments on commit 9ab32ee

Please sign in to comment.