Skip to content

Commit 03111e1

Browse files
EmmanuelleBonoliIrwin-SOLIMANEmmanuelle BONOLISebastienDechandpeacepilou
authored
Staging (#155)
* :sparkles: get themes from back and display buttons for each * section messages completed ! * :sparkles: add Theme Filter bar * review Pilou for staging * :sparkles: get themes from back and display buttons for each * :sparkles: add Theme Filter bar * :hammer: make button reusable * :hammer: small adjustment after merge * add map from open map Libre * :sparkles: add interactive legends to filters markers on map * feat(auth): enhance login/register UX, fix state issues -Improved login modal styles and added animations for better user experience -Displayed the logged-in user's name in the header -Updated the store upon successful login and handled login errors with UI feedback -Added form validators to the register modal for better validation UX -Fixed isFollow not reflecting correct state after login -Renamed geolocalisation to geolocation for naming consistency * style(login): fix errors and style * style: adjust style on home page to display many cards * not send api request messages when not connected * fix update userStore for new activity registration and save (#34) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * :hammer: refacto + add resolver (#36) * fix: comment deletion and changes in registration form fr to eng (#38) * feat(issue-18): create reusable multiple input and use it in home page to filter (#35) * fix interaction with user and delete all old ways to handle it (#41) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 68/customize map (#39) * update activity card * customize popup markers map * Revert "update activity card" This reverts commit 8f6e747980e626c858fe59d632834b26c4ab2d6f. --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * handle unread messages activities (#40) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix popup map with new way to handle user interaction * Feature/issue 34/create activity page (#43) * :construction: temp * :temp: wip progress * :hammer: improved css * add button to navigate to page, add guard, add error form check and made every reusable component used to works with forms * :construction: WIP * :sparkles: association can now add an activity !!!!! * :bug: fix merge * :hammer: fix images for popup-map as backend now sent a more complexe object for image * :hammer: fix images for popup-map as backend now sent a more complexe object for image * :hammer: fix after review * :hammer: fix after review * Feature/issue 45/admin report (#45) * create report modal * create report modal * create admin report page --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * refactor: use only reactives forms on inputs (#46) * Feature/issue 84/resize image (#49) * :construction: wip :construction: WIP * :sparkles: search adress is working for activity creation and register asso * :sparkles: search adress is working for activity creation and register asso * :construction: WIP * fixed header * fixed header * align front image with back that can provide both URL or base64 * :sparkles: asso can now select from previous activity photo when creating new activity * :sparkles: add lib to crop image when adding an activity * :fix: small typo fix and update dep --------- Co-authored-by: pilou <p-l.b@hotmail.com> * feat(issue-38): implement association profile page, settings, and user security features (#50) - Created `MenuComponent` and `ActivityListComponent` to display activities - Implemented filtering logic for past and upcoming activities - Started implementing the Association Profile page with "About" and "Activities" sections - Added `SecurityComponent` structure - Added `SettingsComponent` and initiated dark mode support - Implemented UI logic to disable follow, like, and inscription actions when the user is an association - Ensured follow, like, and inscription buttons display for non-authenticated users - Enabled password change functionality in the security settings - Implemented account deletion feature - Implement update infos and description, add / remove stats on association profile * fix(issue-38): change delete activity route (#51) * create report modal (#52) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * refactor: clean code and standardise utils after review (#54) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 85/add draft to activity creation (#55) * :hammer: association : add draft to activity creation * :sparkles: association : add draft to activity creation * :bug: fix draft adress loading --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> * Feature/issue 2/docker (#56) * feat(docker): feature/issue-2/docker add Docker setup for dev, staging, and production - Initialized Docker configuration for the project - Created Dockerfiles and docker-compose for dev, staging, and prod environments - Enabled environment-specific builds and nginx setup for serving the app * feat(docker): feature/issue-2/docker add Docker setup for dev, staging, and production - Initialized Docker configuration for the project - Created Dockerfiles and docker-compose for dev, staging, and prod environments - Enabled environment-specific builds and nginx setup for serving the app --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 7/add tests (#58) * fix integration tests for activity message card * add test * :test_tube: add unit, integration and E2E test * :sparkles: rebased on dev --------- Co-authored-by: pilou <p-l.b@hotmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#59) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#61) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#62) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#63) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#64) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#65) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#66) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * feat: implement CD * Development (#60) * Feature/issue 85/add draft to activity creation (#55) * :hammer: association : add draft to activity creation * :sparkles: association : add draft to activity creation * :bug: fix draft adress loading --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> * Feature/issue 2/docker (#56) * feat(docker): feature/issue-2/docker add Docker setup for dev, staging, and production - Initialized Docker configuration for the project - Created Dockerfiles and docker-compose for dev, staging, and prod environments - Enabled environment-specific builds and nginx setup for serving the app * feat(docker): feature/issue-2/docker add Docker setup for dev, staging, and production - Initialized Docker configuration for the project - Created Dockerfiles and docker-compose for dev, staging, and prod environments - Enabled environment-specific builds and nginx setup for serving the app --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 7/add tests (#58) * fix integration tests for activity message card * add test * :test_tube: add unit, integration and E2E test * :sparkles: rebased on dev --------- Co-authored-by: pilou <p-l.b@hotmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#59) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#61) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#62) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#63) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#64) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#65) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#66) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * feat: implement CD --------- Co-authored-by: Irwin SOLIMAN <122315710+Irwin-SOLIMAN@users.noreply.github.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: pilou <p-l.b@hotmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * feat: implement CD * Development (#69) * Feature/issue 85/add draft to activity creation (#55) * :hammer: association : add draft to activity creation * :sparkles: association : add draft to activity creation * :bug: fix draft adress loading --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> * Feature/issue 2/docker (#56) * feat(docker): feature/issue-2/docker add Docker setup for dev, staging, and production - Initialized Docker configuration for the project - Created Dockerfiles and docker-compose for dev, staging, and prod environments - Enabled environment-specific builds and nginx setup for serving the app * feat(docker): feature/issue-2/docker add Docker setup for dev, staging, and production - Initialized Docker configuration for the project - Created Dockerfiles and docker-compose for dev, staging, and prod environments - Enabled environment-specific builds and nginx setup for serving the app --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 7/add tests (#58) * fix integration tests for activity message card * add test * :test_tube: add unit, integration and E2E test * :sparkles: rebased on dev --------- Co-authored-by: pilou <p-l.b@hotmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#59) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#61) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#62) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#63) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#64) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#65) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#66) * CI CD works !... for development * wip: start implement ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * feat: implement CD * feat: implement CD --------- Co-authored-by: Irwin SOLIMAN <122315710+Irwin-SOLIMAN@users.noreply.github.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: pilou <p-l.b@hotmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * feat: implement CD * feat: implement CD * feat: implement CD * Development (#80) * feat(issue-50): implement voluntary profile page with editable fields, geolocation, and avatar upload - Created voluntary profile page with dedicated routing and modular components - Split activity menu into voluntary and association-specific components - Displayed saved activities and followed associations in voluntary profile - Enabled voluntary users to edit personal information (name, birth date, city, phone, country) - Implemented email change flow with token regeneration in localStorage - Added avatar upload feature with extension restrictions and filename storage - Introduced reusable EditableFieldComponent for inline editing UX - Developed UploadAvatarComponent with click-to-upload overlay design - Refactored profile and header menus for clarity and consistency - Integrated geolocation: map centers on voluntary's city, sends country to backend - Enabled city search with zoom and filtering of activities within 100km radius - Moved filtering logic into dedicated ActivityFilterService - Applied multiple map and popup fixes (zoom, flyTo, rendering) * refactor(issue-50): simplify effect and improve understanding of calls to actions and app selectors * refactor(issue-99): reviews fixes * feat(issue-99): add auto-focus pin on map to zoom and filter on user city * feat(issue-101): improve general design for create activity - fix login/register modal button style * add ban user(asso and voluntary), contact user to admin actions (#79) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#81) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#82) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#83) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#84) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#85) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#86) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#87) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#88) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#89) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#90) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#91) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#92) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * :construction: wip adding mock for e2e (#93) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#94) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Sébastien DECHAND <125138091+sebastienDOC@users.noreply.github.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin SOLIMAN <122315710+Irwin-SOLIMAN@users.noreply.github.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Update Dockerfile.staging * Update docker-compose.staging.yml * Development (#97) * feat(issue-50): implement voluntary profile page with editable fields, geolocation, and avatar upload - Created voluntary profile page with dedicated routing and modular components - Split activity menu into voluntary and association-specific components - Displayed saved activities and followed associations in voluntary profile - Enabled voluntary users to edit personal information (name, birth date, city, phone, country) - Implemented email change flow with token regeneration in localStorage - Added avatar upload feature with extension restrictions and filename storage - Introduced reusable EditableFieldComponent for inline editing UX - Developed UploadAvatarComponent with click-to-upload overlay design - Refactored profile and header menus for clarity and consistency - Integrated geolocation: map centers on voluntary's city, sends country to backend - Enabled city search with zoom and filtering of activities within 100km radius - Moved filtering logic into dedicated ActivityFilterService - Applied multiple map and popup fixes (zoom, flyTo, rendering) * refactor(issue-50): simplify effect and improve understanding of calls to actions and app selectors * refactor(issue-99): reviews fixes * feat(issue-99): add auto-focus pin on map to zoom and filter on user city * feat(issue-101): improve general design for create activity - fix login/register modal button style * add ban user(asso and voluntary), contact user to admin actions (#79) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#81) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#82) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#83) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#84) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#85) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#86) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#87) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#88) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#89) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#90) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#91) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#92) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * :construction: wip adding mock for e2e (#93) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#94) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * fix dockerfile (#96) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix dockerfile (#98) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Sébastien DECHAND <125138091+sebastienDOC@users.noreply.github.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin SOLIMAN <122315710+Irwin-SOLIMAN@users.noreply.github.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Development (#100) * feat(issue-50): implement voluntary profile page with editable fields, geolocation, and avatar upload - Created voluntary profile page with dedicated routing and modular components - Split activity menu into voluntary and association-specific components - Displayed saved activities and followed associations in voluntary profile - Enabled voluntary users to edit personal information (name, birth date, city, phone, country) - Implemented email change flow with token regeneration in localStorage - Added avatar upload feature with extension restrictions and filename storage - Introduced reusable EditableFieldComponent for inline editing UX - Developed UploadAvatarComponent with click-to-upload overlay design - Refactored profile and header menus for clarity and consistency - Integrated geolocation: map centers on voluntary's city, sends country to backend - Enabled city search with zoom and filtering of activities within 100km radius - Moved filtering logic into dedicated ActivityFilterService - Applied multiple map and popup fixes (zoom, flyTo, rendering) * refactor(issue-50): simplify effect and improve understanding of calls to actions and app selectors * refactor(issue-99): reviews fixes * feat(issue-99): add auto-focus pin on map to zoom and filter on user city * feat(issue-101): improve general design for create activity - fix login/register modal button style * add ban user(asso and voluntary), contact user to admin actions (#79) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#81) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#82) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#83) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#84) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#85) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#86) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#87) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#88) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#89) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#90) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#91) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#92) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * :construction: wip adding mock for e2e (#93) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#94) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * fix dockerfile (#96) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix dockerfile (#98) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#99) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Sébastien DECHAND <125138091+sebastienDOC@users.noreply.github.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin SOLIMAN <122315710+Irwin-SOLIMAN@users.noreply.github.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Development (#103) * feat(issue-50): implement voluntary profile page with editable fields, geolocation, and avatar upload - Created voluntary profile page with dedicated routing and modular components - Split activity menu into voluntary and association-specific components - Displayed saved activities and followed associations in voluntary profile - Enabled voluntary users to edit personal information (name, birth date, city, phone, country) - Implemented email change flow with token regeneration in localStorage - Added avatar upload feature with extension restrictions and filename storage - Introduced reusable EditableFieldComponent for inline editing UX - Developed UploadAvatarComponent with click-to-upload overlay design - Refactored profile and header menus for clarity and consistency - Integrated geolocation: map centers on voluntary's city, sends country to backend - Enabled city search with zoom and filtering of activities within 100km radius - Moved filtering logic into dedicated ActivityFilterService - Applied multiple map and popup fixes (zoom, flyTo, rendering) * refactor(issue-50): simplify effect and improve understanding of calls to actions and app selectors * refactor(issue-99): reviews fixes * feat(issue-99): add auto-focus pin on map to zoom and filter on user city * feat(issue-101): improve general design for create activity - fix login/register modal button style * add ban user(asso and voluntary), contact user to admin actions (#79) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#81) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#82) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#83) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#84) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#85) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#86) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#87) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#88) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#89) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#90) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#91) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#92) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * :construction: wip adding mock for e2e (#93) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#94) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * fix dockerfile (#96) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix dockerfile (#98) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#99) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#102) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Sébastien DECHAND <125138091+sebastienDOC@users.noreply.github.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin SOLIMAN <122315710+Irwin-SOLIMAN@users.noreply.github.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Development (#105) * feat(issue-50): implement voluntary profile page with editable fields, geolocation, and avatar upload - Created voluntary profile page with dedicated routing and modular components - Split activity menu into voluntary and association-specific components - Displayed saved activities and followed associations in voluntary profile - Enabled voluntary users to edit personal information (name, birth date, city, phone, country) - Implemented email change flow with token regeneration in localStorage - Added avatar upload feature with extension restrictions and filename storage - Introduced reusable EditableFieldComponent for inline editing UX - Developed UploadAvatarComponent with click-to-upload overlay design - Refactored profile and header menus for clarity and consistency - Integrated geolocation: map centers on voluntary's city, sends country to backend - Enabled city search with zoom and filtering of activities within 100km radius - Moved filtering logic into dedicated ActivityFilterService - Applied multiple map and popup fixes (zoom, flyTo, rendering) * refactor(issue-50): simplify effect and improve understanding of calls to actions and app selectors * refactor(issue-99): reviews fixes * feat(issue-99): add auto-focus pin on map to zoom and filter on user city * feat(issue-101): improve general design for create activity - fix login/register modal button style * add ban user(asso and voluntary), contact user to admin actions (#79) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#81) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#82) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#83) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#84) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#85) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#86) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#87) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#88) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#89) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#90) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#91) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#92) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * :construction: wip adding mock for e2e (#93) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#94) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * fix dockerfile (#96) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix dockerfile (#98) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#99) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#102) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#104) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Sébastien DECHAND <125138091+sebastienDOC@users.noreply.github.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin SOLIMAN <122315710+Irwin-SOLIMAN@users.noreply.github.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Development (#109) * feat(issue-50): implement voluntary profile page with editable fields, geolocation, and avatar upload - Created voluntary profile page with dedicated routing and modular components - Split activity menu into voluntary and association-specific components - Displayed saved activities and followed associations in voluntary profile - Enabled voluntary users to edit personal information (name, birth date, city, phone, country) - Implemented email change flow with token regeneration in localStorage - Added avatar upload feature with extension restrictions and filename storage - Introduced reusable EditableFieldComponent for inline editing UX - Developed UploadAvatarComponent with click-to-upload overlay design - Refactored profile and header menus for clarity and consistency - Integrated geolocation: map centers on voluntary's city, sends country to backend - Enabled city search with zoom and filtering of activities within 100km radius - Moved filtering logic into dedicated ActivityFilterService - Applied multiple map and popup fixes (zoom, flyTo, rendering) * refactor(issue-50): simplify effect and improve understanding of calls to actions and app selectors * refactor(issue-99): reviews fixes * feat(issue-99): add auto-focus pin on map to zoom and filter on user city * feat(issue-101): improve general design for create activity - fix login/register modal button style * add ban user(asso and voluntary), contact user to admin actions (#79) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#81) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#82) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#83) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#84) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#85) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#86) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#87) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#88) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#89) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#90) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#91) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#92) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * :construction: wip adding mock for e2e (#93) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#94) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * fix dockerfile (#96) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix dockerfile (#98) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#99) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#102) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#104) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 103/add cookies rgbd acceptance (#107) * :sparkles: added CGU & RGBD * :sparkles: added CGU & RGBD * feat(issue-72): add scroll for activity description (#95) * Hotfix/issue 7777/nginx (#108) * fix nginx * fix apiUrl staging --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Sébastien DECHAND <125138091+sebastienDOC@users.noreply.github.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin SOLIMAN <122315710+Irwin-SOLIMAN@users.noreply.github.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Development (#111) * feat(issue-50): implement voluntary profile page with editable fields, geolocation, and avatar upload - Created voluntary profile page with dedicated routing and modular components - Split activity menu into voluntary and association-specific components - Displayed saved activities and followed associations in voluntary profile - Enabled voluntary users to edit personal information (name, birth date, city, phone, country) - Implemented email change flow with token regeneration in localStorage - Added avatar upload feature with extension restrictions and filename storage - Introduced reusable EditableFieldComponent for inline editing UX - Developed UploadAvatarComponent with click-to-upload overlay design - Refactored profile and header menus for clarity and consistency - Integrated geolocation: map centers on voluntary's city, sends country to backend - Enabled city search with zoom and filtering of activities within 100km radius - Moved filtering logic into dedicated ActivityFilterService - Applied multiple map and popup fixes (zoom, flyTo, rendering) * refactor(issue-50): simplify effect and improve understanding of calls to actions and app selectors * refactor(issue-99): reviews fixes * feat(issue-99): add auto-focus pin on map to zoom and filter on user city * feat(issue-101): improve general design for create activity - fix login/register modal button style * add ban user(asso and voluntary), contact user to admin actions (#79) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#81) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#82) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#83) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#84) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#85) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#86) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#87) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#88) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#89) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#90) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#91) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#92) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * :construction: wip adding mock for e2e (#93) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#94) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * fix dockerfile (#96) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix dockerfile (#98) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#99) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#102) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#104) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 103/add cookies rgbd acceptance (#107) * :sparkles: added CGU & RGBD * :sparkles: added CGU & RGBD * feat(issue-72): add scroll for activity description (#95) * Hotfix/issue 7777/nginx (#108) * fix nginx * fix apiUrl staging --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 100/asso can modify an published activity (#110) * :sparkles: added CGU & RGBD * :sparkles: added CGU & RGBD * :hammer: asso can now also edit published activity if not in the past. + small UI improvement for login modal opening in case of token expired or register * Hotfix/issue 6666/fix staging (#112) * Development (#105) * feat(issue-50): implement voluntary profile page with editable fields, geolocation, and avatar upload - Created voluntary profile page with dedicated routing and modular components - Split activity menu into voluntary and association-specific components - Displayed saved activities and followed associations in voluntary profile - Enabled voluntary users to edit personal information (name, birth date, city, phone, country) - Implemented email change flow with token regeneration in localStorage - Added avatar upload feature with extension restrictions and filename storage - Introduced reusable EditableFieldComponent for inline editing UX - Developed UploadAvatarComponent with click-to-upload overlay design - Refactored profile and header menus for clarity and consistency - Integrated geolocation: map centers on voluntary's city, sends country to backend - Enabled city search with zoom and filtering of activities within 100km radius - Moved filtering logic into dedicated ActivityFilterService - Applied multiple map and popup fixes (zoom, flyTo, rendering) * refactor(issue-50): simplify effect and improve understanding of calls to actions and app selectors * refactor(issue-99): reviews fixes * feat(issue-99): add auto-focus pin on map to zoom and filter on user city * feat(issue-101): improve general design for create activity - fix login/register modal button style * add ban user(asso and voluntary), contact user to admin actions (#79) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#81) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#82) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#83) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#84) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#85) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#86) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#87) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#88) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#89) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#90) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#91) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Feature/issue 2/docker (#92) * CI CD works !... for development * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * :construction: wip adding mock for e2e (#93) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Emmanuelle B <128315974+EmmanuelleBonoli@users.noreply.github.com> * Feature/issue 2/docker (#94) * wip: start implement ci * test update api url * test full aide pour la ci * :construction: wip adding mock for e2e * mock backend for tests e2e and it works !!! --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * fix dockerfile (#96) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix dockerfile (#98) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#99) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#102) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * fix nginx (#104) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Sébastien DECHAND <125138091+sebastienDOC@users.noreply.github.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> Co-authored-by: Irwin SOLIMAN <122315710+Irwin-SOLIMAN@users.noreply.github.com> Co-authored-by: Irwin <irwin.soliman@gmail.com> * Development (#109) * feat(issue-50): implement voluntary profile page with editable fields, geolocation, and avatar upload - Created voluntary profile page with dedicated routing and modular components - Split activity menu into voluntary and association-specific components - Displayed saved activities and followed associations in voluntary profile - Enabled voluntary users to edit personal information (name, birth date, city, phone, country) - Implemented email change flow with token regeneration in localStorage - Added avatar upload feature with extension restrictions and filename storage - Introduced reusable EditableFieldComponent for inline editing UX - Developed UploadAvatarComponent with click-to-upload overlay design - Refactored profile and header menus for clarity and consistency - Integrated geolocation: map centers on voluntary's city, sends country to backend - Enabled city search with zoom and filtering of activities within 100km radius - Moved filtering logic into dedicated ActivityFilterService - Applied multiple map and popup fixes (zoom, flyTo, rendering) * refactor(issue-50): simplify effect and improve understanding of calls to actions and app selectors * refactor(issue-99): reviews fixes * feat(issue-99): add auto-focus pin on map to zoom and filter on user city * feat(issue-101): improve general design for create activity - fix login/register modal button style * add ban user(asso and voluntary), contact user to admin actions (#79) Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#81) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#82) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#83) * wip: start implement ci * test update api url --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#84) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#85) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/issue 2/docker (#86) * wip: start implement ci * test update api url * test full aide pour la ci --------- Co-authored-by: sebastienDOC <s.dechand21@gmail.com> Co-authored-by: Emmanuelle BONOLI <manu.bonoli@gmail.com> * Feature/i…
1 parent 0c7f69b commit 03111e1

5 files changed

Lines changed: 25 additions & 10 deletions

File tree

.github/workflows/cd.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ jobs:
6565
- name: SSH to VPS and deploy
6666
run: |
6767
TAG=${{ needs.build-and-push.outputs.tag }}
68-
ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_ed25519_frontend ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }} << EOF
68+
ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_ed25519_frontend -p "${{ secrets.VPS_SSH_PORT }}" ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }} << EOF
6969
cd /home/${{ secrets.VPS_USER }}/alasso/frontend/$TAG
7070
docker compose pull
7171
docker compose down

