-- =============================================================================
-- File purpose   : Script de onboarding ROA_WEB pentru o schemă nouă (per-firmă)
-- When to run    : Rulat ca CONTAFIN_ORACLE (sau DBA) DUPĂ `impdp` al schemei
-- Usage          : Substituie `<SCHEMA>` (3 apariții pe linie sau per bloc) cu
--                  numele schemei reale (ex: MARIUSM_AUTO, ACME_AUTO) înainte
--                  de rulare. Un singur search-and-replace acoperă tot fișierul.
-- Version        : 2026-04-12
-- Prerequisite   : ROA_WEB user creat O SINGURĂ DATĂ (vezi §2 de mai jos).
-- Full procedure : docs/service-auto/deploy-schema-noua.md
-- =============================================================================
--
-- ORDINE OPERAȚII pentru o schemă nouă:
--   1. impdp schema nouă (REMAP_SCHEMA, exclude sequences dacă există)
--   2. RULEAZĂ SECȚIUNEA §1 a acestui fișier (GRANT-uri per-schemă)
--   3. Adaugă `.env` → `ORACLE_SERVERS` dacă server nou + restart backend
--   4. Rulează migrațiile service-auto în ordine cronologică
--      (docs/service-auto/migrations/ff_YYYY_MM_DD_NN_AUTO.sql)
--   5. Smoke test: /ping, /tip-deviz, /masini, /comenzi
--
-- =============================================================================
-- §1. GRANT-uri per-schemă — RULAT PENTRU FIECARE FIRMĂ NOUĂ
-- =============================================================================
-- Înlocuiește `<SCHEMA>` cu schema reală (ex: MARIUSM_AUTO) înainte de rulare.

GRANT EXECUTE ON <SCHEMA>.PACK_AUTO                  TO ROA_WEB;
GRANT SELECT  ON <SCHEMA>.AUTO_VMASINICLIENTI        TO ROA_WEB;
GRANT SELECT  ON <SCHEMA>.DEV_TIP_DEVIZ              TO ROA_WEB;
GRANT SELECT  ON <SCHEMA>.CALENDAR                   TO ROA_WEB; -- period selector AppHeader
GRANT SELECT  ON <SCHEMA>.DEV_ORDL                   TO ROA_WEB; -- GET /api/service-auto/comenzi
GRANT SELECT  ON <SCHEMA>.NOM_LUCRARI                TO ROA_WEB; -- JOIN cu DEV_ORDL pentru nrord

-- Granturi adăugate de migrațiile service-auto (ff_2026_04_13_01_AUTO.sql).
-- Dacă rulezi onboarding-ul INAINTE de migrații, aceste linii pot fi skipped
-- (migrația le va aplica). Dacă rulezi DUPĂ migrații, sunt idempotente (GRANT e no-op).
GRANT SELECT  ON <SCHEMA>.DEV_NOM_NORME              TO ROA_WEB;
GRANT SELECT  ON <SCHEMA>.DEV_NOM_INSPECTORI         TO ROA_WEB;
GRANT SELECT  ON <SCHEMA>.DEV_NOM_ASIGURATORI        TO ROA_WEB;
GRANT SELECT  ON <SCHEMA>.NOM_PARTENERI              TO ROA_WEB;
GRANT INSERT  ON <SCHEMA>.NOM_PARTENERI              TO ROA_WEB;
GRANT EXECUTE ON <SCHEMA>.PACK_SERII_NUMERE          TO ROA_WEB;

-- =============================================================================
-- §2. ROA_WEB user creation — O SINGURĂ DATĂ pe instanță Oracle
-- =============================================================================
-- NU rula pentru fiecare firmă nouă. Rulează doar la setup inițial al instanței.
-- Parola reală se ia din vault și se salvează în `backend/secrets/<server>.oracle_pass`.

CREATE USER ROA_WEB IDENTIFIED BY "<REPLACE_WITH_STRONG_PASSWORD_FROM_VAULT>";
GRANT CREATE SESSION TO ROA_WEB;
-- Fără alte privilegii sistem. Accesul la date = exclusiv prin granturi per-obiect.
