oxygenxml-incubator / oxygen-account

Oxygen Feedback Internship 2023
1 stars 0 forks source link

Add log in functionality #32

Closed adrianasbircea closed 1 year ago

adrianasbircea commented 1 year ago

Userul trebuie sa se autentifice atunci cand incearca sa acceseze resursele protejate. Pentru scopul issue-ul, vom considera pagina profile.html ca fiind o resursa protejata. Pagina nu va avea functionalitate momentan si va servi doar ca instrument pentru implementarea suportului de autentificare.

Atunci cand userul nu este logat si incearca sa acceseze o resursa protejata (de exemplu /profile):

Forma de log in se va implementa in pagina /login. In cazul in care userul nu are un cont deja creat, va avea posibilitatea, in aceasta pagina, sa acceseze forma Sign up.

De exemplu, vezi forma de login de la Github:

Image

balasaalin commented 1 year ago

https://spring.io/guides/gs/securing-web/

matrex32 commented 1 year ago

Resursa protejata va fi cea de "/profile" Resursa "/login" va avea permitAll pentru a le permite tuturor sa se autentifice

Ca si path uri o sa avem "/profile", resursa protejata, "/login", "/logout", pentru ca utilizatorul sa poata sa si inchida sesiunea, si ar trebui sa avem "/register", acesta sa aiba acces din "/login", ca utilizatorul sa poata sa si faca cont in cazul inc are nu are. Putem sa adaugam un buton "Register" in pagina de "/login", de unde utilizatorul sa fie redirectionat catre path ul de "/register".

Diferite cazuri:

In securityFilterChain as avea pentru endpointul de "/register" si "/login" permitAll, pentru "/profile" si "/logout" doar cei autentificati.

Pot sa fac un nou controller sau sa l folosesc pe cel existent, pentru a face o metoda prin intermediul careia sa pot sa i permit utilizatorului sa si acceseze contul dupa ce si introduce datele pe endointul de "/login", tot in aceasta metoda pot sa arunc si exceptia OxygenAccountException in care sa i returneze un mesaj care sa i zica ca emailul sau parola sunt gresite sau pot sa fac o metoda in UserService care sa se ocupe de login si sa si arunce exceptia .

///Putem face o clasa AuthentificationInterceptor in care sa verificam daca utilizatorul este autentificat inainte de a-l lasa sa acceseze path urile protejate, iar in cazul in care nu e autentificat interceptorul il va redirectiona direct pe "/login"

Dupa pot sa fac o clasa MvcConfig care sa implementeze interfata WebMvcConfigurer unde sa fac o metoda addViewControllers unde sa mapez view urile pentru path urile respective, aceasta metoda cautand in folderul "templates" .html urile specificate

matrex32 commented 1 year ago

Am configurat serverul sa ne trimita pe /login cand incercam sa accesam /profile

matrex32 commented 1 year ago

Am creat pagina de log in dupa specificatiile discutate in sedintele de feedback. Am adaugat functionalitatea de log in pe server si am facut teste pe front end si back end pentru aceasta functionalitate.