dedicated screen for inspecting user emails
This commit is contained in:
parent
d7fff61d5d
commit
f298d2c2ba
5 changed files with 137 additions and 3 deletions
|
@ -50,6 +50,23 @@ module Manager
|
||||||
def emails
|
def emails
|
||||||
@user = User.find(params[:id])
|
@user = User.find(params[:id])
|
||||||
|
|
||||||
|
transactionnal_api = ::SibApiV3Sdk::TransactionalEmailsApi.new
|
||||||
|
|
||||||
|
@transactionnal_emails = transactionnal_api.get_transac_emails_list(email: @user.email)
|
||||||
|
@events = transactionnal_api.get_email_event_report(email: @user.email, days: 30)
|
||||||
|
|
||||||
|
rescue ::SibApiV3Sdk::ApiError => e
|
||||||
|
flash.alert = "Impossible de récupérer les emails de cet utilisateur chez Sendinblue : #{e.message}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def unblock_user
|
||||||
|
@user = User.find(params[:id])
|
||||||
|
|
||||||
|
transactionnal_api = ::SibApiV3Sdk::TransactionalEmailsApi.new
|
||||||
|
transactionnal_api.smtp_blocked_contacts_email_delete(@user)
|
||||||
|
|
||||||
|
rescue ::SibApiV3Sdk::ApiError => e
|
||||||
|
flash.alert = "Impossible de débloquer cet email auprès de Sendinblue : #{e.message}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
12
app/helpers/email_helper.rb
Normal file
12
app/helpers/email_helper.rb
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
module EmailHelper
|
||||||
|
def event_color_code(email_events)
|
||||||
|
unique_events = email_events.map(&:event)
|
||||||
|
if unique_events.include?('delivered')
|
||||||
|
return 'email-sent'
|
||||||
|
elsif unique_events.include?('blocked') || unique_events.include?('hardBounces')
|
||||||
|
return 'email-blocked'
|
||||||
|
else
|
||||||
|
return ''
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,5 +1,15 @@
|
||||||
<% content_for(:title) { "Emails vers #{@user.email}" } %>
|
<% content_for(:title) { "Emails vers #{@user.email}" } %>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.hidden { display: none }
|
||||||
|
.email-sent { color: green !important}
|
||||||
|
.email-blocked { color: red }
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript" charset="utf-8">
|
||||||
|
function reveal_email(id) {
|
||||||
|
document.querySelector(id).classList.toggle('hidden');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<header class="main-content__header" role="banner">
|
<header class="main-content__header" role="banner">
|
||||||
<h1 class="main-content__page-title">
|
<h1 class="main-content__page-title">
|
||||||
<%= content_for(:title) %>
|
<%= content_for(:title) %>
|
||||||
|
@ -7,7 +17,101 @@
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<section class="main-content__body">
|
<section class="main-content__body">
|
||||||
<dl>
|
<h2>Historique des email</h2>
|
||||||
|
<% if @transactionnal_emails.present? %>
|
||||||
|
<p>
|
||||||
|
Cet historique contient les 30 derniers jours. Pour un recherche plus fine, il faut <a href="https://app-smtp.sendinblue.com/log">fouiller les logs</a>.
|
||||||
|
</p>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="cell-label cell-label--string cell-label--false" scope="col" role="columnheader" aria-sort="none">
|
||||||
|
Émetteur
|
||||||
|
</th>
|
||||||
|
<th class="cell-label cell-label--string cell-label--false" scope="col" role="columnheader" aria-sort="none">
|
||||||
|
Sujet
|
||||||
|
</th>
|
||||||
|
<th class="cell-label cell-label--string cell-label--false" scope="col" role="columnheader" aria-sort="none">
|
||||||
|
Date
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% @transactionnal_emails&.transactional_emails&.reverse&.each do |email| %>
|
||||||
|
<% matching_events = @events&.events&.select { |e| e.message_id == email.message_id } %>
|
||||||
|
<tr class="<%= event_color_code(matching_events) %>">
|
||||||
|
<td class="cell-data cell-data--string" style="">
|
||||||
|
<%= email.from %>
|
||||||
|
</td>
|
||||||
|
<td class="cell-data cell-data--string" style="">
|
||||||
|
<%= email.subject %>
|
||||||
|
</td>
|
||||||
|
<td class="cell-data cell-data--string" style="text-align: center;">
|
||||||
|
<%= l(email.date, format: '%d/%m/%y à %H:%M') %>
|
||||||
|
</td>
|
||||||
|
<td class="cell-data cell-data--string" style="text-align: center;">
|
||||||
|
<ul>
|
||||||
|
|
||||||
</dl>
|
<% matching_events.each do |event|%>
|
||||||
|
<li><%= event.event %></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<% else %>
|
||||||
|
<p>Historique indisponible. Cet email n'existe pas chez Sendinblue, ou nous n'avons pas réussi à échanger.
|
||||||
|
Vous pouvez éventuellement <a href="https://app-smtp.sendinblue.com/log">fouiller leurs logs</a>.</p>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<h2>Problèmes potentiel</h2>
|
||||||
|
|
||||||
|
<% if @user.confirmed? %>
|
||||||
|
<p><strong>Compte activé, n'arrive pas à se connecter</strong> ? <button class="btn btn-secondary btn-small" onclick="reveal_email('#activated-cant-connect')">Voir la suggestion d’email</button></p>
|
||||||
|
<pre class="hidden" id="activated-cant-connect">
|
||||||
|
Bonjour,
|
||||||
|
votre compte est activé de notre côté.
|
||||||
|
Vous pouvez vous connecter à votre compte de deux manières :
|
||||||
|
- à cette adresse, afin de consulter vos dossiers : https://www.demarches-simplifiees.fr/users/sign_in
|
||||||
|
- depuis la page de démarrage d’une démarche qu'on vous a communiqué, afin de déposer un dossier.
|
||||||
|
|
||||||
|
Si vous avez oublié votre mot de passe, vous pouvez aussi en demander un nouveau via:
|
||||||
|
https://www.demarches-simplifiees.fr/users/password/new
|
||||||
|
|
||||||
|
Bien cordialement</pre>
|
||||||
|
<% else %>
|
||||||
|
<p><strong>Ce compte n'est pas activé</strong>. Vous pouvez lui <%= link_to('renvoyer l’email de confirmation', [:resend_confirmation_instructions, namespace, 'user'], method: :post, class: 'button') %>, puis un email. <button class="btn btn-secondary btn-small" onclick="reveal_email('#not-activated')">Voir la suggestion d’email</button> </p>
|
||||||
|
<pre class="hidden" id="not-activated">
|
||||||
|
Bonjour,
|
||||||
|
|
||||||
|
Votre compte n'a pas été confirmé. Je vous ai transmis à nouveau un code de confirmation
|
||||||
|
dans un email séparé ; après avoir cliqué sur le lien qui s'y trouve, vous pourrez vous connecter
|
||||||
|
à votre compte, voir les dossiers déposés et en déposer de nouveaux.
|
||||||
|
|
||||||
|
Si vous avez oublié votre mot de passe, vous pouvez aussi en demander un autre via:
|
||||||
|
https://www.demarches-simplifiees.fr/users/password/new
|
||||||
|
|
||||||
|
Cordialement</pre>
|
||||||
|
<% end %>
|
||||||
|
<p><strong>Compte <a href="https://app-smtp.sendinblue.com/block">bloqué</a> chez Sendinblue ?</strong> Vous pouvez le <%= link_to('débloquer', manager_user_unblock_email_path(@user), method: :put, class: 'button', remote: true) %> puis lui envoyer <button class="btn btn-secondary btn-small" onclick="reveal_email('#unblock_email')">le mail suivant</button></p>
|
||||||
|
<pre class="hidden" id="unblock_email">
|
||||||
|
Bonjour,
|
||||||
|
|
||||||
|
votre email était bloqué par notre prestataire.
|
||||||
|
Je l'ai débloqué, vous devriez recevoir les mails à venir.
|
||||||
|
|
||||||
|
Cela peut arriver si vous, ou ceux qui gèrent vos emails, marquent nos emails comme spam.
|
||||||
|
|
||||||
|
Nous vous invitons donc à autoriser les emails émis depuis demarches-simplifiees.fr
|
||||||
|
|
||||||
|
Bien cordialement</pre>
|
||||||
|
<p><strong>Problème chez Sendinblue ?</strong> Regardez leur <a href="https://status.sendinblue.com/">page de status</a>. <button class="btn btn-secondary btn-small" onclick="reveal_email('#pb-sendinblue')">Voir la suggestion d’email</button></p>
|
||||||
|
<pre class="hidden" id="pb-sendinblue">
|
||||||
|
Bonjour,
|
||||||
|
Désolé, notre prestataire d'envoi d'email subit actuellement des soucis avec sa plateforme ;
|
||||||
|
vous allez recevoir cet email sous peu.
|
||||||
|
|
||||||
|
Bien cordialement,</pre>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
@ -34,7 +34,7 @@ as well as a link to its edit page.
|
||||||
<% if !user.confirmed? %>
|
<% if !user.confirmed? %>
|
||||||
<%= link_to('Renvoyer l’email de confirmation', [:resend_confirmation_instructions, namespace, page.resource], method: :post, class: 'button') %>
|
<%= link_to('Renvoyer l’email de confirmation', [:resend_confirmation_instructions, namespace, page.resource], method: :post, class: 'button') %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<section class="main-content__body">
|
<section class="main-content__body">
|
||||||
|
|
|
@ -32,6 +32,7 @@ Rails.application.routes.draw do
|
||||||
post 'resend_confirmation_instructions', on: :member
|
post 'resend_confirmation_instructions', on: :member
|
||||||
put 'enable_feature', on: :member
|
put 'enable_feature', on: :member
|
||||||
get 'emails', on: :member
|
get 'emails', on: :member
|
||||||
|
put 'unblock_email'
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :instructeurs, only: [:index, :show] do
|
resources :instructeurs, only: [:index, :show] do
|
||||||
|
|
Loading…
Reference in a new issue