Admin panel website angular

typescript
javascript
(Alexandru Tudor) #1

Am un web api in asp. Net core si un client in angular 7. Pentru cel din urma vreau sa fac un admin panel, dar nu stiu care ar fi cea mai buna solutie :

  1. Parte integrata a clientului cu componentele necesare
  2. Cu totul un alt client (alt website), la care sa aibe acces doar userii cu rol admin.
    Api’ul va fi acelasi pentru ambele websiteuri, asa ma gandesc ca e normal, cu autorizare pentru metodele folosite in admin
(George Ilie) #2

Poti face o singura aplicatie, dar cu module separate pentru clienti si pentru admin.
In felul asta, atunci cand clientii acceseaza aplicatia nu se incarca si modulul adminilor.

Un articol de acum un an, dar care pastreaza principiile:

(Alexandru Tudor) #3

Clientul e facut cu module separate, deci tu te referi la prima varianta, un modul separat pentru admin si componentele sale. Nu stiu daca e cea mai ok metoda, dar am cate un modul pentru fiecare componenta principala, astfel evit durata prea mare a incarcarii siteului la prima accesare

(István F.) #4

Ai implementat privilegii pentru client in routing cu un Router Guard (‘privlegeguard’ in acest caz) ?

Ori faci o ruta separata si te folosesti de privilegeguard + un modul parinte separat in care sa pui componentele pentru admin

Ori daca nu vrei rute separate ci doar componente de admin in functie de privilegii te folosesti de un serviciu de privilegii (poate elegant cu un decorator). Poti sa izolezi oricum componentele de admin intr-un modul de admin si sa le incarci doar cand ai nevoie (ca sa nu le incarci si pentru client fara privilegii). In modulul de client parinte incarci si modulul de admin daca sunt privilegii de admin.

Te folosesti de https://angular.io/api/router/CanLoad in amandoua cazurile.

(George Ilie) #5

Ziceam ca sunt doua clase de utilizatori pentru aplicatie:

  • membri simpli (denumiti de mine clienti)
  • admini

Poti avea cate un modul pentru fiecare intr-o singura aplicatie web.

(Alexandru Tudor) #6

Fiecare modul are ruta sa, deci e incarcat doar atunci cand e accesata ruta, iar AuthGuard folosesc doar pe modulele unde vreau sa fie accesate doar de utilizatori logati sau de useri cu anumite roluri, asta fiind specificat in routingul modulului (data : { roles : [`Admin’]}), parca asa era sintaxa, scriu de pe tel sorry :))) personal prefer prima metoda, cu modul admin in aceeasi app, imi pare ca asa ar fi incarcat mult mai repede decat transferul la o alta aplicatie.