Sunteți pe pagina 1din 3

Platforma pentru cursuri(Aplicatie CRUD)

Extindere descriere proiect in care sa exprimati viziunea echipei pentru dezvoltarea proiectului;

Prezentare initiala a tehnologiilor pe care o sa le folositi.

Descriere proiect:

Proiectul isi propune implementarea unei platforme online pentru alegerea si inrolarea la cursuri a
unor cursanti. Task-urile specifice care trebuie implementate de echipa de proiect sunt: definirea
resurselor care sunt gazduite de platforma, definirea permisiunilor atasate, definirea tipurilor de
utlizatori si a politicii de acces la resursele expuse.

Proiectul are in vedere dezvoltarea unei platforme dedicate cursurilor online si managementului
resurselor asociate acestor cursuri (i.e. cursuri video, resurse tip document PDF / .doc, administrarea
conturilor studentilor). Totodata, proiectul are in vedere punerea la dispozitie a unui mecanism de
interactiune dedicat utilizatorilor (i.e. comentarii / forum - studentii vor putea adauga comentarii si
vizualiza raspunsurile / indicatiile profesorilor. Aceste resurse vor fi supuse administrarii de catre
moderatori).

Implementarea proiectului propune expunerea resurselor specifice unei platforme de cursuri


online, bazandu-se pe o politica de acces configurabila. Resursele expuse vor fi disponibile prin
intermediul unei politici de acces, definita la nivelul fiecarei entitati in parte. Se are in vedere crearea
unui mecanism de autentificare si autorizare la aceste resurse. Permisiunile vor fi atasate rolurilor,
acestea din urma putand fi atribuite utilizatorilor si grupurilor de utilizatori.

Drepturile (i.e. permisiunile) de acces definite vor putea fi configurate in detaliu. Asocierea unui
utilizator cu un anumit grup de utilizatori va rezulta in mostenirea drepturilor asociate acelui grup de
catre utilizatorul in cauza. De asemenea, in vederea configurarii la nivel detaliat, va fi posibila
definirea exceptiilor (e.g. un utilizator, desi membru al unui grup, poate avea accesul restrictionat la
o anumita resursa / drept specific.).

Aplicatia va avea la baza o arhitectura bazata pe servicii REST, intrucat aceasta permite separarea
cu usurinta a nivelurilor de abstractizare si a resurselor. De asemenea, tinand cont de separarea
incurajata de catre aceasta arhitectura, protocolul de autentificare va fi reprezentat de OAuth 2. In
acest fel, accesul la resurse va fi realizat prin intermediul unui token eliberat de catre server, urmand
ca acesta sa fie folosit pentru a accesa resursele puse la dispozitie de catre Resource Provider. Odata
obtinut acest token, un utilizator autorizat va putea accesa resursele puse la dispozitie acestuia de
catre politica de autorizare. Se are in vedere dezvoltarea unui modul specific de gestiune a
drepturilor de acces asociate utilizatorilor.

Lista de functionalitati ale aplicatiei voastre;


Avand in vedere accentul pus pe segmentul dedicat securitatii, se doreste folosirea unui limbaj de
programare cat mai strict cu putinta din punctul de vedere al datelor. Limbajul ales va fi, asadar, un
limbaj cu trasaturi "statically typed". In cazul de fata, Java. De asemenea, in vederea simplificarii
procesului de dezvoltare a arhitecturii bazate pe servicii REST, se are in vedere o implementare
bazata pe SpringFramework (Spring Boot).

Acest framework se pune la dispozitie sub forma modulelor, avand suport pentru dezvoltarea
arhitecturilor de acest tip. De asemenea, tinand cont de natura orientata pe entitati a controller-elor
REST, nivelul de acces la date va fi implementat cu ajutorul Spring JPA (Java Persistence API), un API
dedicat ORM-ului (Object Relational Mapping), in vederea delimitarii clare a entitatilor (i.e.
resurselor) accesibile. Spring JPA va media transferul de date dintre aplicatie si un SGBD relational.
Totodata, Spring Boot dispune de suport pentru implementarea protocolului OAuth 2, prin
intermediul modulului Spring Security.

<<FRONTEND>>

Un utilizator autentificat va dispune de un token pe care il va folosi pentru obtinerea accesului la


endpoint-uri. OAuth 2 permite autentificarea utilizatorilor, insa politica de acces va fi specificata prin
intermediul politicii de autorizare. Se are in vedere dezvoltarea unui mecanism usor configurabil de
acces pe baza privilegiilor stabilite la nivel de utilizator / grup de utilizatori. Pe langa tipurile de
utilizatori definite implicit (e.g. ADMIN, USER etc.), vor fi puse la dispozitie grupuri de utilizatori,
acestea putand fi asociate anumitor roluri / permisiuni (e.g. studenti, profesori etc.). De exemplu, un
student va avea drept de "read only" pe anumite resurse (cursuri, materiale etc.), iar un profesor va
putea gestiona aceste resurse, avand drepturi aditionale (stergere, adaugare de materiale si cursuri
s.a.m.d.). Administratorul va avea un nivel aditional de permisiuni, acestuia fiindu-i permisa
adaugarea / stergerea / suspendarea conturilor de utilizatori. Tinand cont de posibilitatea gruparii
utilizatorilor, va fi posibila definirea unui grup de "super administratori". Utilizatorii apartinand
acestui grup vor avea acces la definirea politicii de securitate a aplicatiei (i.e. acestia vor putea da
drepturi / restrictiona accesul altor utilizatori / grupuri de utilizatori la anumite resurse).

Setul drepturilor administratorilor va fi un superset al tuturor drepturilor profesorilor, dar acestia


vor putea administra conturile celorlalti utilizatori. Cu toate acestea, administratorii nu vor putea
defini permisiuni si nu vor putea adauga grupuri noi de utilizatori. Acest drept va fi asociat conturilor
de super administrator.

In vederea implementarii unui mecanism flexibil de acordare a permisiunilor, se are in vedere


evitarea specificarii acestora la nivelul codului. Implementarea listei de acces / permisiunilor se va
baza pe asocierea cu un model, acesta fiind la randul sau accesibil prin intermediul endpoint-urilor
REST, endpoint-uri accesibile exclusiv utilizatorilor cu rolul "superadmin".
<<FUNCTIONALITATE FRONTEND>>

Functionalitati MVP si repartizare task-uri

Se doreste dezvoltarea unui MVP ce va juca rolul unui prototip ce va fi imbunatatit / adaptat
ulterior prin intermediul iteratiilor succesive.

In vederea dezvoltarii functionalitatilor initiale se au in vedere urmatorii pasi:

- dezvoltarea modelului relational (entitati / tabele dedicate protocolului de autentificare)

- implementarea maparii ORM tinand cont de relatiile definite in pasul anterior

- adaugarea componentelor arhitecturii REST si separarea endpoint-urilor asociate entitatilor

- configurarea componentelor implicate in protocolul de autentificare (Resource Server,


Authentication Server)

- definirea permisiunilor prin intermediul unui API specific (definirea filtrelor de securitate,
mecanismelor de logging, identificarea utilizatorului - Principal-ului injectat la nivelul filtrului /
controller-ilor si asocierea acestuia cu permisiunile sale)

- implementarea politicii de acces in forma initiala (i.e. admin / superadmin)

- <<TASKS FRONTEND>>

Impartire proiectului pe task-uri si desemnarea unui task leader pentru fiecare task;

TASK Descriere Responsabil


UI
Creare baza de date
LoginForm

S-ar putea să vă placă și