From c4715b172d213365f64495763265aea746297892 Mon Sep 17 00:00:00 2001 From: Trevor Vallender Date: Fri, 18 Aug 2023 19:31:00 +0100 Subject: [PATCH] Fix user edit/registration - Don't require password to edit - Fix errors on registration form --- app/controllers/users_controller.rb | 1 + app/models/user.rb | 16 +++++++++++++++- app/views/users/new.turbo_stream.erb | 12 ++++++++++++ config/locales/controllers/users/en.yml | 1 + 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 app/views/users/new.turbo_stream.erb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index ba41850..bf6900f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -14,6 +14,7 @@ class UsersController < ApplicationController session[:user_id] = @user.id redirect_to root_path, notice: t(".account_created") else + flash.now.alert = t(".create_failed") render :new end end diff --git a/app/models/user.rb b/app/models/user.rb index 1bc0ca4..12cc701 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -16,7 +16,15 @@ class User < ApplicationRecord validates :email, format: { with: /\A.*@.*\..*\z/ } # Only very basic regex - validates :password, confirmation: true + validates :password, + confirmation: true, + length: { in: 12..300 }, + presence: true, + if: :validate_password? + + validates :password_confirmation, + presence: true, + if: :validate_password? def to_param username @@ -25,4 +33,10 @@ class User < ApplicationRecord def full_name "#{first_name} #{last_names}" end + + private + + def validate_password? + new_record? || password_digest_changed? + end end diff --git a/app/views/users/new.turbo_stream.erb b/app/views/users/new.turbo_stream.erb new file mode 100644 index 0000000..4ff9622 --- /dev/null +++ b/app/views/users/new.turbo_stream.erb @@ -0,0 +1,12 @@ +<%= turbo_stream.replace "flash_wrapper" do %> + <%= render "shared/flash" %> +<% end %> + +<%= turbo_stream.replace "user_form" do %> + <%= render partial: "form", + locals: { + user: @user, + button_text: t(".register"), + title: t(".register"), + } %> +<% end %> diff --git a/config/locales/controllers/users/en.yml b/config/locales/controllers/users/en.yml index afa9a0f..9356f9d 100644 --- a/config/locales/controllers/users/en.yml +++ b/config/locales/controllers/users/en.yml @@ -1,5 +1,6 @@ en: users: + create_failed: Could not create user account, please correct the errors below. account_created: Account created! account_updated: Your details have been updated. update_failed: Could not update your details.