mirror of
https://github.com/Evolix/chexpire.git
synced 2024-06-06 01:24:29 +02:00
Locale can be selected at signup or changed in profile form
This commit is contained in:
parent
5324957174
commit
1fb78a55f9
|
@ -3,16 +3,20 @@ class ApplicationController < ActionController::Base
|
||||||
rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized
|
rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized
|
||||||
|
|
||||||
before_action :configure_devise_parameters, if: :devise_controller?
|
before_action :configure_devise_parameters, if: :devise_controller?
|
||||||
|
before_action :set_locale
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def configure_devise_parameters
|
def configure_devise_parameters
|
||||||
devise_parameter_sanitizer.permit(:sign_up, keys: [:tos_accepted])
|
devise_parameter_sanitizer.permit(:sign_up, keys: [:tos_accepted, :locale])
|
||||||
devise_parameter_sanitizer.permit(:account_update, keys: [:notifications_enabled])
|
devise_parameter_sanitizer.permit(:account_update, keys: [:notifications_enabled, :locale])
|
||||||
end
|
end
|
||||||
|
|
||||||
def user_not_authorized
|
def user_not_authorized
|
||||||
flash[:alert] = I18n.t("user_not_authorized", scope: :flashes)
|
flash[:alert] = I18n.t("user_not_authorized", scope: :flashes)
|
||||||
redirect_to(request.referrer || root_path)
|
redirect_to(request.referrer || root_path)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_locale
|
||||||
|
I18n.locale = current_user.try(:locale) || I18n.default_locale
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
# encrypted_password :string(255) default(""), not null
|
# encrypted_password :string(255) default(""), not null
|
||||||
# last_sign_in_at :datetime
|
# last_sign_in_at :datetime
|
||||||
# last_sign_in_ip :string(255)
|
# last_sign_in_ip :string(255)
|
||||||
|
# locale :string(5) default("en"), not null
|
||||||
# notifications_enabled :boolean default(TRUE), not null
|
# notifications_enabled :boolean default(TRUE), not null
|
||||||
# remember_created_at :datetime
|
# remember_created_at :datetime
|
||||||
# reset_password_sent_at :datetime
|
# reset_password_sent_at :datetime
|
||||||
|
@ -37,6 +38,7 @@ class User < ApplicationRecord
|
||||||
|
|
||||||
has_many :checks
|
has_many :checks
|
||||||
validates :tos_accepted, acceptance: true
|
validates :tos_accepted, acceptance: true
|
||||||
|
validates :locale, inclusion: { in: I18n.available_locales }
|
||||||
|
|
||||||
scope :notifications_disabled, -> { where(notifications_enabled: false) }
|
scope :notifications_disabled, -> { where(notifications_enabled: false) }
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
<%= f.input :password_confirmation, autocomplete: "off" %>
|
<%= f.input :password_confirmation, autocomplete: "off" %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<%= f.input :locale, label: t('.locale'), collection: I18n.available_locales, selected: resource.locale %>
|
||||||
|
|
||||||
<%= f.input :notifications_enabled %>
|
<%= f.input :notifications_enabled %>
|
||||||
|
|
||||||
<%= f.button :submit, t('.update'), class: "btn-primary" %>
|
<%= f.button :submit, t('.update'), class: "btn-primary" %>
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
|
|
||||||
<%= f.input :password_confirmation, autocomplete: "off" %>
|
<%= f.input :password_confirmation, autocomplete: "off" %>
|
||||||
|
|
||||||
|
<%= f.input :locale, label: t('.locale'), collection: I18n.available_locales, selected: I18n.default_locale %>
|
||||||
|
|
||||||
<%= f.input :tos_accepted, label: t('.tos_acceptance_html') %>
|
<%= f.input :tos_accepted, label: t('.tos_acceptance_html') %>
|
||||||
|
|
||||||
<%= f.button :submit, t('.sign_up'), class: "btn-primary" %>
|
<%= f.button :submit, t('.sign_up'), class: "btn-primary" %>
|
||||||
|
|
5
db/migrate/20180613055303_add_locale_to_users.rb
Normal file
5
db/migrate/20180613055303_add_locale_to_users.rb
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
class AddLocaleToUsers < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :users, :locale, :string, null: false, default: "en", limit: 5
|
||||||
|
end
|
||||||
|
end
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2018_06_02_154319) do
|
ActiveRecord::Schema.define(version: 2018_06_13_055303) do
|
||||||
|
|
||||||
create_table "check_logs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
|
create_table "check_logs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
|
||||||
t.bigint "check_id"
|
t.bigint "check_id"
|
||||||
|
@ -72,6 +72,7 @@ ActiveRecord::Schema.define(version: 2018_06_02_154319) do
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.boolean "tos_accepted", default: false, null: false
|
t.boolean "tos_accepted", default: false, null: false
|
||||||
t.boolean "notifications_enabled", default: true, null: false
|
t.boolean "notifications_enabled", default: true, null: false
|
||||||
|
t.string "locale", limit: 5, default: "en", null: false
|
||||||
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
|
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
|
||||||
t.index ["email"], name: "index_users_on_email", unique: true
|
t.index ["email"], name: "index_users_on_email", unique: true
|
||||||
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
|
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
# encrypted_password :string(255) default(""), not null
|
# encrypted_password :string(255) default(""), not null
|
||||||
# last_sign_in_at :datetime
|
# last_sign_in_at :datetime
|
||||||
# last_sign_in_ip :string(255)
|
# last_sign_in_ip :string(255)
|
||||||
|
# locale :string(5) default("en"), not null
|
||||||
# notifications_enabled :boolean default(TRUE), not null
|
# notifications_enabled :boolean default(TRUE), not null
|
||||||
# remember_created_at :datetime
|
# remember_created_at :datetime
|
||||||
# reset_password_sent_at :datetime
|
# reset_password_sent_at :datetime
|
||||||
|
@ -28,6 +29,7 @@
|
||||||
# index_users_on_email (email) UNIQUE
|
# index_users_on_email (email) UNIQUE
|
||||||
# index_users_on_reset_password_token (reset_password_token) UNIQUE
|
# index_users_on_reset_password_token (reset_password_token) UNIQUE
|
||||||
#
|
#
|
||||||
|
|
||||||
require "securerandom"
|
require "securerandom"
|
||||||
|
|
||||||
FactoryBot.define do
|
FactoryBot.define do
|
||||||
|
@ -36,6 +38,7 @@ FactoryBot.define do
|
||||||
password "password"
|
password "password"
|
||||||
confirmed_at Time.new(2018, 4, 1, 12, 0, 0, "+02:00")
|
confirmed_at Time.new(2018, 4, 1, 12, 0, 0, "+02:00")
|
||||||
notifications_enabled true
|
notifications_enabled true
|
||||||
|
locale "en"
|
||||||
tos_accepted true
|
tos_accepted true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
# encrypted_password :string(255) default(""), not null
|
# encrypted_password :string(255) default(""), not null
|
||||||
# last_sign_in_at :datetime
|
# last_sign_in_at :datetime
|
||||||
# last_sign_in_ip :string(255)
|
# last_sign_in_ip :string(255)
|
||||||
|
# locale :string(5) default("en"), not null
|
||||||
# notifications_enabled :boolean default(TRUE), not null
|
# notifications_enabled :boolean default(TRUE), not null
|
||||||
# remember_created_at :datetime
|
# remember_created_at :datetime
|
||||||
# reset_password_sent_at :datetime
|
# reset_password_sent_at :datetime
|
||||||
|
|
Loading…
Reference in a new issue