Tehnička Dokumentacija Projekta "Shareables" - birisic/ShareablesApi GitHub Wiki
"Shareables" je aplikacija za upravljanje dokumentima i direktorijumima, sa naglaskom na granularnu kontrolu dozvola i mogućnost deljenja sadržaja putem linkova. Korisnici mogu kreirati, ažurirati, brisati radne prostore, direktorijume i dokumente, kao i upravljati dozvolama drugih korisnika nad ovim resursima. Sistem takođe omogućava kreiranje deljivih linkova za dokumente koje korisnici poseduju, omogućavajući pregled dokumenta čak i za neautorizovane korisnike.
- Korisnici se ne auto-loginuju po registraciji! Da bi se korisnik ulogovao neophodno je da gađa login API koji će mu vratiti token sa njegovim privilegijama ako unese validne kredencijale
- Za lako testiranje ruta najbolje je napraviti jednu globalnu promenljivu u Postmanu u kojoj ćete čuvati JWT token i ubacivati ga u autorizacioni heder pri svakom requestu
- BITNO - Kada se kreira novi radni prostor bilo kog tipa, korisnik mora da se ponovo uloguje da bi dobio novi token sa priviegijama za taj radni prostor (token se trenutno ne auto-refresuje)
- Kada se nekom korisniku dodeljuju privilegije nad nekim radnim prostorom (ovo mogu da rade svi korisnici koji imaju UserWorkspaceUseCaseModification UseCase nad datim radnim prostorom), neophodno je da prethodno nad tim radnim prostorom, kao i nad svim njegovim "precima" u hijerarhiji, postoji WorkspaceRetrieval UseCase sa ID-jem 3. Ovo znači da ako želite nekom radnom prostoru da dodelite neki UseCase, dodelite mu prvo WorkspaceRetrieval, a sistem će automatski dodeliti isti i njegovim precima
Aplikacija koristi JWT (JSON Web Token) za autentifikaciju korisnika. Kada se korisnik uspešno prijavi, aplikacija generiše JWT token koji sadrži sve UseCase-ove (dozvole) korisnika za radne prostore kojima imaju pristup. Ovi UseCase-ovi se enkapsuliraju unutar samog tokena, što omogućava sistemu da prilikom svakog zahteva proveri koje akcije korisnik može da preduzme nad određenim resursima bez potrebe za dodatnim upitima ka bazi.
Svaki zahtev koji zahteva autentifikaciju zahteva prisustvo validnog JWT tokena u zaglavlju zahteva, u formatu Authorization: Bearer . Korisnikovi UseCase-ovi se ažuriraju prilikom kreiranja novih radnih prostora ili prilikom promene dozvola, ali je neophodno da korisnik ponovo dobije osveženi token kako bi nove dozvole bile reflektovane.
- Upravljanje Radnim Prostorima (Workspaces) Korisnici mogu kreirati radne prostore (koji mogu biti direktorijumi ili dokumenti), brisati ih, ažurirati ili deliti sa drugim korisnicima. Radni prostori se dele u tri glavna tipa:
- Workspace: generalni radni prostor koji sadrži direktorijume i dokumente.
- Directory: radni prostor koji služi kao folder za druge radne prostore.
- Document: radni prostor koji sadrži tekstualni sadržaj, sa mogućnošću dodavanja medija.
- Granularne Dozvole Aplikacija "Shareables" koristi granularni sistem dozvola, omogućavajući korisnicima da definišu tačna ovlašćenja drugih korisnika nad radnim prostorima. Korisnici mogu dodeljivati sledeće dozvole (sa izuzetkom prvog i poslednjeg UseCase-a koji se ne dodeljuju):
Svaki korisnik po registraciji dobija svoj osnovni radni prostor za koj ima definisan svoj set dozvola, kao i za svaki drugi radni prostor u kojem učestvuje. Pošto aplikacija prati CQRS arhitektonski šablon, svaki definisan UseCase odgovara nekoj komandi ili nekom query-ju unutar sistema i omogućava korisniku neku akciju.
- Deljenje Dokumenata putem Linkova Korisnici koji poseduju radne prostore koji su tipa "Document" mogu generisati privremene linkove za deljenje istih. Ovi linkovi omogućavaju neautorizovanim korisnicima pristup dokumentima bez potrebe da se registruju u sistem:
- Kreiranje linkova: Autorizovani korisnik može kreirati link sa nasumično generisanim tokenom koji važi određeno vreme.
- Pregled putem linkova: Svako ko poseduje link može otvoriti dokument u roku važenja linka.
- Upravljanje Korisničkim Dozvolama Vlasnici radnih prostora mogu dodeljivati ili oduzimati dozvole drugim korisnicima. Ako korisnik ima UserWorkspaceUseCaseModification UseCase na nekom radnom prostoru, onda on može upravljati dozvolama drugih korisnika na tom radnom prostoru. Prilikom dodele ili oduzimanja dozvola, neophodno je da se vodi računa o naslednim pravilima:
- Rad sa Medijima Korisnici mogu dodavati slike uz sadržaj dokumenata, a one se prikazuju zajedno sa dokumentima kada se oni dohvataju.
Aplikacija "Shareables" poseduje globalni middleware za rukovanje greškama koji omogućava hvatanje izuzetaka bilo gde unutar aplikacije. Ovaj middleware centralizuje obradu grešaka i obezbeđuje da korisnici dobiju konzistentne odgovore na greške, bez obzira na to odakle je izuzetak potekao. Kada dođe do greške, middleware hvata izuzetak, loguje ga u sistem za praćenje grešaka, i vraća odgovarajući HTTP status kod i poruku.