egov_utils 0.1.37 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/egov_utils/groups_controller.rb +21 -1
- data/app/controllers/egov_utils/passwords_controller.rb +34 -0
- data/app/controllers/egov_utils/sessions_controller.rb +1 -0
- data/app/controllers/egov_utils/users_controller.rb +5 -1
- data/app/helpers/egov_utils/groups_helper.rb +9 -0
- data/app/mailers/egov_utils/user_mailer.rb +11 -0
- data/app/models/egov_utils/group.rb +7 -0
- data/app/models/egov_utils/user.rb +53 -2
- data/app/views/common/modal_action.js.erb +1 -0
- data/app/views/egov_utils/groups/_form.html.haml +1 -0
- data/app/views/egov_utils/groups/_groups_tab.html.haml +6 -1
- data/app/views/egov_utils/groups/new_users.html.haml +8 -0
- data/app/views/egov_utils/groups/show.html.haml +8 -0
- data/app/views/egov_utils/passwords/edit.html.haml +6 -0
- data/app/views/egov_utils/passwords/new.html.haml +0 -0
- data/app/views/egov_utils/user_mailer/account_information.html.erb +12 -0
- data/app/views/egov_utils/user_mailer/account_information.text.erb +8 -0
- data/app/views/egov_utils/user_mailer/confirmation_email.html.erb +3 -7
- data/app/views/egov_utils/user_mailer/password_change_info.html.erb +3 -0
- data/app/views/egov_utils/user_mailer/password_change_info.text.erb +1 -0
- data/app/views/egov_utils/users/_form.html.haml +24 -6
- data/app/views/egov_utils/users/_users_tab.html.haml +6 -2
- data/app/views/egov_utils/users/index.html.haml +1 -1
- data/app/views/layouts/egov_utils/mailer.html.erb +6 -0
- data/app/views/layouts/egov_utils/mailer.text.erb +6 -0
- data/config/locales/cs.yml +23 -0
- data/config/routes.rb +8 -1
- data/db/migrate/20180125133500_add_password_generation_to_egov_utils_users.rb +6 -0
- data/db/migrate/20180126131416_create_egov_utils_groups_users.rb +8 -0
- data/lib/bootstrap_form/datetimepicker.rb +1 -1
- data/lib/bootstrap_form/helpers/bootstrap4.rb +0 -1
- data/lib/egov_utils/engine.rb +6 -6
- data/lib/egov_utils/user_utils/application_controller_patch.rb +19 -1
- data/lib/egov_utils/version.rb +1 -1
- metadata +17 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1eee02ae4029cc5582c5e991adb3010ffb6e7a5087c98b4561f20ec62b7100de
|
4
|
+
data.tar.gz: 62cec3d7e6153323f0b9599fc58b44fae8ef4d8c13f5550ca9a096bf380370e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0faa5cb9e202f159c1305da4566e50a298ad4d886a9f3079f895651249b1aa968574a17d5bc12666102defd0dcdd2f875f9ded7d0796b64e2e31e84352c10fc3
|
7
|
+
data.tar.gz: 63c5ad465bec8724b8c240d05d5363dbcf13fb0105448eb342934ab38ae7af90aedfdd33c5f7a8326c3ffb0a50f0db6b5375f1bf2fdd60a0856fa627e5f67088
|
@@ -9,10 +9,13 @@ module EgovUtils
|
|
9
9
|
@groups = EgovUtils::Group.accessible_by(current_ability)
|
10
10
|
end
|
11
11
|
|
12
|
+
def show
|
13
|
+
end
|
14
|
+
|
12
15
|
def create
|
13
16
|
respond_to do |format|
|
14
17
|
if @group.save
|
15
|
-
format.html{ redirect_to
|
18
|
+
format.html{ redirect_to egov_utils.users_path, notice: t('success_created') }
|
16
19
|
format.json{ render json: @group, status: :created }
|
17
20
|
else
|
18
21
|
format.html{ render 'new' }
|
@@ -21,6 +24,23 @@ module EgovUtils
|
|
21
24
|
end
|
22
25
|
end
|
23
26
|
|
27
|
+
def new_users
|
28
|
+
@principals = EgovUtils::User.active.not_in_group(@group)
|
29
|
+
respond_to do |format|
|
30
|
+
format.html
|
31
|
+
format.js { render_modal_js }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def add_users
|
36
|
+
@users = User.not_in_group(@group).where(:id => (params[:user_id] || params[:user_ids])).to_a
|
37
|
+
@group.users << @users
|
38
|
+
respond_to do |format|
|
39
|
+
format.html { redirect_to group_path(@group) }
|
40
|
+
format.json { head :ok }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
24
44
|
private
|
25
45
|
|
26
46
|
def create_params
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_dependency "egov_utils/application_controller"
|
2
|
+
|
3
|
+
module EgovUtils
|
4
|
+
class PasswordsController < ApplicationController
|
5
|
+
|
6
|
+
skip_before_action :check_password_change
|
7
|
+
|
8
|
+
def edit
|
9
|
+
@user = current_user
|
10
|
+
end
|
11
|
+
|
12
|
+
def update
|
13
|
+
@user = current_user
|
14
|
+
if @user.password_change_possible? && @user.password_check?(params[:password_change][:current_password])
|
15
|
+
@user.attributes = password_change_params
|
16
|
+
@user.must_change_password = false
|
17
|
+
end
|
18
|
+
if @user.save
|
19
|
+
flash[:notice] = t(:notice_password_changed)
|
20
|
+
redirect_to main_app.root_path
|
21
|
+
else
|
22
|
+
flash[:warning] = t(:warning_password_not_changed)
|
23
|
+
redirect_to edit_password_path(@user)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def password_change_params
|
30
|
+
params.require(:password_change).permit(:password, :password_confirmation)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -13,6 +13,7 @@ module EgovUtils
|
|
13
13
|
providers
|
14
14
|
@users = EgovUtils::User.accessible_by(current_ability).order(:provider)
|
15
15
|
@groups = EgovUtils::Group.accessible_by(current_ability).order(:provider)
|
16
|
+
@new_user = EgovUtils::User.new(generate_password: true)
|
16
17
|
end
|
17
18
|
|
18
19
|
def new
|
@@ -28,6 +29,7 @@ module EgovUtils
|
|
28
29
|
UserMailer.confirmation_email(@user).deliver_later
|
29
30
|
flash[:notice] = t('notice_signeup_with_mail')
|
30
31
|
else
|
32
|
+
UserMailer.account_information(@user, @user.password).deliver_later if @user.auth_source.nil?
|
31
33
|
flash[:notice] = t('activerecord.successful.messages.created', model: User.model_name.human)
|
32
34
|
end
|
33
35
|
format.html{ redirect_to main_app.root_path }
|
@@ -84,7 +86,9 @@ module EgovUtils
|
|
84
86
|
end
|
85
87
|
|
86
88
|
def create_params
|
87
|
-
|
89
|
+
params_to_permit = [:login, :mail, :password, :password_confirmation, :provider, :firstname, :lastname]
|
90
|
+
params_to_permit << :generate_password if current_user.logged?
|
91
|
+
params.require(:user).permit(*params_to_permit)
|
88
92
|
end
|
89
93
|
end
|
90
94
|
end
|
@@ -1,4 +1,13 @@
|
|
1
1
|
module EgovUtils
|
2
2
|
module GroupsHelper
|
3
|
+
|
4
|
+
def principals_check_box_tags(name, principals)
|
5
|
+
s = ''
|
6
|
+
principals.each do |principal|
|
7
|
+
s << "<label>#{ check_box_tag name, principal.id, false, :id => nil } #{h principal}</label>\n"
|
8
|
+
end
|
9
|
+
s.html_safe
|
10
|
+
end
|
11
|
+
|
3
12
|
end
|
4
13
|
end
|
@@ -6,5 +6,16 @@ module EgovUtils
|
|
6
6
|
mail(to: user.mail, subject: t(:app_name))
|
7
7
|
end
|
8
8
|
|
9
|
+
def account_information(user, password)
|
10
|
+
@user = user
|
11
|
+
@password = password
|
12
|
+
mail(to: user.mail, subject: t(:app_name))
|
13
|
+
end
|
14
|
+
|
15
|
+
def password_change_info(user)
|
16
|
+
@user = user
|
17
|
+
mail(to: user.mail, subject: t(:app_name))
|
18
|
+
end
|
19
|
+
|
9
20
|
end
|
10
21
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require_dependency 'egov_utils/auth_source'
|
2
2
|
module EgovUtils
|
3
3
|
class Group < Principal
|
4
|
+
|
5
|
+
has_and_belongs_to_many :users
|
6
|
+
|
4
7
|
validates :name, presence: true, uniqueness: true
|
5
8
|
validates :ldap_uid, uniqueness: true, allow_nil: true
|
6
9
|
|
@@ -8,6 +11,10 @@ module EgovUtils
|
|
8
11
|
EgovUtils::Organization.where(domain: domains)
|
9
12
|
end
|
10
13
|
|
14
|
+
def allow_member_assign?
|
15
|
+
provider.nil?
|
16
|
+
end
|
17
|
+
|
11
18
|
def members
|
12
19
|
|
13
20
|
end
|
@@ -4,22 +4,39 @@ require 'request_store_rails'
|
|
4
4
|
module EgovUtils
|
5
5
|
class User < Principal
|
6
6
|
|
7
|
+
has_and_belongs_to_many :groups
|
8
|
+
|
7
9
|
serialize :roles, Array
|
8
10
|
|
9
11
|
has_secure_password validations: false
|
10
12
|
|
11
13
|
validates_confirmation_of :password, if: lambda { |m| m.password.present? }
|
12
14
|
validates_presence_of :password, on: :create, unless: :provider?
|
15
|
+
validates_presence_of :password_confirmation, if: lambda { |m| m.password.present? }
|
13
16
|
validates :login, uniqueness: true
|
14
17
|
|
15
18
|
before_validation :generate_confirmation_code, unless: :provider?
|
19
|
+
before_validation :generate_password_if_needed
|
16
20
|
|
17
|
-
scope :active,
|
21
|
+
scope :active, -> { where(active: true) }
|
18
22
|
scope :inactive, -> { where(active: false) }
|
19
23
|
|
24
|
+
scope :in_group, ->(group){
|
25
|
+
group_id = group.is_a?(EgovUtils::Group) ? group.id : group.to_i
|
26
|
+
at = Arel::Table.new('egov_utils_groups_users', as: 'gu')
|
27
|
+
where( arel_table[:id].in( at.project(at[:user_id]).where(at[:group_id].eq(group_id)) ) )
|
28
|
+
}
|
29
|
+
scope :not_in_group, ->(group){
|
30
|
+
group_id = group.is_a?(EgovUtils::Group) ? group.id : group.to_i
|
31
|
+
at = Arel::Table.new('egov_utils_groups_users', as: 'gu')
|
32
|
+
where(arel_table[:id].not_in( at.project(at[:user_id]).where(at[:group_id].eq(group_id)) ))
|
33
|
+
}
|
34
|
+
|
20
35
|
cattr_accessor :default_role
|
21
36
|
self.default_role = nil
|
22
37
|
|
38
|
+
attribute :generate_password, :boolean, default: false
|
39
|
+
|
23
40
|
def self.authenticate(login, password, active_only=true)
|
24
41
|
login = login.to_s
|
25
42
|
password = password.to_s
|
@@ -61,6 +78,10 @@ module EgovUtils
|
|
61
78
|
RequestLocals.fetch(:current_user) { User.anonymous }
|
62
79
|
end
|
63
80
|
|
81
|
+
def to_s
|
82
|
+
fullname
|
83
|
+
end
|
84
|
+
|
64
85
|
def roles
|
65
86
|
logged? ? super : ['anonymous']
|
66
87
|
end
|
@@ -77,6 +98,10 @@ module EgovUtils
|
|
77
98
|
end
|
78
99
|
end
|
79
100
|
|
101
|
+
def password_change_possible?
|
102
|
+
!provider.present?
|
103
|
+
end
|
104
|
+
|
80
105
|
def logged?
|
81
106
|
persisted?
|
82
107
|
end
|
@@ -110,7 +135,7 @@ module EgovUtils
|
|
110
135
|
end
|
111
136
|
|
112
137
|
def groups
|
113
|
-
ldap_groups
|
138
|
+
super.to_a.concat( Array.wrap(ldap_groups) )
|
114
139
|
end
|
115
140
|
|
116
141
|
def ldap_dn
|
@@ -130,11 +155,37 @@ module EgovUtils
|
|
130
155
|
end
|
131
156
|
end
|
132
157
|
|
158
|
+
def must_change_password?
|
159
|
+
(super || password_expired?) && !provider?
|
160
|
+
end
|
161
|
+
|
162
|
+
def password_expired?
|
163
|
+
false
|
164
|
+
end
|
165
|
+
|
133
166
|
private
|
134
167
|
|
135
168
|
def generate_confirmation_code
|
136
169
|
self.confirmation_code ||= SecureRandom.hex
|
137
170
|
end
|
138
171
|
|
172
|
+
def generate_password_if_needed
|
173
|
+
if generate_password? && !provider?
|
174
|
+
set_random_password(10)
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
def set_random_password(length=40)
|
179
|
+
chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
|
180
|
+
chars -= %w(0 O 1 l)
|
181
|
+
password = ''
|
182
|
+
length.times {|i| password << chars[SecureRandom.random_number(chars.size)] }
|
183
|
+
self.password = password
|
184
|
+
self.password_confirmation = password
|
185
|
+
self.must_change_password = true
|
186
|
+
self.password_changed_at = Time.now
|
187
|
+
self
|
188
|
+
end
|
189
|
+
|
139
190
|
end
|
140
191
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
eGovUtilities.showModal('<%= j render template: "#{@partial_scope}/#{@action}.html" %>')
|
@@ -0,0 +1 @@
|
|
1
|
+
= form.text_field(:name)
|
@@ -1,3 +1,8 @@
|
|
1
|
+
= bootstrap_form_for(EgovUtils::Group.new) do |f|
|
2
|
+
= render 'egov_utils/groups/form', form: f
|
3
|
+
.form-actions
|
4
|
+
= f.submit
|
5
|
+
|
1
6
|
%table#groups.table
|
2
7
|
%thead
|
3
8
|
%tr
|
@@ -7,7 +12,7 @@
|
|
7
12
|
%tbody
|
8
13
|
- groups.each do |group|
|
9
14
|
%tr
|
10
|
-
%td= group.name
|
15
|
+
%td= link_to(group.name, group)
|
11
16
|
%td= group.provider
|
12
17
|
- if can?(:manage, group)
|
13
18
|
%td.roles{data: {roles: group.roles, id: group.id}}= group.roles.join(', ')
|
@@ -0,0 +1,8 @@
|
|
1
|
+
%h2= t('common_labels.new_record', model: EgovUtils::User.model_name.human)
|
2
|
+
|
3
|
+
= bootstrap_form_for(@group, url: users_group_path(@group), method: :post) do |f|
|
4
|
+
.objects-selection
|
5
|
+
#new_group_users
|
6
|
+
= principals_check_box_tags('user_ids[]', @principals)
|
7
|
+
.form-actions
|
8
|
+
= f.submit t('button_add')
|
File without changes
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<p>
|
2
|
+
v aplikaci <%= t(:app_name) %> Vám byl vytvořen přístup.
|
3
|
+
Vaše přístupové údaje jsou:
|
4
|
+
</p>
|
5
|
+
<ul>
|
6
|
+
<li>login: <%= @user.login %></li>
|
7
|
+
<li>heslo: <%= @password %></li>
|
8
|
+
</ul>
|
9
|
+
|
10
|
+
<p>
|
11
|
+
Po prvním přihlášení budete vyzváni ke změně hesla.
|
12
|
+
</p>
|
@@ -1,7 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
<br />
|
5
|
-
S pozdravem<br />
|
6
|
-
Ministerstvo spravedlnosti<br />
|
7
|
-
Odbor Informatiky
|
1
|
+
<p>
|
2
|
+
vítejte v aplikaci <%= t(:app_name) %>, pro aktivaci vašeho účtu klikněte prosím <%= link_to 'sem', confirm_user_url(@user.confirmation_code) %>.
|
3
|
+
</p>
|
@@ -0,0 +1 @@
|
|
1
|
+
Vaše heslo bylo právě změněno, pokud jste změnu neprovedl/a Vy, prosím kontaktujte podporu aplikace.
|
@@ -1,6 +1,24 @@
|
|
1
|
-
= form.
|
2
|
-
|
3
|
-
= form.
|
4
|
-
|
5
|
-
|
6
|
-
= form.
|
1
|
+
- box_id = "user_#{form.object.id || 'new'}"
|
2
|
+
%div{id: box_id}
|
3
|
+
= form.text_field :login
|
4
|
+
/= form.text_field :mail
|
5
|
+
- if current_user.logged?
|
6
|
+
= form.check_box :generate_password, class: 'generate_password'
|
7
|
+
.passwords
|
8
|
+
= form.password_field :password
|
9
|
+
= form.password_field :password_confirmation
|
10
|
+
= form.text_field :firstname
|
11
|
+
= form.text_field :lastname
|
12
|
+
|
13
|
+
:javascript
|
14
|
+
$(function(){
|
15
|
+
function toggle_paswords(state){
|
16
|
+
var $passwd = $('##{box_id} .passwords');
|
17
|
+
$passwd.find(':input').prop('disabled', !state);
|
18
|
+
$passwd.toggle(state);
|
19
|
+
}
|
20
|
+
|
21
|
+
var $generate_check = $('##{box_id} .generate_password');
|
22
|
+
toggle_paswords(!$generate_check.is(':checked'))
|
23
|
+
$generate_check.on('change', function(evt){ toggle_paswords(!$(this).is(':checked')) });
|
24
|
+
});
|
@@ -2,8 +2,9 @@
|
|
2
2
|
%thead
|
3
3
|
%tr
|
4
4
|
%th= t('model_attributes.user.fullname')
|
5
|
-
%th= EgovUtils::User.human_attribute_name('roles')
|
6
5
|
%th= EgovUtils::User.human_attribute_name('provider')
|
6
|
+
%th= EgovUtils::User.human_attribute_name('roles')
|
7
|
+
%th= EgovUtils::User.human_attribute_name('groups')
|
7
8
|
%th= t('label_actions')
|
8
9
|
%tbody
|
9
10
|
- users.each do |user|
|
@@ -13,7 +14,10 @@
|
|
13
14
|
- if can?(:manage, user)
|
14
15
|
%td.roles{data: {roles: user.roles, id: user.id}}= user.roles.join(', ')
|
15
16
|
- else
|
16
|
-
%td
|
17
|
+
%td= user.roles.join(', ')
|
18
|
+
%td
|
19
|
+
- user.groups.each do |g|
|
20
|
+
%span= g.name
|
17
21
|
%td
|
18
22
|
= button_to(t('label_delete'), user_path(user), method: :delete, class: 'btn btn-warning btn-sm')
|
19
23
|
- unless user.active?
|
@@ -20,7 +20,7 @@
|
|
20
20
|
= render 'egov_utils/users/ldap_search'
|
21
21
|
#create.tab-pane.fade{role: 'tabpanel', 'aria-labelledby'=>'create_tab'}
|
22
22
|
%h3= t('label_new')
|
23
|
-
= bootstrap_form_for(
|
23
|
+
= bootstrap_form_for(@new_user) do |f|
|
24
24
|
= render 'egov_utils/users/form', form: f
|
25
25
|
.form-actions
|
26
26
|
= f.submit
|
data/config/locales/cs.yml
CHANGED
@@ -13,6 +13,8 @@ cs:
|
|
13
13
|
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.
|
14
14
|
ok: Rozumím
|
15
15
|
|
16
|
+
button_add: Přidat
|
17
|
+
|
16
18
|
ministery_justice_name: Ministerstvo spravedlnosti ČR
|
17
19
|
label_no_records: Žádné záznamy k zobrazení
|
18
20
|
|
@@ -22,7 +24,10 @@ cs:
|
|
22
24
|
notice_account_locked: Váš účet byl uzamčen správcem aplikace
|
23
25
|
notice_logout: Byl/a jste úspěšně odhlášen/a
|
24
26
|
notice_signeup_with_mail: Registrace proběhla úspěšně, byl Vám odeslán potvrzovací e-mail, prosím zkontrolujte svou poštu.
|
27
|
+
notice_password_changed: Vaše heslo bylo úspěšně změněno
|
25
28
|
success_user_confirm: Váše e-mailová adresa byla potvrzena. Nyní se již můžete přihlásit.
|
29
|
+
error_password_expired: Platnost vašeho hesla vypršela. Prosím změňte ho.
|
30
|
+
warning_password_not_changed: Heslo nebylo změněno, zadali jste všechna hesla správně?
|
26
31
|
|
27
32
|
label_approve: Schválit
|
28
33
|
label_new: Nový
|
@@ -37,6 +42,7 @@ cs:
|
|
37
42
|
label_search: Vyhledat
|
38
43
|
label_delete: Smazat
|
39
44
|
label_actions: Akce
|
45
|
+
label_add_group_member: Přidat uživatele
|
40
46
|
|
41
47
|
text_born_on_at: "Narozen %{date} v %{place}"
|
42
48
|
|
@@ -65,6 +71,7 @@ cs:
|
|
65
71
|
lastname: Příjmení
|
66
72
|
fullname: Jméno a příjmení
|
67
73
|
roles: Role
|
74
|
+
generate_password: Generovat heslo
|
68
75
|
egov_utils/group:
|
69
76
|
roles: Role
|
70
77
|
egov_utils/address:
|
@@ -91,6 +98,10 @@ cs:
|
|
91
98
|
profile:
|
92
99
|
too_many_authors: Příliš mnoho autorů
|
93
100
|
|
101
|
+
model_help_messages: &my_help_messages
|
102
|
+
egov_utils/user:
|
103
|
+
generate_password: Heslo bude vygenerováno a posláno uživateli na e-mail, při prvním přihlášení bude heslo muset změnit.
|
104
|
+
|
94
105
|
|
95
106
|
labels: &my_labels
|
96
107
|
user:
|
@@ -98,12 +109,22 @@ cs:
|
|
98
109
|
session:
|
99
110
|
username: Přihlašovací jméno
|
100
111
|
password: Heslo
|
112
|
+
password_change:
|
113
|
+
current_password: Současné heslo
|
114
|
+
password: Heslo
|
115
|
+
password_confirmation: Potvrzení hesla
|
116
|
+
|
117
|
+
submits: &my_submits
|
118
|
+
password_change:
|
119
|
+
submit: Změnit heslo
|
101
120
|
|
102
121
|
activerecord:
|
103
122
|
models:
|
104
123
|
<<: *my_models
|
105
124
|
attributes:
|
106
125
|
<<: *my_attributes
|
126
|
+
help:
|
127
|
+
<<: *my_help_messages
|
107
128
|
errors:
|
108
129
|
models:
|
109
130
|
<<: *my_model_errors
|
@@ -121,6 +142,8 @@ cs:
|
|
121
142
|
helpers:
|
122
143
|
label:
|
123
144
|
<<: *my_labels
|
145
|
+
submit:
|
146
|
+
<<: *my_submits
|
124
147
|
|
125
148
|
|
126
149
|
errors:
|
data/config/routes.rb
CHANGED
@@ -14,9 +14,16 @@ EgovUtils::Engine.routes.draw do
|
|
14
14
|
|
15
15
|
resources :people
|
16
16
|
|
17
|
-
resources :groups
|
17
|
+
resources :groups do
|
18
|
+
member do
|
19
|
+
get '/users/new', to: 'groups#new_users', as: 'new_users'
|
20
|
+
post '/users', to: 'groups#add_users', as: 'users'
|
21
|
+
end
|
22
|
+
end
|
18
23
|
resources :roles
|
19
24
|
|
25
|
+
resources :passwords
|
26
|
+
|
20
27
|
# post '/auth/:provider/callback', to: 'sessions#create'
|
21
28
|
|
22
29
|
get '/address/validate_ruian' => 'addresses#validate_ruian', as: :validate_ruian
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class CreateEgovUtilsGroupsUsers < ActiveRecord::Migration[5.1]
|
2
|
+
def change
|
3
|
+
create_table :egov_utils_groups_users do |t|
|
4
|
+
t.references :group, foreign_key: {to_table: :egov_utils_groups}
|
5
|
+
t.references :user, foreign_key: {to_table: :egov_utils_users}
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
data/lib/egov_utils/engine.rb
CHANGED
@@ -42,10 +42,10 @@ module EgovUtils
|
|
42
42
|
ActiveSupport::Reloader.to_prepare do
|
43
43
|
AzaharaSchema::Outputs.register(Grid::ShieldGrid)
|
44
44
|
end
|
45
|
-
ActiveSupport.on_load(:
|
46
|
-
|
47
|
-
|
48
|
-
|
45
|
+
ActiveSupport.on_load(:action_controller_base) do
|
46
|
+
helper EgovUtils::ApplicationHelper
|
47
|
+
helper EgovUtils::GridHelper
|
48
|
+
helper EgovUtils::EnumHelper
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -59,9 +59,9 @@ module EgovUtils
|
|
59
59
|
initializer 'egov_utils.user_setup' do
|
60
60
|
require 'egov_utils/user_utils/role'
|
61
61
|
require_dependency 'ability'
|
62
|
-
ActiveSupport.on_load(:
|
62
|
+
ActiveSupport.on_load(:action_controller_base) do
|
63
63
|
require 'egov_utils/user_utils/application_controller_patch'
|
64
|
-
|
64
|
+
include EgovUtils::UserUtils::ApplicationControllerPatch
|
65
65
|
end
|
66
66
|
# require 'omniauth'
|
67
67
|
# require 'omniauth-kerberos'
|
@@ -7,7 +7,7 @@ module EgovUtils
|
|
7
7
|
included do
|
8
8
|
|
9
9
|
before_action :user_setup, :set_locale
|
10
|
-
before_action :require_login
|
10
|
+
before_action :require_login, :check_password_change
|
11
11
|
|
12
12
|
rescue_from CanCan::AccessDenied do |exception|
|
13
13
|
respond_to do |format|
|
@@ -44,6 +44,12 @@ module EgovUtils
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
+
def render_modal_js(**options)
|
48
|
+
@partial_scope = options[:scope] || params[:controller]
|
49
|
+
@action = options[:action] || params[:action]
|
50
|
+
render 'common/modal_action'
|
51
|
+
end
|
52
|
+
|
47
53
|
protected
|
48
54
|
def find_current_user
|
49
55
|
# existing session
|
@@ -114,6 +120,18 @@ module EgovUtils
|
|
114
120
|
true
|
115
121
|
end
|
116
122
|
|
123
|
+
def check_password_change
|
124
|
+
if current_user.logged? && current_user.must_change_password?
|
125
|
+
respond_to do |format|
|
126
|
+
format.html {
|
127
|
+
flash[:error] = t(:error_password_expired)
|
128
|
+
redirect_to egov_utils.edit_password_path(current_user)
|
129
|
+
}
|
130
|
+
format.json { render json: { error: t(:error_password_expired) }, status: :unauthorized }
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
117
135
|
def require_login?
|
118
136
|
false
|
119
137
|
end
|
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.
|
4
|
+
version: 0.2.0
|
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-01-
|
11
|
+
date: 2018-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -282,14 +282,14 @@ dependencies:
|
|
282
282
|
requirements:
|
283
283
|
- - "~>"
|
284
284
|
- !ruby/object:Gem::Version
|
285
|
-
version: '0.
|
285
|
+
version: '0.2'
|
286
286
|
type: :runtime
|
287
287
|
prerelease: false
|
288
288
|
version_requirements: !ruby/object:Gem::Requirement
|
289
289
|
requirements:
|
290
290
|
- - "~>"
|
291
291
|
- !ruby/object:Gem::Version
|
292
|
-
version: '0.
|
292
|
+
version: '0.2'
|
293
293
|
- !ruby/object:Gem::Dependency
|
294
294
|
name: egon_gate
|
295
295
|
requirement: !ruby/object:Gem::Requirement
|
@@ -365,6 +365,7 @@ files:
|
|
365
365
|
- app/controllers/egov_utils/application_controller.rb
|
366
366
|
- app/controllers/egov_utils/groups_controller.rb
|
367
367
|
- app/controllers/egov_utils/organizations_controller.rb
|
368
|
+
- app/controllers/egov_utils/passwords_controller.rb
|
368
369
|
- app/controllers/egov_utils/people_controller.rb
|
369
370
|
- app/controllers/egov_utils/roles_controller.rb
|
370
371
|
- app/controllers/egov_utils/sessions_controller.rb
|
@@ -399,14 +400,24 @@ files:
|
|
399
400
|
- app/views/azahara_schema/outputs/_grid.html.haml
|
400
401
|
- app/views/common/_grid.html.coffee
|
401
402
|
- app/views/common/_modal.html.haml
|
403
|
+
- app/views/common/modal_action.js.erb
|
402
404
|
- app/views/egov_utils/addresses/_form.html.haml
|
405
|
+
- app/views/egov_utils/groups/_form.html.haml
|
403
406
|
- app/views/egov_utils/groups/_groups_tab.html.haml
|
404
407
|
- app/views/egov_utils/groups/index.html.haml
|
408
|
+
- app/views/egov_utils/groups/new_users.html.haml
|
409
|
+
- app/views/egov_utils/groups/show.html.haml
|
410
|
+
- app/views/egov_utils/passwords/edit.html.haml
|
411
|
+
- app/views/egov_utils/passwords/new.html.haml
|
405
412
|
- app/views/egov_utils/people/_form.html.haml
|
406
413
|
- app/views/egov_utils/roles/index.html.haml
|
407
414
|
- app/views/egov_utils/sessions/new.html.haml
|
415
|
+
- app/views/egov_utils/user_mailer/account_information.html.erb
|
416
|
+
- app/views/egov_utils/user_mailer/account_information.text.erb
|
408
417
|
- app/views/egov_utils/user_mailer/confirmation_email.html.erb
|
409
418
|
- app/views/egov_utils/user_mailer/confirmation_email.text.erb
|
419
|
+
- app/views/egov_utils/user_mailer/password_change_info.html.erb
|
420
|
+
- app/views/egov_utils/user_mailer/password_change_info.text.erb
|
410
421
|
- app/views/egov_utils/users/_form.html.haml
|
411
422
|
- app/views/egov_utils/users/_ldap_search.html.haml
|
412
423
|
- app/views/egov_utils/users/_users_tab.html.haml
|
@@ -433,6 +444,8 @@ files:
|
|
433
444
|
- db/migrate/20171103141234_add_birth_place_and_residence_to_people.rb
|
434
445
|
- db/migrate/20171109172909_add_external_uid_to_groups.rb
|
435
446
|
- db/migrate/20171115142450_add_confirmation_code_to_users.rb
|
447
|
+
- db/migrate/20180125133500_add_password_generation_to_egov_utils_users.rb
|
448
|
+
- db/migrate/20180126131416_create_egov_utils_groups_users.rb
|
436
449
|
- lib/bootstrap_form/check_box_patch.rb
|
437
450
|
- lib/bootstrap_form/custom_file_field.rb
|
438
451
|
- lib/bootstrap_form/datetimepicker.rb
|