Aplicație de acces pentru serviciul de ANAF eFactura
Find a file
2025-10-01 02:45:08 +03:00
.clj-kondo Început cu OPA pentru autorizare 2025-06-25 01:42:26 +03:00
bin Am adăugat "stocare" de utilizatori 2025-09-25 11:42:25 +03:00
conf Oauth2 funcționează + server http cu configurație 2024-03-04 00:27:06 +02:00
dev Am scos middleware cu configurația 2025-09-25 00:20:48 +03:00
dev-resources Început de autentificare 2025-06-24 12:36:58 +03:00
docs Am scos middleware cu configurația 2025-09-25 00:20:48 +03:00
opa Am adăugat suport pentru politici OPA wasm 2025-07-14 12:59:56 +03:00
public #17 Am corectat codul js care instantia mai multe obiecte datePicker. 2025-09-18 13:12:57 +03:00
resources Merge branch 'main' into auth 2025-09-23 18:47:12 +03:00
src/efactura_mea Avem autentificare 2025-10-01 02:45:08 +03:00
templates Fix docker build 2024-03-15 16:05:12 +02:00
test/src/efactura_mea Refresh token (#7) 2025-05-23 22:12:09 +03:00
.gitignore Refresh token (#7) 2025-05-23 22:12:09 +03:00
bb.edn Actualizări dependințe și regenerat cod autentificare 2024-06-09 01:55:25 +03:00
build.clj Build-info cu iso date-time 2025-07-31 18:26:51 +03:00
deps.edn Avem autentificare 2025-10-01 02:45:08 +03:00
docker-bake.hcl Refresh token (#7) 2025-05-23 22:12:09 +03:00
Dockerfile Folosim jdk-25 în docker cu CompactObjectHeaders 2025-09-30 23:36:15 +03:00
README.md Am adăugat suport pentru politici OPA wasm 2025-07-14 12:59:56 +03:00
tests.edn Suport pentru teste, teste RCT + actualizare dependințe 2024-03-15 13:14:23 +02:00

eFactura mea

Aplicație pentru interacțiune cu API ANAF pentru eFactură. Obiectivul inițial este de a descărca facturile urcate la ANAF. Ulterior vom analiza și urcarea.

Aplicația folosește limbajul Clojure și salvează datele intr-o bază de date sqlite și pe disc.

Are nevoie de:

Comenzi utile


# Construiește aplicația
clj -T:build uber

# Pornește aplicația local
# TODO:
 ./bin/efacturier.sh --help
 ./bin/efacturier.sh server

# Pornește un REPL pentru dezvoltare
clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version,"1.0.0"},cider/cider-nrepl {:mvn/version,"0.52.0"}}}' -M:dev -m nrepl.cmdline --middleware "[cider.nrepl/cider-middleware]"

# Rulează testele
clj -M:test

# Rulează testele pentru fiecare modificările
./bin/test.sh --watch

clj -M:test --watch


# Vezi actualizări pentru bibliotecile de funcții
clj -M:outdated

# Aplicăm migrații la baza de date
./bin/migratus.sh --config-file resources/migratus.edn create migration-name


# Aplicăm toate migrațiile
./bin/migratus.sh --config-file resources/migratus.edn migrate
# Aplicăm până la migratia <id>
./bin/migratus.sh --config-file resources/migratus.edn up <id>
# Dez-aplicăm migratia 
./bin/migratus.sh --config-file resources/migratus.edn down <id>

Folosire cu Docker


# Construim imaginea docker
docker build -t efactura-mea . --load

# Avem nevoie de software pentru multi-platformă https://docs.docker.com/build/building/multi-platform/
# https://cloudolife.com/2022/03/05/Infrastructure-as-Code-IaC/Container/Docker/Docker-buildx-support-multiple-architectures-images/
apt install binfmt-support qemu-system qemu-system qemu-system-arm qemu-system-x86
# Construim imaginea folosind bake - imagini multi platforma
docker buildx bake --push --progress plain 

# Pornim aplicația
docker run --rm \
-e DEBUG=y  \
-e DATA__DIR="data" \
-p 8080:8080 -p 8123:8123  -v $PWD/data:/app/data \
efactura-mea

Autorizare cu Open Policy Agent


# Testăm politicile cu opa CLI
echo '{"method": "GET", "path": ["/"]}' | opa eval -f pretty -d opa/policies/efactura.rego -I 'data.efactura.allow'

# Fișierul json nu trebuie să conțină atributul "input" pentru CLI (da pentru curl)
opa eval -f pretty -d opa/policies/efactura.rego -i my-input.json 'data.efactura.allow'

# Testăm politica folosind curl - aici avem nevoie de atributul "input"
curl -v -H 'Content-type: application/json' http://localhost:8181/v1/data/efactura/allow -d '{"input": {"method": "GET", "path":["/"]}}'


# Pornim serverul OPA pentru aplicație
opa run -s --watch opa/policies/

# Compilăm politica de acces la WASM pentru folosire în aplicație
opa build -t wasm -e efactura/authz opa/policies/efactura.rego --output data/efactura-authz.tar.gz
mkdir -p data/efactura-authz
tar xzf data/efactura-authz.tar.gz -C data/efactura-authz

# Testăm politicile de autorizare
opa test -t wasm opa/policies/efactura_test.rego opa/policies/efactura.rego --var-values --explain fails