Browse Source

feat: add dynamic template selection

pull/1265/head
natdeanlewissoftwire 3 years ago
parent
commit
c74116f241
  1. 8
      app/controllers/users_controller.rb
  2. 3
      app/models/user.rb
  3. 1
      app/views/devise/confirmations/new.html.erb
  4. 2
      config/initializers/devise.rb
  5. 5
      db/migrate/20230203174815_add_initial_confirmation_sent_to_users.rb
  6. 3
      db/schema.rb

8
app/controllers/users_controller.rb

@ -145,14 +145,14 @@ private
def user_params
if @user == current_user
if current_user.data_coordinator? || current_user.support?
params.require(:user).permit(:email, :name, :password, :password_confirmation, :role, :is_dpo, :is_key_contact)
params.require(:user).permit(:email, :name, :password, :password_confirmation, :role, :is_dpo, :is_key_contact, :initial_confirmation_sent)
else
params.require(:user).permit(:email, :name, :password, :password_confirmation)
params.require(:user).permit(:email, :name, :password, :password_confirmation, :initial_confirmation_sent)
end
elsif current_user.data_coordinator?
params.require(:user).permit(:email, :name, :role, :is_dpo, :is_key_contact, :active)
params.require(:user).permit(:email, :name, :role, :is_dpo, :is_key_contact, :active, :initial_confirmation_sent)
elsif current_user.support?
params.require(:user).permit(:email, :name, :role, :is_dpo, :is_key_contact, :organisation_id, :active)
params.require(:user).permit(:email, :name, :role, :is_dpo, :is_key_contact, :organisation_id, :active, :initial_confirmation_sent)
end
end

3
app/models/user.rb

@ -109,10 +109,11 @@ class User < ApplicationRecord
USER_REACTIVATED_TEMPLATE_ID
elsif was_migrated_from_softwire? && last_sign_in_at.blank?
BETA_ONBOARDING_TEMPLATE_ID
elsif confirmation_sent_at.present?
elsif initial_confirmation_sent
RECONFIRMABLE_TEMPLATE_ID
else
CONFIRMABLE_TEMPLATE_ID
update!(initial_confirmation_sent: true)
end
end

1
app/views/devise/confirmations/new.html.erb

@ -9,7 +9,6 @@
<p class="govuk-body">For security reasons, your join link expired - get another one using the button below (valid for 3 hours).</p>
<%= f.hidden_field :email, value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email) %>
<%= f.govuk_submit "Get a new join link" %>
<% end %>

2
config/initializers/devise.rb

@ -152,7 +152,7 @@ Devise.setup do |config|
# their account can't be confirmed with the token any more.
# Default is nil, meaning there is no restriction on how long a user can take
# before confirming their account.
config.confirm_within = 3.hours
config.confirm_within = 3.seconds
# If true, requires any email changes to be confirmed (exactly the same way as
# initial account confirmation) to be applied. Requires additional unconfirmed_email

5
db/migrate/20230203174815_add_initial_confirmation_sent_to_users.rb

@ -0,0 +1,5 @@
class AddInitialConfirmationSentToUsers < ActiveRecord::Migration[7.0]
def change
add_column :users, :initial_confirmation_sent, :boolean
end
end

3
db/schema.rb

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2023_01_27_102334) do
ActiveRecord::Schema[7.0].define(version: 2023_02_03_174815) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -582,6 +582,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_01_27_102334) do
t.datetime "confirmed_at", precision: nil
t.datetime "confirmation_sent_at", precision: nil
t.string "unconfirmed_email"
t.boolean "initial_confirmation_sent"
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["encrypted_otp_secret_key"], name: "index_users_on_encrypted_otp_secret_key", unique: true

Loading…
Cancel
Save