Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: SOFIA-local accounts with login (with optional 2fa) #925

Open
wants to merge 12 commits into
base: staging
Choose a base branch
from

Conversation

Ellen-Wittingen
Copy link
Contributor

@Ellen-Wittingen Ellen-Wittingen commented May 8, 2024

Fixes #923.

Streepsysteem account aanmaken

Bij gebruikers kan iemand met de rol treasurer streepsysteem gebruikers inzien en aanmaken:
image
Nieuwe gebruiker aanmaken scherm (precies hetzelfde scherm als voor aanmaken van handmatige gebruikers):
image

Wanneer de treasurer een streepsysteem gebruiker aanmaakt, wordt het ingevulde emailadres gemaild met de volgende mail:
image

Als de persoon dan op de activatielink klikt (/sofia_accounts/activate_account?activation_token=activation_token&user_id=user_id), ziet hij dit (zonder de icoontjes van mijn KeypassXC):
image

Als hij dat invult en drukt op activeren dan wordt een SofiaAccount object aangemaakt, waar de username, password_digest en aanmaak-datum worden opgeslagen. Hij wordt dan ook meteen aan de user gelinkt waar die bij hoort. Als de user wordt verwijderd, wordt ook de SofiaAccount verwijdert.

Na activatie ziet de persoon dit:
image

Instellingen van login

Met de instellingen knop kan de persoon zijn user- en inlog-instellingen wijzingen, zoals de gebruikersnaam, email, wachtwoord, en 2FA instellen (zelfde 2FA menu als op AMBER)
image

Login pagina

Op de login pagina kan je nu kiezen om in te loggen met een streepsysteem account:
image

Dan krijg je deze inlog pagina:
image

Als je 2FA hebt aangezet, krijg je daarna nog een pagina waar je de token moet invullen.

Wachtwoord vergeten

Als je drukt op "wachtwoord vergeten?" krijg je de volgende pagina:
image

Als je je gegevens invult krijg je een email op het emailadres gelinkt aan de user:
image

Als je op de link klikt kom je op het volgende scherm, waar je een nieuw wachtwoord instellen:
image

Als je dat niet binnen 1 dag doet, verloopt de activatiecode. Na het verlopen, moet ze zelf weer op "wachtwoord vergeten?" klikken op de inlog pagina

Resetten van activatie token

Voor het activeren van een nieuw account heeft een user 5 dagen, daarna is de link verlopen. Maar in de activatiemail staat een 2e link, en als je daar op klikt dan wordt er een nieuwe activatielink gemaakt die vanaf dan 1 dag geldig is, en die wordt naar hetzelfde emailadres gemailt:
image

Deactiveren user

Wanneer een treasurer een user deactiveerd kan die user niet meer inloggen met zijn gelinkte streepsysteem account. Het streepsysteem account blijft wel bestaan, want als de user weer wordt geactiveerd dan moet die wel weer kunnen inloggen.

Technische details

  • Nieuw model SofiaAccount waar logingegevens in worden opgeslagen. Deze is altijd gelinkt aan een User en wordt verwijdert wanneer de user wordt verwijdert.
  • In callback_controller staat de logica van het inloggen met een streepsysteem account.
  • OmniAuth module omniauth-identity gebruikt om dit zo te maken.
  • Afgetest met RSpec tests.

@Ellen-Wittingen Ellen-Wittingen self-assigned this May 8, 2024
Copy link

codecov bot commented Dec 31, 2024

Codecov Report

Attention: Patch coverage is 83.89513% with 43 lines in your changes missing coverage. Please review.

Project coverage is 77.13%. Comparing base (0088261) to head (8f0a7b7).

Files with missing lines Patch % Lines
app/mailers/user_mailer.rb 18.18% 18 Missing ⚠️
app/controllers/sofia_accounts_controller.rb 90.83% 12 Missing ⚠️
app/controllers/callbacks_controller.rb 72.41% 8 Missing ⚠️
app/controllers/users_controller.rb 80.00% 5 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           staging     #925      +/-   ##
===========================================
+ Coverage    75.17%   77.13%   +1.95%     
===========================================
  Files           55       59       +4     
  Lines         1116     1369     +253     
===========================================
+ Hits           839     1056     +217     
- Misses         277      313      +36     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@Ellen-Wittingen
Copy link
Contributor Author

Ellen-Wittingen commented Dec 31, 2024

Kan de emails voor account activatie en wachtwoord resetten die daadwerkelijk worden verstuurd niet inzien, want sidekiq weigert lokaal te draaien door een deprecation, zie hieronder. Kan wel de globale preview zien met de url /rails/mailers/user_mailer

2024-12-31T11:26:18.130Z pid=775 tid=5cn WARN: DEPRECATION WARNING: Using legacy connection handling is deprecated. Please set
`legacy_connection_handling` to `false` in your application.

The new connection handling does not support `connection_handlers`
getter and setter.

Read more about how to migrate at: https://guides.rubyonrails.org/active_record_multiple_databases.html#migrate-to-the-new-connection-handling

@lodewiges
Copy link
Contributor

lodewiges commented Jan 1, 2025

Kan de emails voor account activatie en wachtwoord resetten die daadwerkelijk worden verstuurd niet inzien, want sidekiq weigert lokaal te draaien door een deprecation, zie hieronder. Kan wel de globale preview zien met de url /rails/mailers/user_mailer

2024-12-31T11:26:18.130Z pid=775 tid=5cn WARN: DEPRECATION WARNING: Using legacy connection handling is deprecated. Please set
`legacy_connection_handling` to `false` in your application.

The new connection handling does not support `connection_handlers`
getter and setter.

Read more about how to migrate at: https://guides.rubyonrails.org/active_record_multiple_databases.html#migrate-to-the-new-connection-handling

A I see, there are a couple more deprecation issues I will have a look if i can fix a couple in a PR. Are you going to look into fixing this issue or should I look into it,

Update, I have gotten the error go away using config.load_defaults 7.0 in aplication.rb
i am not sure what all the effects are of this change but sofia still runs normaly

@Ellen-Wittingen
Copy link
Contributor Author

TODO: merge conflicts met staging oplossen en RuboCop linting errors oplossen

@Ellen-Wittingen Ellen-Wittingen marked this pull request as ready for review January 4, 2025 16:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Self-contained login option
2 participants