egov_utils 0.2.12 → 0.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/egov_utils/passwords_controller.rb +52 -6
- data/app/mailers/egov_utils/user_mailer.rb +5 -0
- data/app/models/egov_utils/user.rb +5 -0
- data/app/views/egov_utils/passwords/new.html.haml +7 -0
- data/app/views/egov_utils/passwords/reset.html.haml +6 -0
- data/app/views/egov_utils/sessions/new.html.haml +3 -1
- data/app/views/egov_utils/user_mailer/password_reset.html.erb +9 -0
- data/app/views/egov_utils/user_mailer/password_reset.text.erb +5 -0
- data/app/views/errors/error_403.html.haml +1 -1
- data/app/views/errors/error_404.html.haml +1 -0
- data/config/locales/cs.yml +9 -1
- data/config/routes.rb +8 -1
- data/lib/egov_utils/settings.rb +5 -0
- data/lib/egov_utils/user_utils/application_controller_patch.rb +9 -0
- data/lib/egov_utils/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0180df0129a941cc5e555901b831867c2540fb9fba09d2ae8ac4d174e07606d7'
|
4
|
+
data.tar.gz: 9790504b20a2987452da2433aa0364de5d0d6b1ad59d3646cfdf3d2b761dda4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c458ee913a5c0b9c6727db5283b971cec87fcbea447ee540d665201addfed1a3ca396fe5019d9d4128348bf717c711330c05e1654fc1bef4849561d90a2935b6
|
7
|
+
data.tar.gz: f455d3005cdaa372d499ac0fc42a288814554249cf8b909ac625b11c10673d098647fefd94c2c7e2fa994af5eecca5fca4473058a7740f70d1f9fdca648632f4
|
@@ -3,7 +3,38 @@ require_dependency "egov_utils/application_controller"
|
|
3
3
|
module EgovUtils
|
4
4
|
class PasswordsController < ApplicationController
|
5
5
|
|
6
|
-
skip_before_action :
|
6
|
+
skip_before_action :require_login, only: [:reset, :send_reset_token, :new, :create]
|
7
|
+
skip_before_action :check_password_change, only: [:edit, :update]
|
8
|
+
|
9
|
+
before_action :find_user_for_reset, only: [:new, :create]
|
10
|
+
|
11
|
+
def reset
|
12
|
+
return render_404 unless EgovUtils::Settings.allow_password_reset?
|
13
|
+
end
|
14
|
+
|
15
|
+
def send_reset_token
|
16
|
+
return render_404 unless EgovUtils::Settings.allow_password_reset?
|
17
|
+
@user = EgovUtils::User.find_by(mail: params[:reset_password][:mail])
|
18
|
+
if @user
|
19
|
+
@token = @user.generate_reset_password_token
|
20
|
+
EgovUtils::UserMailer.password_reset(@user, @token).deliver_later if @user.save
|
21
|
+
end
|
22
|
+
redirect_to egov_utils.reset_passwords_path, notice: t('notice_reset_email_sent')
|
23
|
+
end
|
24
|
+
|
25
|
+
# New password for existing user - password reset
|
26
|
+
def new
|
27
|
+
end
|
28
|
+
def create
|
29
|
+
if change_password!(@user)
|
30
|
+
EgovUtils::UserMailer.password_change_info(@user).deliver_later
|
31
|
+
flash[:notice] = t(:notice_password_changed)
|
32
|
+
redirect_to main_app.root_path
|
33
|
+
else
|
34
|
+
flash[:warning] = t(:warning_password_not_changed)
|
35
|
+
redirect_to reset_passwords
|
36
|
+
end
|
37
|
+
end
|
7
38
|
|
8
39
|
def edit
|
9
40
|
@user = current_user
|
@@ -11,11 +42,8 @@ module EgovUtils
|
|
11
42
|
|
12
43
|
def update
|
13
44
|
@user = current_user
|
14
|
-
if @user.
|
15
|
-
@user.
|
16
|
-
@user.must_change_password = false
|
17
|
-
end
|
18
|
-
if @user.save
|
45
|
+
if @user.password_check?(params[:password_change][:current_password]) && change_password!(@user)
|
46
|
+
EgovUtils::UserMailer.password_change_info(@user).deliver_later
|
19
47
|
flash[:notice] = t(:notice_password_changed)
|
20
48
|
redirect_to main_app.root_path
|
21
49
|
else
|
@@ -26,9 +54,27 @@ module EgovUtils
|
|
26
54
|
|
27
55
|
private
|
28
56
|
|
57
|
+
def find_user_for_reset
|
58
|
+
@token = params[:token]
|
59
|
+
@user = EgovUtils::User.find_by(confirmation_code: @token)
|
60
|
+
if @user.nil? || @user.updated_at < (Time.now - 1.hour)
|
61
|
+
render_404
|
62
|
+
else
|
63
|
+
@user
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
29
67
|
def password_change_params
|
30
68
|
params.require(:password_change).permit(:password, :password_confirmation)
|
31
69
|
end
|
32
70
|
|
71
|
+
# private helpers
|
72
|
+
def change_password!(user)
|
73
|
+
return false unless @user.password_change_possible?
|
74
|
+
user.attributes = password_change_params
|
75
|
+
user.must_change_password = false
|
76
|
+
user.save
|
77
|
+
end
|
78
|
+
|
33
79
|
end
|
34
80
|
end
|
@@ -12,6 +12,11 @@ module EgovUtils
|
|
12
12
|
mail(to: user.mail, subject: t(:app_name))
|
13
13
|
end
|
14
14
|
|
15
|
+
def password_reset(user, token)
|
16
|
+
@user, @token = user, token
|
17
|
+
mail(to: user.mail, subject: t(:app_name))
|
18
|
+
end
|
19
|
+
|
15
20
|
def password_change_info(user)
|
16
21
|
@user = user
|
17
22
|
mail(to: user.mail, subject: t(:app_name))
|
@@ -3,4 +3,6 @@
|
|
3
3
|
= f.password_field(:password)
|
4
4
|
= f.submit t(:label_login)
|
5
5
|
- if EgovUtils::Settings.allow_register?
|
6
|
-
= link_to t('label_signup'), new_user_path, class: 'btn btn-secondary'
|
6
|
+
= link_to t('label_signup'), egov_utils.new_user_path, class: 'btn btn-secondary'
|
7
|
+
- if EgovUtils::Settings.allow_password_reset?
|
8
|
+
= link_to t('label_forgotten_password'), egov_utils.reset_passwords_path
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<p>
|
2
|
+
v aplikaci <%= t(:app_name) %> jste si vyžádal/a změnu hesla, pro provedení této změny klikněte prosím <%= link_to 'sem', new_password_url(@token) %>.
|
3
|
+
</p>
|
4
|
+
<p>
|
5
|
+
Tento odkaz je platný hodinu od vyplnění žádosti.
|
6
|
+
</p>
|
7
|
+
<p>
|
8
|
+
Pokud jste o změnu hesla nežádal/a, tento e-mail ignorujte.
|
9
|
+
</p>
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
= t('error_forbidden')
|
@@ -0,0 +1 @@
|
|
1
|
+
= t('error_not_found')
|
data/config/locales/cs.yml
CHANGED
@@ -22,6 +22,9 @@ cs:
|
|
22
22
|
cookies_text: K ukládání nastavení a správnému fungování využíváme soubory cookies. Používáním webu s jejich používáním souhlasíte.
|
23
23
|
ok: Rozumím
|
24
24
|
|
25
|
+
error_forbidden: Přístup odepřen
|
26
|
+
error_not_found: Nenalezeno
|
27
|
+
|
25
28
|
button_add: Přidat
|
26
29
|
|
27
30
|
ministery_justice_name: Ministerstvo spravedlnosti ČR
|
@@ -34,6 +37,7 @@ cs:
|
|
34
37
|
notice_logout: Byl/a jste úspěšně odhlášen/a
|
35
38
|
notice_signeup_with_mail: Registrace proběhla úspěšně, byl Vám odeslán potvrzovací e-mail, prosím zkontrolujte svou poštu.
|
36
39
|
notice_password_changed: Vaše heslo bylo úspěšně změněno
|
40
|
+
notice_reset_email_sent: E-mail s instrukcemi pro změnu hesla byl odeslán na zadanou e-mailovou adresu.
|
37
41
|
success_user_confirm: Váše e-mailová adresa byla potvrzena. Nyní se již můžete přihlásit.
|
38
42
|
error_password_expired: Platnost vašeho hesla vypršela. Prosím změňte ho.
|
39
43
|
warning_password_not_changed: Heslo nebylo změněno, zadali jste všechna hesla správně?
|
@@ -54,6 +58,8 @@ cs:
|
|
54
58
|
label_actions: Akce
|
55
59
|
label_done: hotovo
|
56
60
|
label_add_group_member: Přidat uživatele
|
61
|
+
label_forgotten_password: Zapomněli jste heslo?
|
62
|
+
label_reset_password: Obnova hesla
|
57
63
|
|
58
64
|
text_born_on_at: "Narozen %{date} v %{place}"
|
59
65
|
|
@@ -123,8 +129,10 @@ cs:
|
|
123
129
|
password: Heslo
|
124
130
|
password_change:
|
125
131
|
current_password: Současné heslo
|
126
|
-
password:
|
132
|
+
password: Nové heslo
|
127
133
|
password_confirmation: Potvrzení hesla
|
134
|
+
reset_password:
|
135
|
+
mail: E-mailová adresa
|
128
136
|
|
129
137
|
submits: &my_submits
|
130
138
|
password_change:
|
data/config/routes.rb
CHANGED
@@ -22,7 +22,14 @@ EgovUtils::Engine.routes.draw do
|
|
22
22
|
end
|
23
23
|
resources :roles
|
24
24
|
|
25
|
-
resources :passwords
|
25
|
+
resources :passwords, only: [:index, :edit, :update] do
|
26
|
+
collection do
|
27
|
+
get 'reset'
|
28
|
+
post 'send_reset_token'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
get 'passwords/new/:token', to: 'passwords#new', as: 'new_password'
|
32
|
+
post 'passwords/:token', to: 'passwords#create', as: 'create_password'
|
26
33
|
|
27
34
|
# post '/auth/:provider/callback', to: 'sessions#create'
|
28
35
|
|
data/lib/egov_utils/settings.rb
CHANGED
@@ -15,9 +15,14 @@ module EgovUtils
|
|
15
15
|
allow_register
|
16
16
|
end
|
17
17
|
|
18
|
+
def allow_password_reset?
|
19
|
+
allow_register? && allow_password_reset
|
20
|
+
end
|
21
|
+
|
18
22
|
end
|
19
23
|
|
20
24
|
Settings['allow_register'] ||= false
|
25
|
+
Settings['allow_password_reset'] ||= true
|
21
26
|
|
22
27
|
Settings['redmine'] ||= Settingslogic.new({})
|
23
28
|
Settings['redmine']['enabled'] ||= false
|
@@ -50,6 +50,15 @@ module EgovUtils
|
|
50
50
|
render 'common/modal_action'
|
51
51
|
end
|
52
52
|
|
53
|
+
def render_404(exception = nil)
|
54
|
+
respond_to do |format|
|
55
|
+
format.json { head :not_found, content_type: 'text/html' }
|
56
|
+
format.html { render template: "errors/error_404", error: exception.try('message'), status: 404 }
|
57
|
+
format.js { head :not_found, content_type: 'text/html' }
|
58
|
+
end
|
59
|
+
return false
|
60
|
+
end
|
61
|
+
|
53
62
|
protected
|
54
63
|
def find_current_user
|
55
64
|
# existing session
|
data/lib/egov_utils/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: egov_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ondřej Ezr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -438,6 +438,7 @@ files:
|
|
438
438
|
- app/views/egov_utils/groups/show.html.haml
|
439
439
|
- app/views/egov_utils/passwords/edit.html.haml
|
440
440
|
- app/views/egov_utils/passwords/new.html.haml
|
441
|
+
- app/views/egov_utils/passwords/reset.html.haml
|
441
442
|
- app/views/egov_utils/people/_form.html.haml
|
442
443
|
- app/views/egov_utils/redmine/issues/index.html.haml
|
443
444
|
- app/views/egov_utils/roles/index.html.haml
|
@@ -448,6 +449,8 @@ files:
|
|
448
449
|
- app/views/egov_utils/user_mailer/confirmation_email.text.erb
|
449
450
|
- app/views/egov_utils/user_mailer/password_change_info.html.erb
|
450
451
|
- app/views/egov_utils/user_mailer/password_change_info.text.erb
|
452
|
+
- app/views/egov_utils/user_mailer/password_reset.html.erb
|
453
|
+
- app/views/egov_utils/user_mailer/password_reset.text.erb
|
451
454
|
- app/views/egov_utils/users/_form.html.haml
|
452
455
|
- app/views/egov_utils/users/_ldap_search.html.haml
|
453
456
|
- app/views/egov_utils/users/_users_tab.html.haml
|
@@ -455,6 +458,7 @@ files:
|
|
455
458
|
- app/views/egov_utils/users/new.html.haml
|
456
459
|
- app/views/egov_utils/users/show.html.haml
|
457
460
|
- app/views/errors/error_403.html.haml
|
461
|
+
- app/views/errors/error_404.html.haml
|
458
462
|
- app/views/layouts/egov_utils/_messages.html.haml
|
459
463
|
- app/views/layouts/egov_utils/application.html.erb
|
460
464
|
- app/views/layouts/egov_utils/mailer.html.erb
|