From 6938df70e423cb350f2dfc27e262fa2156880bb3 Mon Sep 17 00:00:00 2001 From: Josepablo Cruz Date: Tue, 7 Apr 2026 08:19:52 -0600 Subject: [PATCH] chore(markdown): Adding main README and docs/software_requirements_specification.md --- README.md | 131 + db/Models/assets/ETA_RBAC_model.svg | 3541 ++++++++++--------- db/Models/assets/RBAC_model.svg | 2752 -------------- db/Models/eta_rbac.mwb | Bin 61925 -> 62571 bytes db/Models/init/rbac_root_init.sql | 18 - db/Models/rbac.mwb | Bin 21714 -> 0 bytes db/Models/schemas/eta_rbac.sql | 9 +- db/Models/schemas/rbac.sql | 289 -- db/service/initdb/00-schema.sql | 9 +- docs/software_requirements_specification.md | 117 + 10 files changed, 2089 insertions(+), 4777 deletions(-) create mode 100644 README.md delete mode 100644 db/Models/assets/RBAC_model.svg delete mode 100644 db/Models/init/rbac_root_init.sql delete mode 100644 db/Models/rbac.mwb delete mode 100644 db/Models/schemas/rbac.sql create mode 100644 docs/software_requirements_specification.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..5d40379 --- /dev/null +++ b/README.md @@ -0,0 +1,131 @@ +# GoETAAPI + +This repository contains the backend API and database layer for **ETA Viaporte** — a logistics marketplace platform. + +> The project is currently at the **database design and infrastructure** stage. The sections below describe what is available and how to work with it. + +--- + +## Repository Structure + +``` +GoETAAPI/ +├── app/ # Go API source (in progress) +└── db/ + ├── Models/ # Schema design files (MySQL Workbench + SQL scripts) + ├── container/ # Dockerfile for the MariaDB test container + └── service/ # Docker Compose + Makefile for local deployment +``` + +--- + +## DB + +### Schema Design + +The database schema is defined under `db/Models/` and targets the schema `u947463964_etaviaporte`. + +| File | Description | +|---|---| +| `db/Models/eta_rbac.mwb` | MySQL Workbench model — open this to visualize the full schema diagram | +| `db/Models/schemas/eta_rbac.sql` | Forward-engineered SQL schema (generated from the `.mwb` model) | +| `db/Models/init/eta_rbac_init.sql` | Seed / initialization data | +| `db/Models/eta_rbac_requirements.md` | Human-readable data requirements derived from the schema constraints | + +To inspect or modify the schema visually, open `db/Models/eta_rbac.mwb` with **MySQL Workbench**. + +The schema covers: +- **Users & Authentication** — `users`, `auth_identities`, `verification_tokens`, `sessions` +- **RBAC** — `applications`, `roles`, `permissions`, `role_permissions`, `user_roles` +- **Companies & Locations** — `companies`, `locations` +- **Loads & Shipments** — `loads`, `vehicles`, `shipment_proposals`, `shipment_agreements`, `load_shipments` + +--- + +### Docker Container + +The image is built from `db/container/Dockerfile`. It uses **Alpine + MariaDB** and automatically generates a root password on first run. SQL files placed in `/docker-entrypoint-initdb.d` inside the container are executed on startup. + +#### Build the image + +Run from `db/container/`: + +```sh +docker buildx build -t eta/eta-db . +``` + +#### Run the container (basic) + +```sh +docker run --name eta-db -d -p 3306:3306 eta/eta-db +docker logs -f eta-db # root password is printed here on first boot +``` + +#### Run the container with a named database and user + +```sh +docker run --name eta-db \ + -e MYSQL_DATABASE=u947463964_etaviaporte \ + -e MYSQL_USER=etaapi \ + -e MYSQL_PASSWORD="secret_password" \ + -d -p 3306:3306 eta/eta-db +``` + +#### Run with schema initialization scripts + +Mount a directory of `.sql` files into `/docker-entrypoint-initdb.d` and they will be executed in order on first start: + +```sh +docker run --name eta-db \ + -e MYSQL_DATABASE=u947463964_etaviaporte \ + -e MYSQL_USER=etaapi \ + -e MYSQL_PASSWORD="secret_password" \ + -v ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d \ + -d -p 3306:3306 eta/eta-db +``` + +> **Note:** Avoid using `"` (double quotes) in SQL scripts — use `'` (single quotes) instead. Inline comments at the end of SQL statements may also cause parsing errors. + +--- + +### Docker Compose (local testing) + +`db/service/compose.yml` deploys the `eta/eta-db` image with the schema and seed data pre-loaded. It mounts `db/service/initdb/` into the container's init directory. + +Before deploying with Compose, populate `db/service/initdb/` by running `make prepare` (see below), then start the service: + +```sh +cd db/service +docker compose up -d +``` + +The service exposes MariaDB on port `3306` with: + +| Variable | Value | +|---|---| +| `MYSQL_DATABASE` | `u947463964_etaviaporte` | +| `MYSQL_USER` | `etaapi` | +| `MYSQL_PASSWORD` | `secret_password` | + +> The `initdb/` volume uses the `:Z` SELinux label to avoid permission denied errors on SELinux-enabled systems. + +--- + +### Makefile — Prepare init scripts + +The `db/service/Makefile` copies the latest schema and seed files from `db/Models/` into `db/service/initdb/`, so they are picked up by Docker Compose on the next container start. + +```sh +cd db/service +make prepare +``` + +This runs: +1. Clears any existing `.sql` files from `db/service/initdb/`. +2. Copies `db/Models/schemas/eta_rbac.sql` → `initdb/00-schema.sql` +3. Copies `db/Models/init/eta_rbac_init.sql` → `initdb/01-initdb.sql` + +Always run `make prepare` after updating the schema model before bringing the Compose service up. + + + diff --git a/db/Models/assets/ETA_RBAC_model.svg b/db/Models/assets/ETA_RBAC_model.svg index 184b92f..138ca89 100644 --- a/db/Models/assets/ETA_RBAC_model.svg +++ b/db/Models/assets/ETA_RBAC_model.svg @@ -1,5 +1,5 @@ - + @@ -266,12 +266,12 @@ - - - - - - + + + + + + @@ -295,7 +295,7 @@ - + @@ -311,7 +311,7 @@ - + @@ -320,7 +320,7 @@ - + @@ -342,7 +342,7 @@ - + @@ -364,7 +364,7 @@ - + @@ -400,7 +400,7 @@ - + @@ -422,7 +422,7 @@ - + @@ -431,7 +431,7 @@ - + @@ -451,7 +451,7 @@ - + @@ -473,7 +473,7 @@ - + @@ -509,7 +509,7 @@ - + @@ -526,7 +526,7 @@ - + @@ -535,7 +535,7 @@ - + @@ -558,7 +558,7 @@ - + @@ -580,7 +580,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -631,7 +631,7 @@ - + @@ -640,7 +640,7 @@ - + @@ -660,7 +660,7 @@ - + @@ -681,7 +681,7 @@ - + @@ -704,7 +704,7 @@ - + @@ -727,7 +727,7 @@ - + @@ -749,7 +749,7 @@ - + @@ -816,7 +816,7 @@ - + @@ -825,7 +825,7 @@ - + @@ -834,7 +834,7 @@ - + @@ -855,7 +855,7 @@ - + @@ -875,7 +875,7 @@ - + @@ -894,7 +894,7 @@ - + @@ -916,7 +916,7 @@ - + @@ -1002,7 +1002,7 @@ - + @@ -1017,7 +1017,7 @@ - + @@ -1026,7 +1026,7 @@ - + @@ -1047,7 +1047,7 @@ - + @@ -1067,7 +1067,7 @@ - + @@ -1086,7 +1086,7 @@ - + @@ -1108,7 +1108,7 @@ - + @@ -1189,7 +1189,7 @@ - + @@ -1209,7 +1209,7 @@ - + @@ -1218,7 +1218,7 @@ - + @@ -1232,7 +1232,7 @@ - + @@ -1252,7 +1252,7 @@ - + @@ -1274,7 +1274,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1407,7 +1407,7 @@ - + @@ -1416,7 +1416,7 @@ - + @@ -1430,7 +1430,7 @@ - + @@ -1444,7 +1444,7 @@ - + @@ -1466,7 +1466,7 @@ - + @@ -1488,7 +1488,7 @@ - + @@ -1601,7 +1601,7 @@ - + @@ -1617,7 +1617,7 @@ - + @@ -1626,7 +1626,7 @@ - + @@ -1646,7 +1646,7 @@ - + @@ -1666,7 +1666,7 @@ - + @@ -1685,7 +1685,7 @@ - + @@ -1707,7 +1707,7 @@ - + @@ -1778,7 +1778,7 @@ - + @@ -1799,7 +1799,7 @@ - + @@ -1808,7 +1808,7 @@ - + @@ -1822,7 +1822,7 @@ - + @@ -1843,7 +1843,7 @@ - + @@ -1865,7 +1865,7 @@ - + @@ -1955,7 +1955,7 @@ - + @@ -1975,7 +1975,7 @@ - + @@ -1984,7 +1984,7 @@ - + @@ -2005,7 +2005,7 @@ - + @@ -2019,7 +2019,7 @@ - + @@ -2039,7 +2039,7 @@ - + @@ -2061,7 +2061,7 @@ - + @@ -2083,7 +2083,7 @@ - + @@ -2189,139 +2189,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2340,7 +2210,7 @@ - + @@ -2349,7 +2219,7 @@ - + @@ -2363,7 +2233,7 @@ - + @@ -2387,7 +2257,7 @@ - + @@ -2413,7 +2283,7 @@ - + @@ -2442,7 +2312,7 @@ - + @@ -2463,7 +2333,7 @@ - + @@ -2485,7 +2355,7 @@ - + @@ -2507,7 +2377,7 @@ - + @@ -2599,7 +2469,7 @@ - + @@ -2622,7 +2492,7 @@ - + @@ -2631,7 +2501,7 @@ - + @@ -2654,7 +2524,7 @@ - + @@ -2680,7 +2550,7 @@ - + @@ -2700,7 +2570,7 @@ - + @@ -2722,7 +2592,7 @@ - + @@ -2744,7 +2614,7 @@ - + @@ -2766,7 +2636,7 @@ - + @@ -2867,30 +2737,51 @@ - - - + + + - - - - - - - - + + + + + + + + - - + + - - - - - - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + @@ -2904,7 +2795,7 @@ - + @@ -2938,7 +2829,7 @@ - + @@ -2960,7 +2851,7 @@ - + @@ -2982,7 +2873,7 @@ - + @@ -3004,7 +2895,7 @@ - + @@ -3026,81 +2917,112 @@ - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -3111,7 +3033,7 @@ - + @@ -3120,7 +3042,7 @@ - + @@ -3141,7 +3063,7 @@ - + @@ -3155,7 +3077,7 @@ - + @@ -3175,7 +3097,7 @@ - + @@ -3194,7 +3116,7 @@ - + @@ -3218,7 +3140,7 @@ - + @@ -3235,7 +3157,7 @@ - + @@ -3257,7 +3179,7 @@ - + @@ -3279,7 +3201,7 @@ - + @@ -3362,6 +3284,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3387,7 +3439,7 @@ - + @@ -3409,7 +3461,7 @@ - + @@ -3418,7 +3470,7 @@ - + @@ -3432,7 +3484,7 @@ - + @@ -3449,7 +3501,7 @@ - + @@ -3466,7 +3518,7 @@ - + @@ -3479,7 +3531,7 @@ - + @@ -3501,7 +3553,7 @@ - + @@ -3662,7 +3714,7 @@ - + @@ -3680,7 +3732,7 @@ - + @@ -3689,7 +3741,7 @@ - + @@ -3703,7 +3755,7 @@ - + @@ -3722,7 +3774,7 @@ - + @@ -3744,7 +3796,7 @@ - + @@ -3766,7 +3818,7 @@ - + @@ -3791,7 +3843,7 @@ - + @@ -3884,7 +3936,7 @@ - + @@ -3906,7 +3958,7 @@ - + @@ -3915,7 +3967,7 @@ - + @@ -3929,7 +3981,7 @@ - + @@ -3946,7 +3998,7 @@ - + @@ -3975,7 +4027,7 @@ - + @@ -3997,7 +4049,7 @@ - + @@ -4081,7 +4133,7 @@ - + @@ -4104,7 +4156,7 @@ - + @@ -4113,7 +4165,7 @@ - + @@ -4127,7 +4179,7 @@ - + @@ -4145,7 +4197,7 @@ - + @@ -4163,7 +4215,7 @@ - + @@ -4185,7 +4237,7 @@ - + @@ -4362,7 +4414,7 @@ - + @@ -4375,7 +4427,7 @@ - + @@ -4384,7 +4436,7 @@ - + @@ -4404,7 +4456,7 @@ - + @@ -4423,7 +4475,7 @@ - + @@ -4440,7 +4492,7 @@ - + @@ -4466,7 +4518,7 @@ - + @@ -4488,7 +4540,7 @@ - + @@ -4510,7 +4562,7 @@ - + @@ -4529,7 +4581,7 @@ - + @@ -4552,7 +4604,7 @@ - + @@ -4606,7 +4658,7 @@ - + @@ -4619,7 +4671,7 @@ - + @@ -4628,7 +4680,7 @@ - + @@ -4645,7 +4697,7 @@ - + @@ -4662,7 +4714,7 @@ - + @@ -4683,7 +4735,7 @@ - + @@ -4703,7 +4755,7 @@ - + @@ -4726,7 +4778,7 @@ - + @@ -4748,7 +4800,7 @@ - + @@ -4777,7 +4829,7 @@ - + @@ -4806,7 +4858,7 @@ - + @@ -4826,7 +4878,7 @@ - + @@ -4846,7 +4898,7 @@ - + @@ -4866,7 +4918,7 @@ - + @@ -4885,7 +4937,7 @@ - + @@ -4907,7 +4959,7 @@ - + @@ -4981,7 +5033,7 @@ - + @@ -5000,7 +5052,7 @@ - + @@ -5009,7 +5061,7 @@ - + @@ -5026,7 +5078,7 @@ - + @@ -5048,7 +5100,7 @@ - + @@ -5070,7 +5122,7 @@ - + @@ -5106,7 +5158,7 @@ - + @@ -5131,7 +5183,7 @@ - + @@ -5140,7 +5192,7 @@ - + @@ -5157,7 +5209,7 @@ - + @@ -5185,7 +5237,7 @@ - + @@ -5207,7 +5259,7 @@ - + @@ -5243,7 +5295,7 @@ - + @@ -5271,7 +5323,7 @@ - + @@ -5280,7 +5332,7 @@ - + @@ -5298,7 +5350,7 @@ - + @@ -5314,7 +5366,7 @@ - + @@ -5336,7 +5388,7 @@ - + @@ -5372,7 +5424,7 @@ - + @@ -5389,7 +5441,7 @@ - + @@ -5398,7 +5450,7 @@ - + @@ -5415,7 +5467,7 @@ - + @@ -5429,7 +5481,7 @@ - + @@ -5451,7 +5503,7 @@ - + @@ -5543,7 +5595,7 @@ - + @@ -5561,7 +5613,7 @@ - + @@ -5570,7 +5622,7 @@ - + @@ -5584,7 +5636,7 @@ - + @@ -5602,7 +5654,7 @@ - + @@ -5624,7 +5676,7 @@ - + @@ -5719,7 +5771,7 @@ - + @@ -5736,7 +5788,7 @@ - + @@ -5745,7 +5797,7 @@ - + @@ -5759,7 +5811,7 @@ - + @@ -5776,7 +5828,7 @@ - + @@ -5798,7 +5850,7 @@ - + @@ -5882,7 +5934,7 @@ - + @@ -5900,7 +5952,7 @@ - + @@ -5909,7 +5961,7 @@ - + @@ -5926,7 +5978,7 @@ - + @@ -5946,7 +5998,7 @@ - + @@ -5968,7 +6020,7 @@ - + @@ -6032,7 +6084,7 @@ - + @@ -6059,7 +6111,7 @@ - + @@ -6068,7 +6120,7 @@ - + @@ -6085,7 +6137,7 @@ - + @@ -6100,7 +6152,7 @@ - + @@ -6125,7 +6177,7 @@ - + @@ -6147,7 +6199,7 @@ - + @@ -6313,7 +6365,7 @@ - + @@ -6331,7 +6383,7 @@ - + @@ -6340,7 +6392,7 @@ - + @@ -6357,7 +6409,7 @@ - + @@ -6376,7 +6428,7 @@ - + @@ -6389,7 +6441,7 @@ - + @@ -6411,7 +6463,7 @@ - + @@ -6501,7 +6553,7 @@ - + @@ -6522,7 +6574,7 @@ - + @@ -6531,7 +6583,7 @@ - + @@ -6548,7 +6600,7 @@ - + @@ -6575,7 +6627,7 @@ - + @@ -6595,7 +6647,7 @@ - + @@ -6614,7 +6666,7 @@ - + @@ -6634,7 +6686,7 @@ - + @@ -6656,7 +6708,7 @@ - + @@ -6773,7 +6825,7 @@ - + @@ -6785,7 +6837,7 @@ - + @@ -6794,7 +6846,7 @@ - + @@ -6811,7 +6863,7 @@ - + @@ -6827,7 +6879,7 @@ - + @@ -6841,7 +6893,7 @@ - + @@ -6860,7 +6912,7 @@ - + @@ -6878,7 +6930,7 @@ - + @@ -6906,7 +6958,7 @@ - + @@ -6936,7 +6988,7 @@ - + @@ -6966,7 +7018,7 @@ - + @@ -6988,7 +7040,7 @@ - + @@ -7129,7 +7181,7 @@ - + @@ -7150,7 +7202,7 @@ - + @@ -7159,7 +7211,7 @@ - + @@ -7176,7 +7228,7 @@ - + @@ -7193,7 +7245,7 @@ - + @@ -7220,7 +7272,7 @@ - + @@ -7240,7 +7292,7 @@ - + @@ -7259,7 +7311,7 @@ - + @@ -7279,7 +7331,7 @@ - + @@ -7301,7 +7353,7 @@ - + @@ -7444,7 +7496,7 @@ - + @@ -7453,7 +7505,7 @@ - + @@ -7462,7 +7514,7 @@ - + @@ -7479,7 +7531,7 @@ - + @@ -7496,7 +7548,7 @@ - + @@ -7512,7 +7564,7 @@ - + @@ -7533,7 +7585,7 @@ - + @@ -7552,7 +7604,7 @@ - + @@ -7575,7 +7627,7 @@ - + @@ -7597,7 +7649,7 @@ - + @@ -7622,7 +7674,7 @@ - + @@ -7648,7 +7700,7 @@ - + @@ -7672,7 +7724,7 @@ - + @@ -7698,7 +7750,7 @@ - + @@ -7711,7 +7763,7 @@ - + @@ -7724,7 +7776,7 @@ - + @@ -7745,7 +7797,7 @@ - + @@ -7767,7 +7819,7 @@ - + @@ -7789,7 +7841,7 @@ - + @@ -7808,7 +7860,7 @@ - + @@ -7950,7 +8002,7 @@ - + @@ -7968,7 +8020,7 @@ - + @@ -7977,7 +8029,7 @@ - + @@ -7994,7 +8046,7 @@ - + @@ -8011,7 +8063,7 @@ - + @@ -8031,7 +8083,7 @@ - + @@ -8054,7 +8106,7 @@ - + @@ -8076,7 +8128,7 @@ - + @@ -8101,7 +8153,7 @@ - + @@ -8114,7 +8166,7 @@ - + @@ -8127,7 +8179,7 @@ - + @@ -8148,7 +8200,7 @@ - + @@ -8164,7 +8216,7 @@ - + @@ -8185,7 +8237,7 @@ - + @@ -8207,7 +8259,7 @@ - + @@ -8386,7 +8438,7 @@ - + @@ -8408,7 +8460,7 @@ - + @@ -8417,7 +8469,7 @@ - + @@ -8431,7 +8483,7 @@ - + @@ -8452,7 +8504,7 @@ - + @@ -8474,7 +8526,7 @@ - + @@ -8569,7 +8621,7 @@ - + @@ -8595,7 +8647,7 @@ - + @@ -8604,7 +8656,7 @@ - + @@ -8623,7 +8675,7 @@ - + @@ -8644,7 +8696,7 @@ - + @@ -8666,7 +8718,7 @@ - + @@ -8790,9 +8842,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -8814,7 +9147,7 @@ - + @@ -8823,7 +9156,7 @@ - + @@ -8844,7 +9177,7 @@ - + @@ -8867,7 +9200,7 @@ - + @@ -8899,7 +9232,7 @@ - + @@ -8919,7 +9252,7 @@ - + @@ -8938,7 +9271,7 @@ - + @@ -8961,7 +9294,7 @@ - + @@ -8984,7 +9317,7 @@ - + @@ -9002,7 +9335,7 @@ - + @@ -9020,7 +9353,7 @@ - + @@ -9042,7 +9375,7 @@ - + @@ -9074,7 +9407,7 @@ - + @@ -9096,7 +9429,7 @@ - + @@ -9221,7 +9554,7 @@ - + @@ -9240,7 +9573,7 @@ - + @@ -9249,7 +9582,7 @@ - + @@ -9266,7 +9599,7 @@ - + @@ -9289,7 +9622,7 @@ - + @@ -9324,7 +9657,7 @@ - + @@ -9343,7 +9676,7 @@ - + @@ -9363,7 +9696,7 @@ - + @@ -9383,7 +9716,7 @@ - + @@ -9404,7 +9737,7 @@ - + @@ -9426,7 +9759,7 @@ - + @@ -9521,290 +9854,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -9829,7 +9881,7 @@ - + @@ -9838,7 +9890,7 @@ - + @@ -9855,7 +9907,7 @@ - + @@ -9869,7 +9921,7 @@ - + @@ -9909,7 +9961,7 @@ - + @@ -9928,7 +9980,7 @@ - + @@ -9950,7 +10002,7 @@ - + @@ -9972,7 +10024,7 @@ - + @@ -9990,7 +10042,7 @@ - + @@ -10018,7 +10070,7 @@ - + @@ -10044,7 +10096,7 @@ - + @@ -10064,7 +10116,7 @@ - + @@ -10232,11 +10284,11 @@ - + - - + + @@ -10247,16 +10299,16 @@ - - - - - - + + + + + + - - + + @@ -10272,11 +10324,11 @@ - + - - + + @@ -10352,11 +10404,11 @@ - + - - + + @@ -10377,11 +10429,11 @@ - + - - + + @@ -10392,21 +10444,21 @@ - + - - - + + + - - - + + + - - + + @@ -10442,16 +10494,16 @@ - + - - - + + + - - + + @@ -10462,11 +10514,11 @@ - + - - + + @@ -10487,16 +10539,16 @@ - + - - - + + + - - + + @@ -10522,14 +10574,19 @@ - + + + + + + - - + + - + @@ -10545,7 +10602,7 @@ - + @@ -10554,7 +10611,7 @@ - + @@ -10576,7 +10633,7 @@ - + @@ -10598,7 +10655,7 @@ - + @@ -10634,7 +10691,7 @@ - + @@ -10656,7 +10713,7 @@ - + @@ -10665,7 +10722,7 @@ - + @@ -10685,7 +10742,7 @@ - + @@ -10707,7 +10764,7 @@ - + @@ -10743,7 +10800,7 @@ - + @@ -10760,7 +10817,7 @@ - + @@ -10769,7 +10826,7 @@ - + @@ -10792,7 +10849,7 @@ - + @@ -10814,7 +10871,7 @@ - + @@ -10850,7 +10907,7 @@ - + @@ -10865,7 +10922,7 @@ - + @@ -10874,7 +10931,7 @@ - + @@ -10894,7 +10951,7 @@ - + @@ -10915,7 +10972,7 @@ - + @@ -10938,7 +10995,7 @@ - + @@ -10961,7 +11018,7 @@ - + @@ -10983,7 +11040,7 @@ - + @@ -11019,7 +11076,7 @@ - + @@ -11028,7 +11085,7 @@ - + @@ -11037,7 +11094,7 @@ - + @@ -11058,7 +11115,7 @@ - + @@ -11078,7 +11135,7 @@ - + @@ -11097,7 +11154,7 @@ - + @@ -11119,7 +11176,7 @@ - + @@ -11205,7 +11262,7 @@ - + @@ -11220,7 +11277,7 @@ - + @@ -11229,7 +11286,7 @@ - + @@ -11250,7 +11307,7 @@ - + @@ -11270,7 +11327,7 @@ - + @@ -11289,7 +11346,7 @@ - + @@ -11311,7 +11368,7 @@ - + @@ -11392,7 +11449,7 @@ - + @@ -11412,7 +11469,7 @@ - + @@ -11421,7 +11478,7 @@ - + @@ -11435,7 +11492,7 @@ - + @@ -11455,7 +11512,7 @@ - + @@ -11477,7 +11534,7 @@ - + @@ -11596,7 +11653,7 @@ - + @@ -11610,7 +11667,7 @@ - + @@ -11619,7 +11676,7 @@ - + @@ -11633,7 +11690,7 @@ - + @@ -11647,7 +11704,7 @@ - + @@ -11669,7 +11726,7 @@ - + @@ -11691,7 +11748,7 @@ - + @@ -11804,7 +11861,7 @@ - + @@ -11820,7 +11877,7 @@ - + @@ -11829,7 +11886,7 @@ - + @@ -11849,7 +11906,7 @@ - + @@ -11869,7 +11926,7 @@ - + @@ -11888,7 +11945,7 @@ - + @@ -11910,7 +11967,7 @@ - + @@ -11981,7 +12038,7 @@ - + @@ -12002,7 +12059,7 @@ - + @@ -12011,7 +12068,7 @@ - + @@ -12025,7 +12082,7 @@ - + @@ -12046,7 +12103,7 @@ - + @@ -12068,7 +12125,7 @@ - + @@ -12158,7 +12215,7 @@ - + @@ -12178,7 +12235,7 @@ - + @@ -12187,7 +12244,7 @@ - + @@ -12208,7 +12265,7 @@ - + @@ -12222,7 +12279,7 @@ - + @@ -12242,7 +12299,7 @@ - + @@ -12264,7 +12321,7 @@ - + @@ -12286,7 +12343,7 @@ - + @@ -12373,139 +12430,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -12524,7 +12451,7 @@ - + @@ -12533,7 +12460,7 @@ - + @@ -12547,7 +12474,7 @@ - + @@ -12571,7 +12498,7 @@ - + @@ -12597,7 +12524,7 @@ - + @@ -12626,7 +12553,7 @@ - + @@ -12647,7 +12574,7 @@ - + @@ -12669,7 +12596,7 @@ - + @@ -12691,7 +12618,7 @@ - + @@ -12783,7 +12710,7 @@ - + @@ -12806,7 +12733,7 @@ - + @@ -12815,7 +12742,7 @@ - + @@ -12838,7 +12765,7 @@ - + @@ -12864,7 +12791,7 @@ - + @@ -12884,7 +12811,7 @@ - + @@ -12906,7 +12833,7 @@ - + @@ -12928,7 +12855,7 @@ - + @@ -12950,7 +12877,7 @@ - + @@ -13051,30 +12978,51 @@ - - - + + + - - - - - - - - + + + + + + + + - - + + - - - - - - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + @@ -13088,7 +13036,7 @@ - + @@ -13122,7 +13070,7 @@ - + @@ -13144,7 +13092,7 @@ - + @@ -13166,7 +13114,7 @@ - + @@ -13188,7 +13136,7 @@ - + @@ -13210,81 +13158,112 @@ - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -13295,7 +13274,7 @@ - + @@ -13304,7 +13283,7 @@ - + @@ -13325,7 +13304,7 @@ - + @@ -13339,7 +13318,7 @@ - + @@ -13359,7 +13338,7 @@ - + @@ -13378,7 +13357,7 @@ - + @@ -13402,7 +13381,7 @@ - + @@ -13419,7 +13398,7 @@ - + @@ -13441,7 +13420,7 @@ - + @@ -13463,7 +13442,7 @@ - + @@ -13546,9 +13525,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -13570,7 +13679,7 @@ - + @@ -13579,7 +13688,7 @@ - + @@ -13593,7 +13702,7 @@ - + @@ -13610,7 +13719,7 @@ - + @@ -13627,7 +13736,7 @@ - + @@ -13640,7 +13749,7 @@ - + @@ -13662,7 +13771,7 @@ - + @@ -13801,7 +13910,7 @@ - + @@ -13819,7 +13928,7 @@ - + @@ -13828,7 +13937,7 @@ - + @@ -13842,7 +13951,7 @@ - + @@ -13861,7 +13970,7 @@ - + @@ -13883,7 +13992,7 @@ - + @@ -13905,7 +14014,7 @@ - + @@ -13930,7 +14039,7 @@ - + @@ -14023,7 +14132,7 @@ - + @@ -14045,7 +14154,7 @@ - + @@ -14054,7 +14163,7 @@ - + @@ -14068,7 +14177,7 @@ - + @@ -14085,7 +14194,7 @@ - + @@ -14114,7 +14223,7 @@ - + @@ -14136,7 +14245,7 @@ - + @@ -14197,7 +14306,7 @@ - + @@ -14220,7 +14329,7 @@ - + @@ -14229,7 +14338,7 @@ - + @@ -14243,7 +14352,7 @@ - + @@ -14261,7 +14370,7 @@ - + @@ -14279,7 +14388,7 @@ - + @@ -14301,7 +14410,7 @@ - + @@ -14456,7 +14565,7 @@ - + @@ -14469,7 +14578,7 @@ - + @@ -14478,7 +14587,7 @@ - + @@ -14498,7 +14607,7 @@ - + @@ -14517,7 +14626,7 @@ - + @@ -14534,7 +14643,7 @@ - + @@ -14560,7 +14669,7 @@ - + @@ -14582,7 +14691,7 @@ - + @@ -14604,7 +14713,7 @@ - + @@ -14623,7 +14732,7 @@ - + @@ -14646,7 +14755,7 @@ - + @@ -14700,7 +14809,7 @@ - + @@ -14713,7 +14822,7 @@ - + @@ -14722,7 +14831,7 @@ - + @@ -14739,7 +14848,7 @@ - + @@ -14756,7 +14865,7 @@ - + @@ -14777,7 +14886,7 @@ - + @@ -14797,7 +14906,7 @@ - + @@ -14820,7 +14929,7 @@ - + @@ -14842,7 +14951,7 @@ - + @@ -14871,7 +14980,7 @@ - + @@ -14900,7 +15009,7 @@ - + @@ -14920,7 +15029,7 @@ - + @@ -14940,7 +15049,7 @@ - + @@ -14960,7 +15069,7 @@ - + @@ -14979,7 +15088,7 @@ - + @@ -15001,7 +15110,7 @@ - + @@ -15075,7 +15184,7 @@ - + @@ -15094,7 +15203,7 @@ - + @@ -15103,7 +15212,7 @@ - + @@ -15120,7 +15229,7 @@ - + @@ -15142,7 +15251,7 @@ - + @@ -15164,7 +15273,7 @@ - + @@ -15200,7 +15309,7 @@ - + @@ -15225,7 +15334,7 @@ - + @@ -15234,7 +15343,7 @@ - + @@ -15251,7 +15360,7 @@ - + @@ -15279,7 +15388,7 @@ - + @@ -15301,7 +15410,7 @@ - + @@ -15337,7 +15446,7 @@ - + @@ -15365,7 +15474,7 @@ - + @@ -15374,7 +15483,7 @@ - + @@ -15392,7 +15501,7 @@ - + @@ -15408,7 +15517,7 @@ - + @@ -15430,7 +15539,7 @@ - + @@ -15466,7 +15575,7 @@ - + @@ -15483,7 +15592,7 @@ - + @@ -15492,7 +15601,7 @@ - + @@ -15509,7 +15618,7 @@ - + @@ -15523,7 +15632,7 @@ - + @@ -15545,7 +15654,7 @@ - + @@ -15637,7 +15746,7 @@ - + @@ -15655,7 +15764,7 @@ - + @@ -15664,7 +15773,7 @@ - + @@ -15678,7 +15787,7 @@ - + @@ -15696,7 +15805,7 @@ - + @@ -15718,7 +15827,7 @@ - + @@ -15813,7 +15922,7 @@ - + @@ -15830,7 +15939,7 @@ - + @@ -15839,7 +15948,7 @@ - + @@ -15853,7 +15962,7 @@ - + @@ -15870,7 +15979,7 @@ - + @@ -15892,7 +16001,7 @@ - + @@ -15976,7 +16085,7 @@ - + @@ -15994,7 +16103,7 @@ - + @@ -16003,7 +16112,7 @@ - + @@ -16020,7 +16129,7 @@ - + @@ -16040,7 +16149,7 @@ - + @@ -16062,7 +16171,7 @@ - + @@ -16126,7 +16235,7 @@ - + @@ -16153,7 +16262,7 @@ - + @@ -16162,7 +16271,7 @@ - + @@ -16179,7 +16288,7 @@ - + @@ -16194,7 +16303,7 @@ - + @@ -16219,7 +16328,7 @@ - + @@ -16241,7 +16350,7 @@ - + @@ -16377,7 +16486,7 @@ - + @@ -16395,7 +16504,7 @@ - + @@ -16404,7 +16513,7 @@ - + @@ -16421,7 +16530,7 @@ - + @@ -16440,7 +16549,7 @@ - + @@ -16453,7 +16562,7 @@ - + @@ -16475,7 +16584,7 @@ - + @@ -16565,7 +16674,7 @@ - + @@ -16586,7 +16695,7 @@ - + @@ -16595,7 +16704,7 @@ - + @@ -16612,7 +16721,7 @@ - + @@ -16639,7 +16748,7 @@ - + @@ -16659,7 +16768,7 @@ - + @@ -16678,7 +16787,7 @@ - + @@ -16698,7 +16807,7 @@ - + @@ -16720,7 +16829,7 @@ - + @@ -16807,7 +16916,7 @@ - + @@ -16819,7 +16928,7 @@ - + @@ -16828,7 +16937,7 @@ - + @@ -16845,7 +16954,7 @@ - + @@ -16861,7 +16970,7 @@ - + @@ -16875,7 +16984,7 @@ - + @@ -16894,7 +17003,7 @@ - + @@ -16912,7 +17021,7 @@ - + @@ -16940,7 +17049,7 @@ - + @@ -16970,7 +17079,7 @@ - + @@ -17000,7 +17109,7 @@ - + @@ -17022,7 +17131,7 @@ - + @@ -17163,7 +17272,7 @@ - + @@ -17184,7 +17293,7 @@ - + @@ -17193,7 +17302,7 @@ - + @@ -17210,7 +17319,7 @@ - + @@ -17227,7 +17336,7 @@ - + @@ -17254,7 +17363,7 @@ - + @@ -17274,7 +17383,7 @@ - + @@ -17293,7 +17402,7 @@ - + @@ -17313,7 +17422,7 @@ - + @@ -17335,7 +17444,7 @@ - + @@ -17452,7 +17561,7 @@ - + @@ -17461,7 +17570,7 @@ - + @@ -17470,7 +17579,7 @@ - + @@ -17487,7 +17596,7 @@ - + @@ -17504,7 +17613,7 @@ - + @@ -17520,7 +17629,7 @@ - + @@ -17541,7 +17650,7 @@ - + @@ -17560,7 +17669,7 @@ - + @@ -17583,7 +17692,7 @@ - + @@ -17605,7 +17714,7 @@ - + @@ -17630,7 +17739,7 @@ - + @@ -17656,7 +17765,7 @@ - + @@ -17680,7 +17789,7 @@ - + @@ -17706,7 +17815,7 @@ - + @@ -17719,7 +17828,7 @@ - + @@ -17732,7 +17841,7 @@ - + @@ -17753,7 +17862,7 @@ - + @@ -17775,7 +17884,7 @@ - + @@ -17797,7 +17906,7 @@ - + @@ -17816,7 +17925,7 @@ - + @@ -17958,7 +18067,7 @@ - + @@ -17976,7 +18085,7 @@ - + @@ -17985,7 +18094,7 @@ - + @@ -18002,7 +18111,7 @@ - + @@ -18019,7 +18128,7 @@ - + @@ -18039,7 +18148,7 @@ - + @@ -18062,7 +18171,7 @@ - + @@ -18084,7 +18193,7 @@ - + @@ -18109,7 +18218,7 @@ - + @@ -18122,7 +18231,7 @@ - + @@ -18135,7 +18244,7 @@ - + @@ -18156,7 +18265,7 @@ - + @@ -18172,7 +18281,7 @@ - + @@ -18193,7 +18302,7 @@ - + @@ -18215,7 +18324,7 @@ - + @@ -18367,7 +18476,7 @@ - + @@ -18389,7 +18498,7 @@ - + @@ -18398,7 +18507,7 @@ - + @@ -18412,7 +18521,7 @@ - + @@ -18433,7 +18542,7 @@ - + @@ -18455,7 +18564,7 @@ - + @@ -18550,7 +18659,7 @@ - + @@ -18576,7 +18685,7 @@ - + @@ -18585,7 +18694,7 @@ - + @@ -18604,7 +18713,7 @@ - + @@ -18625,7 +18734,7 @@ - + @@ -18647,7 +18756,7 @@ - + @@ -18749,9 +18858,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -18773,7 +19163,7 @@ - + @@ -18782,7 +19172,7 @@ - + @@ -18803,7 +19193,7 @@ - + @@ -18826,7 +19216,7 @@ - + @@ -18858,7 +19248,7 @@ - + @@ -18878,7 +19268,7 @@ - + @@ -18897,7 +19287,7 @@ - + @@ -18920,7 +19310,7 @@ - + @@ -18943,7 +19333,7 @@ - + @@ -18961,7 +19351,7 @@ - + @@ -18979,7 +19369,7 @@ - + @@ -19001,7 +19391,7 @@ - + @@ -19033,7 +19423,7 @@ - + @@ -19055,7 +19445,7 @@ - + @@ -19180,7 +19570,7 @@ - + @@ -19199,7 +19589,7 @@ - + @@ -19208,7 +19598,7 @@ - + @@ -19225,7 +19615,7 @@ - + @@ -19248,7 +19638,7 @@ - + @@ -19283,7 +19673,7 @@ - + @@ -19302,7 +19692,7 @@ - + @@ -19322,7 +19712,7 @@ - + @@ -19342,7 +19732,7 @@ - + @@ -19363,7 +19753,7 @@ - + @@ -19385,7 +19775,7 @@ - + @@ -19480,290 +19870,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -19788,7 +19897,7 @@ - + @@ -19797,7 +19906,7 @@ - + @@ -19814,7 +19923,7 @@ - + @@ -19828,7 +19937,7 @@ - + @@ -19868,7 +19977,7 @@ - + @@ -19887,7 +19996,7 @@ - + @@ -19909,7 +20018,7 @@ - + @@ -19931,7 +20040,7 @@ - + @@ -19949,7 +20058,7 @@ - + @@ -19977,7 +20086,7 @@ - + @@ -20003,7 +20112,7 @@ - + @@ -20023,7 +20132,7 @@ - + diff --git a/db/Models/assets/RBAC_model.svg b/db/Models/assets/RBAC_model.svg deleted file mode 100644 index 493f7ba..0000000 --- a/db/Models/assets/RBAC_model.svg +++ /dev/null @@ -1,2752 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/db/Models/eta_rbac.mwb b/db/Models/eta_rbac.mwb index a344180245ff449dcdfe12016c412bf55fb188de..d8ccb93408d6116465f69b43ec732eac9de7c346 100644 GIT binary patch literal 62571 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�!HTw6DE(YJH$c|mAhhef~2E$)Nmno4t*QjBB2k2 z4=_>n^x|DjH*F1+(az(lo}6e1u8fIzGtiJ!V}Z#4Il=A)Pz(-C6Seh)vkQfX>A3vN zz9DdiN_X=^{tymMENHF(RQcUcCeA0Prj>_O*Wuz4^LM)aBUkueWr~c*(GosZQyUUy>E4K3hxb;u} zF{Y~+>pQ0Z_@?~VhY+*#+||s*#>vfCK#IG2G@do%Ps9My~SnB$KUZJ1+_Sr9$blU0Ek z&(qayrz0=^P{(k77O^sZ<@fIrx*uB6Q%=M)C63RWrN1{a-52;o{6YEULrjLXDUU8a5a=feDDR3LB#OxUAl5?^v3*E&_F7>LFJfpk`^m;pF+-r; zqgf^{r|R^UwcNKS7c&`|THN-$-*MRXH1YU2o;)pr$Onee=f^SY6`4pH5K!lh)8@!2 z@2o}55mTuJxci>ec@iiFf9gh)9~wTgpbo6FF2qwVS|gXPF2T#d@y-~KU2ZR#0aq6t zP(Hkqg+FAI=ZHmv^8&w$qk-#I!+;-6zkr5JiDd?IYT{1g5Vh@-l!qNd{_QQ*DgpIR zE0b0#*pw65;M~o>4pbZ;h0MG4r~Kp`FFOMz>DAk~j;H?8G$;B}pr4ZDTl!GoD^)ey zl^eNBofQz#qfh5M$eCCI0JiZtoW)+8mbSnS_-omL|he~DLC!Lx&*HF&{{a< z4ew(KDXwHuj1tAw?h8&BU7LtVX{Ohdu%B!HAliZD2A_h2B8oxWq=%oqrJnG2y((iE zBULCU$Ehgp@K1hXBd0pN5Y^J9fhq~jsM*(2H5=vU*AB?%34!RUGT(~(mL@-J8^ABE zc@35j5k+4V1z!#uiND@@J0ft(aF|5((dVHZyNoc5tuFl?LrQcw^0I*MF_PQ(I_3c? z+i9JlIwQ}irBhw$)@>e@Wa7>>%|F zGtk)G5;~p0!ji{*jCKD%B#Ht#Fh}MPGj|6IM>lQB!J7*I3lIJ+7>E3Cbol25Zyxu5;lsb>8vj#{PhAQ3&dqA`B6^OZoJ-vyGnYE3F1wAh}n9$+o4412!wS|L;t0=wuGXY@% XA^vAV0>&0@CLT5>P7oJ23&Q^cq8cR= literal 61925 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 GasMB$Xb9K< diff --git a/db/Models/init/rbac_root_init.sql b/db/Models/init/rbac_root_init.sql deleted file mode 100644 index d7f0c06..0000000 --- a/db/Models/init/rbac_root_init.sql +++ /dev/null @@ -1,18 +0,0 @@ --- Creation of root and backoffice -INSERT INTO applications (name, slug, description) VALUES ('root/backoffice','root_backoffice',"This is the application with no restrictions to all resources"); - -INSERT INTO permissions (application_id, name, description) VALUES (1, 'root', "No restrictions"); - -INSERT INTO roles (application_id, name, description) VALUES (1, 'root', "No restrictions"); - -INSERT INTO role_permissions (role_id, permission_id) VALUES (1,1); - -INSERT INTO users (name, last_name) VALUES ('root','root'); - -INSERT INTO auth_identities (user_id, provider, identifier, password_hash, is_primary, is_verified) VALUES (1,'email','root@root.com','invalid_password_hash',1,1); - -INSERT INTO user_roles (user_id, role_id) VALUES (1,1); - -INSERT INTO user_permissions (user_id, permission_id) VALUES (1,1); - -INSERT INTO user_applications (user_id, application_id) VALUES (1,1); diff --git a/db/Models/rbac.mwb b/db/Models/rbac.mwb deleted file mode 100644 index 32e80ee39ebd2507086604da2367fd966a514f7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21714 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 GNBJ+p8_7`s diff --git a/db/Models/schemas/eta_rbac.sql b/db/Models/schemas/eta_rbac.sql index 71e0b64..448b8cf 100644 --- a/db/Models/schemas/eta_rbac.sql +++ b/db/Models/schemas/eta_rbac.sql @@ -1,5 +1,5 @@ -- MySQL Script generated by MySQL Workbench --- Thu 02 Apr 2026 01:32:42 AM CST +-- Mon 06 Apr 2026 02:56:46 PM CST -- Model: New Model Version: 1.0 -- MySQL Workbench Forward Engineering @@ -193,6 +193,7 @@ ENGINE = InnoDB; -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`sessions` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `application_id` INT UNSIGNED NOT NULL, `user_id` INT UNSIGNED NOT NULL, `session_token_hash` VARCHAR(255) NOT NULL, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -202,10 +203,16 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`sessions` ( PRIMARY KEY (`id`), INDEX `fk_sessions_users1_idx` (`user_id` ASC) VISIBLE, UNIQUE INDEX `session_token_hash_UNIQUE` (`session_token_hash` ASC) VISIBLE, + INDEX `fk_sessions_applications1_idx` (`application_id` ASC) VISIBLE, CONSTRAINT `fk_sessions_users1` FOREIGN KEY (`user_id`) REFERENCES `u947463964_etaviaporte`.`users` (`id`) ON DELETE CASCADE + ON UPDATE NO ACTION, + CONSTRAINT `fk_sessions_applications1` + FOREIGN KEY (`application_id`) + REFERENCES `u947463964_etaviaporte`.`applications` (`id`) + ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE = InnoDB; diff --git a/db/Models/schemas/rbac.sql b/db/Models/schemas/rbac.sql deleted file mode 100644 index 8c62e9a..0000000 --- a/db/Models/schemas/rbac.sql +++ /dev/null @@ -1,289 +0,0 @@ --- MySQL Script generated by MySQL Workbench --- Tue 31 Mar 2026 11:55:20 PM CST --- Model: New Model Version: 1.0 --- MySQL Workbench Forward Engineering - -SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; -SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; -SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; - --- ----------------------------------------------------- --- Schema u947463964_etaviaporte --- ----------------------------------------------------- - --- ----------------------------------------------------- --- Schema u947463964_etaviaporte --- ----------------------------------------------------- -CREATE SCHEMA IF NOT EXISTS `u947463964_etaviaporte` DEFAULT CHARACTER SET utf8 ; -USE `u947463964_etaviaporte` ; - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`users` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`users` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `name` VARCHAR(512) NOT NULL, - `last_name` VARCHAR(512) NOT NULL, - `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`id`)) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`auth_identities` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`auth_identities` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `user_id` INT UNSIGNED NOT NULL, - `provider` VARCHAR(512) NOT NULL COMMENT 'type of identifier: email, phone, etc', - `identifier` VARCHAR(512) COLLATE 'Default Collation' NOT NULL COMMENT 'email, phone google, facebook, etc.', - `password_hash` VARCHAR(512) COLLATE 'Default Collation' NULL COMMENT 'password for phone or email', - `is_primary` TINYINT NOT NULL DEFAULT 0, - `is_verified` TINYINT NOT NULL DEFAULT 0, - `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'when phone or email, password goes here.', - PRIMARY KEY (`id`), - INDEX `fk_auth_identities_users_idx` (`user_id` ASC) VISIBLE, - UNIQUE INDEX `provider_UNIQUE` (`provider` ASC, `identifier` ASC) VISIBLE, - CONSTRAINT `fk_auth_identities_users` - FOREIGN KEY (`user_id`) - REFERENCES `u947463964_etaviaporte`.`users` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`applications` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`applications` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `name` VARCHAR(512) NOT NULL, - `slug` VARCHAR(512) NOT NULL, - `description` TEXT NULL, - `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`id`), - UNIQUE INDEX `slug_UNIQUE` (`slug` ASC) VISIBLE, - UNIQUE INDEX `name_UNIQUE` (`name` ASC) VISIBLE) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`roles` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`roles` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `application_id` INT UNSIGNED NOT NULL, - `name` VARCHAR(512) NOT NULL, - `description` TEXT NULL, - `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`id`), - UNIQUE INDEX `name_UNIQUE` (`application_id` ASC, `name` ASC) VISIBLE, - INDEX `fk_roles_applications1_idx` (`application_id` ASC) VISIBLE, - CONSTRAINT `fk_roles_applications1` - FOREIGN KEY (`application_id`) - REFERENCES `u947463964_etaviaporte`.`applications` (`id`) - ON DELETE NO ACTION - ON UPDATE NO ACTION) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`permissions` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`permissions` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `application_id` INT UNSIGNED NOT NULL, - `name` VARCHAR(512) NOT NULL, - `description` TEXT NULL, - PRIMARY KEY (`id`), - UNIQUE INDEX `name_UNIQUE` (`application_id` ASC, `name` ASC) VISIBLE, - INDEX `fk_permissions_applications1_idx` (`application_id` ASC) VISIBLE, - CONSTRAINT `fk_permissions_applications1` - FOREIGN KEY (`application_id`) - REFERENCES `u947463964_etaviaporte`.`applications` (`id`) - ON DELETE NO ACTION - ON UPDATE NO ACTION) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`role_permissions` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`role_permissions` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `role_id` INT UNSIGNED NOT NULL, - `permission_id` INT UNSIGNED NOT NULL, - PRIMARY KEY (`id`), - INDEX `fk_role_permissions_roles1_idx` (`role_id` ASC) VISIBLE, - INDEX `fk_role_permissions_permissions1_idx` (`permission_id` ASC) VISIBLE, - UNIQUE INDEX `role_id_UNIQUE` (`role_id` ASC, `permission_id` ASC) VISIBLE, - CONSTRAINT `fk_role_permissions_roles1` - FOREIGN KEY (`role_id`) - REFERENCES `u947463964_etaviaporte`.`roles` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION, - CONSTRAINT `fk_role_permissions_permissions1` - FOREIGN KEY (`permission_id`) - REFERENCES `u947463964_etaviaporte`.`permissions` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`user_roles` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`user_roles` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `user_id` INT UNSIGNED NOT NULL, - `role_id` INT UNSIGNED NOT NULL, - `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `expires_at` DATETIME NULL, - PRIMARY KEY (`id`), - INDEX `fk_user_roles_users1_idx` (`user_id` ASC) VISIBLE, - INDEX `fk_user_roles_roles1_idx` (`role_id` ASC) VISIBLE, - UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC, `role_id` ASC) VISIBLE, - CONSTRAINT `fk_user_roles_users1` - FOREIGN KEY (`user_id`) - REFERENCES `u947463964_etaviaporte`.`users` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION, - CONSTRAINT `fk_user_roles_roles1` - FOREIGN KEY (`role_id`) - REFERENCES `u947463964_etaviaporte`.`roles` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`user_permissions` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`user_permissions` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `user_id` INT UNSIGNED NOT NULL, - `permission_id` INT UNSIGNED NOT NULL, - `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `expires_at` DATETIME NULL, - PRIMARY KEY (`id`), - INDEX `fk_user_permissions_permissions1_idx` (`permission_id` ASC) VISIBLE, - INDEX `fk_user_permissions_users1_idx` (`user_id` ASC) VISIBLE, - UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC, `permission_id` ASC) VISIBLE, - CONSTRAINT `fk_user_permissions_permissions1` - FOREIGN KEY (`permission_id`) - REFERENCES `u947463964_etaviaporte`.`permissions` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION, - CONSTRAINT `fk_user_permissions_users1` - FOREIGN KEY (`user_id`) - REFERENCES `u947463964_etaviaporte`.`users` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`verification_tokens` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`verification_tokens` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `auth_identity_id` INT UNSIGNED NOT NULL, - `token_hash` VARCHAR(255) NOT NULL COMMENT 'Verification token for email/phone/notification mechanisms to either validate or reset passwords', - `purpose` ENUM('email_verification', 'phone_verification', 'password_reset') NOT NULL, - `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `expires_at` DATETIME NOT NULL, - `used_at` DATETIME NULL, - PRIMARY KEY (`id`), - INDEX `fk_verification_tokens_auth_identities1_idx` (`auth_identity_id` ASC) VISIBLE, - UNIQUE INDEX `token_hash_UNIQUE` (`token_hash` ASC) VISIBLE, - CONSTRAINT `fk_verification_tokens_auth_identities1` - FOREIGN KEY (`auth_identity_id`) - REFERENCES `u947463964_etaviaporte`.`auth_identities` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`sessions` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`sessions` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `user_id` INT UNSIGNED NOT NULL, - `application_id` INT UNSIGNED NOT NULL, - `session_token_hash` VARCHAR(255) NOT NULL, - `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `expires_at` DATETIME NOT NULL, - `revoked_at` DATETIME NULL, - PRIMARY KEY (`id`), - INDEX `fk_sessions_users1_idx` (`user_id` ASC) VISIBLE, - UNIQUE INDEX `session_token_hash_UNIQUE` (`application_id` ASC, `session_token_hash` ASC) VISIBLE, - INDEX `fk_sessions_applications1_idx` (`application_id` ASC) VISIBLE, - CONSTRAINT `fk_sessions_users1` - FOREIGN KEY (`user_id`) - REFERENCES `u947463964_etaviaporte`.`users` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION, - CONSTRAINT `fk_sessions_applications1` - FOREIGN KEY (`application_id`) - REFERENCES `u947463964_etaviaporte`.`applications` (`id`) - ON DELETE NO ACTION - ON UPDATE NO ACTION) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`user_applications` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`user_applications` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `user_id` INT UNSIGNED NOT NULL, - `application_id` INT UNSIGNED NOT NULL, - `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (`id`), - INDEX `fk_user_application_users1_idx` (`user_id` ASC) VISIBLE, - INDEX `fk_user_application_applications1_idx` (`application_id` ASC) VISIBLE, - UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC, `application_id` ASC) VISIBLE, - CONSTRAINT `fk_user_application_users1` - FOREIGN KEY (`user_id`) - REFERENCES `u947463964_etaviaporte`.`users` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION, - CONSTRAINT `fk_user_application_applications1` - FOREIGN KEY (`application_id`) - REFERENCES `u947463964_etaviaporte`.`applications` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `u947463964_etaviaporte`.`api_keys` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`api_keys` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `application_id` INT UNSIGNED NOT NULL, - `name` VARCHAR(512) NOT NULL, - `description` TEXT NULL, - `key_hash` VARCHAR(255) NOT NULL, - `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - `expires_at` DATETIME NULL, - PRIMARY KEY (`id`), - UNIQUE INDEX `key_hash_UNIQUE` (`key_hash` ASC) VISIBLE, - INDEX `fk_api_keys_applications1_idx` (`application_id` ASC) VISIBLE, - CONSTRAINT `fk_api_keys_applications1` - FOREIGN KEY (`application_id`) - REFERENCES `u947463964_etaviaporte`.`applications` (`id`) - ON DELETE CASCADE - ON UPDATE NO ACTION) -ENGINE = InnoDB; - - -SET SQL_MODE=@OLD_SQL_MODE; -SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; -SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; diff --git a/db/service/initdb/00-schema.sql b/db/service/initdb/00-schema.sql index 71e0b64..448b8cf 100644 --- a/db/service/initdb/00-schema.sql +++ b/db/service/initdb/00-schema.sql @@ -1,5 +1,5 @@ -- MySQL Script generated by MySQL Workbench --- Thu 02 Apr 2026 01:32:42 AM CST +-- Mon 06 Apr 2026 02:56:46 PM CST -- Model: New Model Version: 1.0 -- MySQL Workbench Forward Engineering @@ -193,6 +193,7 @@ ENGINE = InnoDB; -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`sessions` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `application_id` INT UNSIGNED NOT NULL, `user_id` INT UNSIGNED NOT NULL, `session_token_hash` VARCHAR(255) NOT NULL, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -202,10 +203,16 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`sessions` ( PRIMARY KEY (`id`), INDEX `fk_sessions_users1_idx` (`user_id` ASC) VISIBLE, UNIQUE INDEX `session_token_hash_UNIQUE` (`session_token_hash` ASC) VISIBLE, + INDEX `fk_sessions_applications1_idx` (`application_id` ASC) VISIBLE, CONSTRAINT `fk_sessions_users1` FOREIGN KEY (`user_id`) REFERENCES `u947463964_etaviaporte`.`users` (`id`) ON DELETE CASCADE + ON UPDATE NO ACTION, + CONSTRAINT `fk_sessions_applications1` + FOREIGN KEY (`application_id`) + REFERENCES `u947463964_etaviaporte`.`applications` (`id`) + ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE = InnoDB; diff --git a/docs/software_requirements_specification.md b/docs/software_requirements_specification.md new file mode 100644 index 0000000..b357453 --- /dev/null +++ b/docs/software_requirements_specification.md @@ -0,0 +1,117 @@ +# ETA's Core API + +Draft of software requirements specification (SRS) to model API endpoints and its responsabilities. + +- **/meta/applications**: + - **Operations**: + - Create application. (idempotency through client UUID) + - Read applications + - Update applications + - Delete applications + +- **/apps/{app_id}/roles**: + - **Operations**: + - Create application roles. (idempotency through client UUID) + - Read application roles + - Update application roles + - Delete application roles + +- **/apps/{app_id}/permissions**: + - **Operations**: + - Create application permissions. (idempotency through client UUID) + - Read application permissions + - Update application permissions + - Delete application permissions + +- **/apps/{app_id}/users/{user_id}/roles**: + - **Operations**: + - Assign roles to user + - Delete roles from user + - Read roles from user + +- **/apps/{app_id}/users/{user_id}/permissions**: + - **Operations**: + - Assign permission to user + - Delete permission to user + - Read permissions assigned to user + +- **/apps/{app_id}/users/{user_id}/apikeys**: + - **Operations**: + - Create apikeys. (idempotency through client UUID) + - Read apikeys + - Delete apikeys + +- **/apps/{app_id}/auth**: + - **Operations**: + - Manage authentication of user: + - **/app/{app_id}/auth/identity/[phone,email]**: + - Identify user and return JWT. + - Create user and assign to application. (idempotency through client UUID) + - **/app/{app_id}/auth/identity/[phone,email]/verify**: + - Verify identity and assign to application. (idempotency through client UUID) + - **/app/{app_id}/auth/logout**: + - **/app/{app_id}/auth/refresh**: + - **/app/{app_id}/auth/me**: + +# Admin Authorization Strategy: + +The system shall have a predefined system application to control all resources. + +The system application can't be removed. + +The system application shall have predefined permissions and roles to control the access to all resources at different granularity levels: + - CRUD of applications. + - CRUD of applications' roles. + - CRUD of applications' permissions. + - CRUD of applications' users. + - CRUD of applications' apikeys. + - etc. + +The system application shall have an admin user with only apikeys and no identities. + +The system application's admin user shall have permissions assigned to manage applications. + +The system application's admin user shall have permissions assigned to manage users. + +The system application's admin user shall have permissions assigned to manage roles and permissions within applications. + +The system application's admin user shall have permissions assigned to manage apikeys within applications. + +The system application's admin user shall not have full control over the system resources.* (No other resource than users, roles, permissions) + +Every application shall have an admin user with only apikeys and no identities. + +Every application shall have an admin user to manage application resources. + +Every application shall have an admin user to manage users within applications: + + - Shall allow assigning or removing existing users to/from applications. + - Shall allow create and assign users to applications. + +The application's admin user shall not have full control over the application resources.* (No other resource than users, roles, permissions) + +Every application shall have it's own API that serves as an API wrapper to consume system resources. + +Every application shall have it's own API that serves as an API wrapper to consume application resources. + +Every application specific API shall use the user's authorization token or apikey to consume application's resources. + +(Admin Portal shall have it's own API that communicates with the core API to manage system resources associated to the system and the application components). + +(Admin Portal shall have it's own API key to only create users and assign roles to it). + +(Admin Portal shall modify system resources by the usage of a JWT of an identified user to enable audit logs of resources manipulation). + +# Idempotency Strategy: + +When a resource requires "idempotency", the HTTP header `X-Idempotency-Key` must be provided with an UUID generated from the client. + +# Authorization Tokens (Core API): + +When API Key is used, the HTTP header `x-api-key: ` shall be used.* + +When JWT is used, the HTTP header `Authorization: Bearer ` shall be used. + +When JWT refresh is used, the HTTP header `x-refresh-token: ` shall be used. + +Every application's specific API (also known as API wrapper) shall use it's own authorization mechanisms.