src/app/common/interceptors/error-server.interceptor.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,16 @@ export const errorInterceptor: HttpInterceptorFn = (req, next) => {
1616
let summary = 'Erreur';
1717
let detail = 'Une erreur est survenue. Veuillez réessayer.';
1818
let severity = 'error';
19-
19+
authService.tooManyAttempts(false);
2020
if (error.status >= HttpStatusCode.InternalServerError) {
2121
detail = 'Erreur interne du serveur. Veuillez réessayer plus tard.';
2222
} else if (error.status === HttpStatusCode.NotFound) {
2323
detail = 'La ressource demandée est introuvable.';
2424
} else if (error.status === HttpStatusCode.BadRequest) {
2525
detail = 'Requête invalide.';
26+
} else if (error.status === HttpStatusCode.TooManyRequests) {
27+
detail = 'Trop de tentatives échouées. Veuillez réessayer plus tard.';
28+
authService.tooManyAttempts(true);
2629
} else if (error.status === HttpStatusCode.Forbidden) {
2730
detail = "Vous n'avez pas la permission d'accéder à cette ressource.";
2831
} else if (error.status === HttpStatusCode.Unauthorized) {

src/app/features/authentication/components/login-modal/login-modal.component.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { InputFieldErrorComponent } from 'src/app/common/components/input-field-
1212
import { AuthFacade } from '../../services/auth-facade.service';
1313
import { FormField } from '../../models/form.model';
1414
import { UserLogin } from '../../models/user.model';
15+
import { AuthService } from '../../services/auth.service';
1516

1617
@Component({
1718
selector: 'app-login-modal',
@@ -46,9 +47,11 @@ export class LoginModalComponent {
4647
@Output() openPasswordForgottenModal = new EventEmitter<boolean>();
4748

4849
@Input() visible: boolean = false;
49-
private _auth = inject(AuthFacade);
50+
private _authFacade = inject(AuthFacade);
51+
private _authService = inject(AuthService);
5052
private _fb: FormBuilder = new FormBuilder();
51-
isAuthenticated$ = this._auth.isAuthenticated$;
53+
isAuthenticated$ = this._authFacade.isAuthenticated$;
54+
isBanned$ = this._authService.isbanned$;
5255
openForgotPasswordModal = false;
5356

5457
loginForm = this._fb.group({
@@ -91,11 +94,11 @@ export class LoginModalComponent {
9194
}
9295

9396
const credentials = this.loginForm.value as UserLogin;
94-
this._auth.login(credentials);
97+
this._authFacade.login(credentials);
9598

9699
let loginSuccess = false;
97100

98-
this._auth.isAuthenticated$
101+
this._authFacade.isAuthenticated$
99102
.pipe(
100103
filter(isAuth => isAuth),
101104
take(TAKE_1)
@@ -107,9 +110,13 @@ export class LoginModalComponent {
107110

108111
const timeoutDuration = 100;
109112
setTimeout(() => {
110-
if (!loginSuccess) {
111-
this.error = 'Informations invalides. Veuillez réessayer.';
112-
}
113+
this.isBanned$.pipe(take(1)).subscribe(isBanned => {
114+
if (!loginSuccess && isBanned) {
115+
this.error = 'Trop de tentatives échouées. Veuillez réessayer plus tard.';
116+
} else {
117+
this.error = 'Informations invalides. Veuillez réessayer.';
118+
}
119+
});
113120
}, timeoutDuration);
114121
}
115122

src/app/features/authentication/services/auth.service.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export class AuthService {
1919
private _authState$ = new BehaviorSubject<boolean>(this._checkTokenValidOnInit());
2020
private _openLoginModal$ = new Subject<void>();
2121
openLoginModal$ = this._openLoginModal$.asObservable();
22+
isbanned$ = new BehaviorSubject<boolean>(false);
2223

2324
registerVoluntary(data: VoluntaryRegister): Observable<boolean> {
2425
return this._http.post<boolean>(`${this._apiUrl}/auth/register/voluntary`, data);
@@ -74,6 +75,10 @@ export class AuthService {
7475
localStorage.removeItem('tokenAlAsso');
7576
}
7677

78+
public tooManyAttempts(value: boolean): void {
79+
this.isbanned$.next(value);
80+
}
81+
7782
public clearUserState(): void {
7883
localStorage.removeItem('userState');
7984
}

src/app/features/authentication/store/user.selectors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export const selectAssociationFounder = createSelector(selectUser, user => (user
3030

3131
export const selectAssociationDescription = createSelector(selectUser, user => (user?.type === UserType.Association ? user.description : ''));
3232

33-
export const selectAssociationStats = createSelector(selectUser, user => (user?.type === UserType.Association ? user.statistics ?? [] : []));
33+
export const selectAssociationStats = createSelector(selectUser, user => (user?.type === UserType.Association ? (user.statistics ?? []) : []));
3434

3535
export const selectAssociationLogo = createSelector(selectUser, user =>
3636
user?.type === UserType.Association ? user.associationLogoImage.image : null

0 commit comments

Comments
 (0)