Skip to content

Commit 3a33b9f

Browse files
authored
2019-11-05-01 (#4481)
2019-11-05-01
2 parents ddfcc12 + ee877e7 commit 3a33b9f

12 files changed

Lines changed: 139 additions & 65 deletions

File tree

app/controllers/admin/instructeurs_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def create
1515
procedure_id = params[:procedure_id]
1616

1717
if @instructeur.nil?
18-
invite_instructeur(params[:instructeur][:email])
18+
invite_instructeur(email)
1919
else
2020
assign_instructeur!
2121
end

app/controllers/application_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ def sendinblue_config
250250
payload: {
251251
DS_SIGN_IN_COUNT: current_user&.sign_in_count,
252252
DS_CREATED_AT: current_administrateur&.created_at,
253-
DS_ACTIVE: current_administrateur&.active?,
253+
DS_ACTIVE: current_user&.active?,
254254
DS_ID: current_administrateur&.id,
255255
DS_GESTIONNAIRE_ID: current_instructeur&.id,
256256
DS_ROLES: current_user_roles

app/controllers/webhook_controller.rb

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,27 @@ class WebhookController < ActionController::Base
44
def helpscout
55
email = params[:customer][:email].downcase
66
user = User.find_by(email: email)
7-
instructeur = user.instructeur
8-
administrateur = user.administrateur
9-
html = []
107

11-
if user
8+
if user.nil?
9+
head :not_found
10+
11+
else
12+
instructeur = user.instructeur
13+
administrateur = user.administrateur
14+
1215
url = manager_user_url(user)
13-
html << link_to_manager(user, url)
14-
end
16+
html = [link_to_manager(user, url)]
1517

16-
if instructeur
17-
url = manager_instructeur_url(instructeur)
18-
html << link_to_manager(instructeur, url)
19-
end
18+
if instructeur
19+
url = manager_instructeur_url(instructeur)
20+
html << link_to_manager(instructeur, url)
21+
end
2022

21-
if administrateur
22-
url = manager_administrateur_url(administrateur)
23-
html << link_to_manager(administrateur, url)
24-
end
23+
if administrateur
24+
url = manager_administrateur_url(administrateur)
25+
html << link_to_manager(administrateur, url)
26+
end
2527

26-
if html.empty?
27-
head :not_found
28-
else
2928
render json: { html: html.join('<br>') }
3029
end
3130
end

app/models/administrateur.rb

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def valid_api_token?(api_token)
4646
end
4747

4848
def registration_state
49-
if active?
49+
if user.active?
5050
'Actif'
5151
elsif user.reset_password_period_valid?
5252
'En attente'
@@ -56,17 +56,7 @@ def registration_state
5656
end
5757

5858
def invitation_expired?
59-
!active? && !user.reset_password_period_valid?
60-
end
61-
62-
def self.reset_password(reset_password_token, password)
63-
administrateur = self.reset_password_by_token({
64-
password: password,
65-
password_confirmation: password,
66-
reset_password_token: reset_password_token
67-
})
68-
69-
administrateur
59+
!user.active? && !user.reset_password_period_valid?
7060
end
7161

7262
def owns?(procedure)
@@ -80,8 +70,4 @@ def instructeur
8070
def can_be_deleted?
8171
dossiers.state_instruction_commencee.none? && procedures.none?
8272
end
83-
84-
def active?
85-
user.last_sign_in_at.present?
86-
end
8773
end

app/models/user.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,13 @@ def invite!
4747
end
4848

4949
def invite_administrateur!(administration_id)
50-
if administrateur.active?
51-
raise "Impossible d'inviter un utilisateur déjà actif !"
50+
reset_password_token = nil
51+
52+
if !active?
53+
reset_password_token = set_reset_password_token
5254
end
5355

54-
reset_password_token = set_reset_password_token
5556
AdministrationMailer.invite_admin(self, reset_password_token, administration_id).deliver_later
56-
57-
reset_password_token
5857
end
5958

6059
def remind_invitation!
@@ -93,6 +92,10 @@ def flipper_id
9392
"User:#{id}"
9493
end
9594

95+
def active?
96+
last_sign_in_at.present?
97+
end
98+
9699
private
97100

98101
def link_invites!

app/services/administrateur_usage_statistics_service.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def administrateur_stats(administrateur)
2929
result = {
3030
ds_sign_in_count: administrateur.user.sign_in_count,
3131
ds_created_at: administrateur.created_at,
32-
ds_active: administrateur.active?,
32+
ds_active: administrateur.user.active?,
3333
ds_id: administrateur.id,
3434
nb_services: nb_services_by_administrateur_id[administrateur.id],
3535
nb_instructeurs: nb_instructeurs_by_administrateur_id[administrateur.id],

app/views/administration_mailer/invite_admin.html.haml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,15 @@
99
%p
1010
Votre compte administrateur a été créé pour l'adresse email #{@admin.email}.
1111

12-
%p
13-
%b
14-
Pour l’activer, cliquez sur le lien suivant :
15-
= link_to(admin_activate_url(token: @reset_password_token), admin_activate_url(token: @reset_password_token))
12+
- if @reset_password_token.present?
13+
%p
14+
%b
15+
Pour l’activer, cliquez sur le lien suivant :
16+
= link_to(admin_activate_url(token: @reset_password_token), admin_activate_url(token: @reset_password_token))
17+
- else
18+
%p
19+
Pour vous connecter, cliquez sur le lien suivant :
20+
= link_to(new_user_session_url, new_user_session_url)
1621

1722
%p
1823
= render partial: "layouts/mailers/bizdev_signature", locals: { author_name: @author_name }
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
require 'spec_helper'
2+
3+
describe WebhookController, type: :controller do
4+
describe '#helpscout' do
5+
before { allow(controller).to receive(:verify_signature!).and_return(true) }
6+
7+
subject(:response) { get :helpscout, params: { customer: { email: customer_email } } }
8+
9+
let(:payload) { JSON.parse(subject.body) }
10+
11+
context 'when there is no matching user' do
12+
let(:customer_email) { 'not-a-user@exemple.fr' }
13+
14+
it 'returns an empty response' do
15+
expect(subject.status).to eq(404)
16+
expect(subject.body).to be_empty
17+
end
18+
end
19+
20+
context 'when there is a matching user' do
21+
let(:user) { create(:user) }
22+
let(:customer_email) { user.email }
23+
24+
it 'returns a 200 response' do
25+
expect(subject.status).to eq(200)
26+
expect(subject.body).to be_present
27+
end
28+
29+
it 'returns a link to the User profile in the Manager' do
30+
expect(payload).to have_key('html')
31+
expect(payload['html']).to have_selector("a[href='#{manager_user_url(user)}']")
32+
end
33+
34+
context 'when there are an associated Instructeur and Administrateur' do
35+
let!(:instructeur) { create(:instructeur, user: user) }
36+
let!(:admin) { create(:administrateur, user: user) }
37+
38+
it 'returns a link to the Instructeur profile in the Manager' do
39+
expect(payload).to have_key('html')
40+
expect(payload['html']).to have_selector("a[href='#{manager_instructeur_url(instructeur)}']")
41+
end
42+
43+
it 'returns a link to the Administrateur profile in the Manager' do
44+
expect(payload).to have_key('html')
45+
expect(payload['html']).to have_selector("a[href='#{manager_administrateur_url(admin)}']")
46+
end
47+
end
48+
end
49+
end
50+
end

spec/features/admin/admin_creation_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
end
1313

1414
scenario 'I can register' do
15-
expect(new_admin.reload.active?).to be(false)
15+
expect(new_admin.reload.user.active?).to be(false)
1616

1717
confirmation_email = open_email(admin_email)
1818
token_params = confirmation_email.body.match(/token=[^"]+/)
@@ -24,6 +24,6 @@
2424

2525
expect(page).to have_content 'Mot de passe enregistré'
2626

27-
expect(new_admin.reload.active?).to be(true)
27+
expect(new_admin.reload.user.active?).to be(true)
2828
end
2929
end

spec/mailers/previews/administration_mailer_preview.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ def invite_admin
1111
AdministrationMailer.invite_admin(administrateur, "12345678", 0)
1212
end
1313

14+
def invite_admin_whose_already_has_an_account
15+
AdministrationMailer.invite_admin(administrateur, nil, 0)
16+
end
17+
1418
def refuse_admin
1519
AdministrationMailer.refuse_admin('bad_admin@pipo.com')
1620
end

0 commit comments

Comments
 (0)