While migrating users from the previous service to the new one we discovered that email addresses are not unique in the previous service. This means that one user in the new service might relate to multiple users in the previous service.
This change:
- Adds a new LegacyUser model that can belong to a User. Each LegacyUser model has one old_user_id that corresponds to the user ID in the legacy service.
- Updates the user import service so that we create this association for new users
- Creates a Rake script to backfill the association for existing users
* Confirmable
* Remove obsolete rake task
* Skip confirmation for inactive users
* Send beta onboarding template if migrated from Softwire
* Default controller
* Use correct link
* Redirect confirmation to set password
* Confirm account within 3 days
* Only redirect to set password if not previously set
* Rubocop
* Confirm factory bot users
* Set password condition
* Changing email requires reconfirming
* No need to explicitly trigger email, devise does that for us now
* Remove flash banner
* Mock notify
* Mock in the right spec
* Test redirect and text
* User is confirmable
* Rubocop
* Redirect to url so we don't bypass authenticity token
* Update content
* Add test for resend invite flow
* Update link to resend confirmation email
* Rename password reset resend confirmation partial
* Expired link error page
* Remove resend confirmation link
* Update seed
* Expory contact
* Time zone
Co-authored-by: Paul Robert Lloyd <me+git@paulrobertlloyd.com>
This commit fixes the tests that failed as a result of the introduction
of the created_by column in the case log table. The tests were failing as
it is now necessary to have a created_by for a case log
* A support role exists that can see all case logs
* Support role requires 2FA
* Support user sees 2FA code screen on login
* Use email for OTP code
* Ensure resend paths work
* Support user can see additional organisation columns on logs page
* Simpler test
* Remove spec description spaces
* Update controller auth
* Change data protection officer from role to attribute
* Allow changing DPO
* Update wording
* Use radio buttons rather than check box
* Add some integration tests
* Make hidden text dynamic
* Add basic info read page
* Header
* Better org seed
* Use gem component
* Tabs
* Users
* Users is a table rather than a summary list
* Table rows
* User is trackable
* Date format
* View component init
* Add pages and routes to render
* Partials
* Match the prototype design
* Nested layout is nicer
* Except of course they're not the same width
* Add button with wrong link
* Add user routes
* Don't move account route for now
* Add component test
* Rubocop
* Request spec
* Test views
* Add a feature spec for tab switching
* Move styling methods into helper
* PR suggestions
* PR comments
* Add organisation model and user association
* Add user admin panel
* email
* Update seeds
* Update spec
* Case logs belong to organisations
* Org case log association
* Add user case log association
* User case log helper methods
* Org case log relation helpers
* Case log index page only shows your organisations case logs
* No access to tasklist page for logs that aren't associated with your org
* No access to form pages for case logs that aren't owned or managed by your org
* Check answers access
* Submit form access
* Refactor out not found methods
* Allow user admin update without password
* Update feature specs
* Rubocop
* Update case log specs
* Test admin user update without password
* Spec grammar
* Refactor feature specs into smaller units
* DRY spec helpers
* Bump Turbo
* Use database ID assignment everywhere we need ID to reduce flakiness
* Update gemfile.lock
* Email is unique
* Selenium deprecation
* Don't need let bang
* Remove the uneeded extra options
* Remove flaky test mitigations that didn't work
* Use lockstep to remove test flakiness
* Dry up condition evaluation
* Spec admin user edit form
* Test income refused derivation
* Set valid incref
* Test Case Log deletion failures
* Test other household member age validations
* Test all reasonable preference validation paths
* Spec case logs admin table
* Spec admin user admin index
* Dashboard controller panel specs
* Spec panel contents
* Add create specs
* Don't assign non db ids if we don't need them
* Fix specs for new section
* Fix up fields
Devise is a commonly used gem for user authentication and management. Using
rails generators and Devise allows us to get a lot of boilerplate code for
user authentication and management and means we don't have to revinvent the
wheel. Styling will need to be done for the necessary pages and there are
likely to be bits of generated code that can be deleted. This will act as
a starting point to be built up from using TDD.
Devise is a commonly used gem for user authentication and management. Using
rails generators and Devise allows us to get a lot of boilerplate code for
user authentication and management and means we don't have to revinvent the
wheel. Styling will need to be done for the necessary pages and there are
likely to be bits of generated code that can be deleted. This will act as
a starting point to be built up from using TDD.