Skip to content

Commit

Permalink
Merge pull request #1614 from etalab/features/api-part-reporters
Browse files Browse the repository at this point in the history
Introduce group reporters for API Particulier
  • Loading branch information
skelz0r authored Jul 30, 2024
2 parents 94ab4c4 + b9bc624 commit 1a0287f
Show file tree
Hide file tree
Showing 16 changed files with 231 additions and 5 deletions.
20 changes: 20 additions & 0 deletions app/controllers/api_particulier/reporters_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
class APIParticulier::ReportersController < APIParticulier::AuthenticatedUsersController
def show
if reporters_config.exclude?(reporter_group) || reporters_config[reporter_group].exclude?(current_user.email)
redirect_to_root
return
end

@datapasses_for_group_url = MetabaseEmbedService.new(487, { group: params[:id] }).url
end

private

def reporter_group
params[:id].to_sym
end

def reporters_config
Rails.application.credentials.api_particulier_reporters
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class DatapassWebhook::APIParticulier::NotifyReporters < ApplicationInteractor
def call
return if %w[submit approve].exclude?(context.event)

reporters_config.each_key do |group_name|
next unless scopes.any? { |scope| scope.start_with?("#{group_name}_") }

APIParticulier::ReportersMailer.with(group: group_name).send(context.event).deliver_later
end
end

private

def reporters_config
Rails.application.credentials.api_particulier_reporters
end

def scopes
context.data['pass']['scopes'].map { |code, bool|
code if bool
}.compact
end
end
23 changes: 23 additions & 0 deletions app/mailers/api_particulier/reporters_mailer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class APIParticulier::ReportersMailer < APIParticulierMailer
%w[
submit
approve
].each do |event|
define_method(event) do
group = params[:group]

return if reporters_config[group].blank?

mail(
bcc: reporters_config[group],
subject: t('.subject', group:)
)
end
end

private

def reporters_config
Rails.application.credentials.api_particulier_reporters
end
end
3 changes: 2 additions & 1 deletion app/organizers/datapass_webhook/api_particulier.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class APIParticulier < ApplicationOrganizer
::DatapassWebhook::RevokeCurrentToken,
::DatapassWebhook::UpdateMailjetContacts,
::DatapassWebhook::ExtractMailjetVariables,
::DatapassWebhook::ScheduleAuthorizationRequestEmails
::DatapassWebhook::ScheduleAuthorizationRequestEmails,
::DatapassWebhook::APIParticulier::NotifyReporters
end
end
4 changes: 4 additions & 0 deletions app/views/api_particulier/reporters/show.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<h1>
Habilitations liées aux données '<%= params[:id] %>'
</h1>
<%= render partial: 'shared/metabase', locals: { metabase_url: @datapasses_for_group_url } %>
8 changes: 8 additions & 0 deletions app/views/api_particulier/reporters_mailer/approve.text.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Bonjour,

Une nouvelle demande vient d'être validée pour l'ensemble de données associé au groupe '<%= params[:group] %>'.

Vous pouvez consulter la liste des demandes relatives aux données associé au groupe '<%= params[:group] %>' sur le lien suivant : <%= api_particulier_dashboard_reporter_url(id: params[:group]) %>

Cordialement,
L'équipe API Particulier
8 changes: 8 additions & 0 deletions app/views/api_particulier/reporters_mailer/submit.text.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Bonjour,

Une nouvelle demande vient d'être déposée pour l'ensemble de données associé au groupe '<%= params[:group] %>'.

Vous pouvez consulter la liste des demandes relatives aux données associé au groupe '<%= params[:group] %>' sur le lien suivant : <%= api_particulier_dashboard_reporter_url(id: params[:group]) %>

Cordialement,
L'équipe API Particulier
2 changes: 1 addition & 1 deletion config/credentials/production.yml.enc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
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--wZkWHgUfL6lLzi0R--/f5HhUSn4ZFkcAzEAzHasg==
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--FO56xoX3UESfA+1w--PE0dYB1f5zklm7xitQ4Slw==
2 changes: 1 addition & 1 deletion config/credentials/test.yml.enc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
lHp2jcmiXvV33gX7o71HcUGSGUsu5Cur7gmCB6egk/Z7JWFmKLmqqH6baCEWHUMAZGsF/6P5mho9hOuhnUb5x4bMYi9k9wBnGmj/lvR9IdNcHrjZEpzWbDIVISY3rKmvFK58XBitqZ77ajhrNgLn4i4qpNU/i5q6legfMv5mfk4AKN/+hMnApCf86mGpQT7vW8GTc5Vwy3q0nE2rYuIQxGKrwGzW6Jf68OWBA0+eSj+6ELGLu0wF6CnQHYZ5yFeS8MXHMvfjH5LLc3GVVSlwKygq+3g5s/2BPbRSr1rFN6hTBw7z7eGp81FhNnoslyc4anHND6jxP4XLjKRvExlzLxZr5iLN6UoDFdAPZ0YzEJusLVrW6LHpTOY5SmcrxeYR+CQuurbe+vRmlu4Ysrq19Byf80QQqv+mUrxnr8AxnJil79lgLJ72nHilEh/DII6GCFEm+/cbkpEIn7TOU2gcJVDHWa9w0LWEQm3PNvuOebReW8pDDb6VuuoCUB3vRC/qVMaYmKO6FNpGv0C8Apa7go4xDsbznCSzuWS3nLd05sKLFU5lZNeysZhqF/uzO83EXTUUZBXM/TjIunY9D74Z8wn6cctt3aNrH8sGhdIvd1/siyZqaV1xe2igsyktMRlkO6DxPd4fOWDxNJVsamoApg0ed4xScnJa3rdExrRAkQLx6LsP/PQjXZa6BjIRvltjQ31oRJr7GYxVG9wFE37Q3x9GNCPjEy0xoAL1gwce8jB9cJbuQmvRpGTK6zCa8nqwvckz8K+AwLTbLRVnwsAo9BP8KZpfa99qI11nGImCxCYSHjTxaAhlObcofsZJZeQmxtB47vdZXWqCazw0UnJg4ettS/wPDI9YwRPJYOzs2P2XyPZGAB7CDlkoE9yQg1UQSrjI66Rm2IUy88yOqRhLtwuhcYSofpFNcAqAghHi8xsT5kmKA1VG2ktzbbetcmGX0JdXq+n9KSkrXIoM7EfD3BaHVh7v5R/nPf21J840BBa9JQb8Lqwz22V2LU12rNNCkr5oIeDypzw4WFspgZ55wTWIfDvLd9lavROC/7E25AKS0FVUnb//F2gZJcLCi4bI9J9KVE5Cax7Np2PWFvQcLvi6+ZMvWt0gmJzP/G1j3nDzw2oFlZWgw2zrQWGidsmjX8X/4plaXKgqZtyXW51/GlnsqIN3hE6NnCBp3F+3KJmPGqAXakSkXRTQ7gmuIvlb3eA4u01D+QFBIVp5Dn5u7mO04cvhs4volbF1P5etuFtTQMZa997HJWs6JKbxbD5dXHirreWx1ePxysz0R3LP8YbBsrvT9lR8JFsC3t9xK3CZGtMsy9bmsazrt80csxlB+BsyBFyntO2wdhNpzaTNAgqmQOitv1xy8YkE5SaSqRitNlvxed8rZqfoE6L56wm0Zrt9OtJxe14SW3Wf+J8dLdZfkofS9qTg42M38uQDatHFnnrcsON0/w5qMcZ7dQ3Uh1+iZ8VtiCZk--ofXTPPvApMx26e85--KCiB/DR3eRUz/seUFc5fgA==
tonkgh6Sc7Corqbt4DpG61lEEgMpniBzoq74Bp8yuSI+1sUZ9ceu7UdZyWvlKQfG2LpU6GSHsmKv5N9x4unJk+BS0A0AVEv81kxH8KLnUVMfwMp4uBceghzDzJTOYOGXNtxQgFxB9CwRJmHrCQMcwZ2wGWFPwDxRbTtJ7gUQWTD5Zdqf2jL0VREKtxQ7B5Ols6Y/Eacf/tQ3V6GjKXON6MkFIPs2YdMrnhau8mjJtGy3virbbSDlgJL03jMB40ipUFFd3dp0yuGI70LebIMCNMTZ43Wtypt+5EnsfkYdl17EkzLENyhu22of+3lNJwbx4fQJe1c+X4QmRDDhzRtjuTMohiEqXLsroucPw7Ae/4q3FMS/kCxPe5uGSLrUDvTWgmaQ8yuJkIgX42m7a+Gl7sVl/hn7hal5+APkNuWW7CWJNrnz3jgVwkYsWNQlqu9kDdWUc8yMWNqyux4BXyr2Aum718j0NDYtUdVjUKhEOWThMQ35VY8DjvilQO1L43dbMl9xkc++jV9a2m9snyvGMrbaxkgE0KS6GevSEFzfQ8FU3/GyKiZKyg2nNcrAyS7yoCdCHzvHsU9wxo99cjhth1nfvM40gWwwQyVGvVT7r7l47qBsSDV1IDQP6IHe7whlDGXPjApfvnmC2k/dUeZh2QXzS01Zj3RCjnbYRZ4zoGaMukn8r4VNjbPhgvZu6dhOwSTBi/s680lDaQZonUTjFB6RCl0q6T+RabIkNnFuk0/ZImdcCiwfweOfQtAlCVXoKjo2KnF3DeYI/cdE2Z88SivDGlkWm1j08xJuHmhTOg3NtiNbxDLtwKV0sMJILKcefWbSpDfW7+hwsa8QsMVQWDeci/O4OVei27wi7chblIF+pHsyjT1uSPrxHh+nSom+CWbJsIHZE8pGNpDRnkHSas54C+ocilSmhvPAYH7FYLHiaJc/nM0gE1uy//RfbMEhy08PQMnVZoKQuQfkwLjMvACW6fqgsS5MR/NKiCev9ZCB/fQrS+Agn0UAEfysiMGul9PenuPdhH1FQTM/M5F2gevaU/g52Z76srKXprYv6tJjrXRiS1expQI3oIO9kEhYC1kbMyAF1VXg/ix51dMKfaxKnv4Kv9a/n2TYsGuBxkeJ6llAr2qcJfWdszn9OyEP7070uIl9QopkPU73fqHqwSNKfguQpvbYuGjTCObQAZcgmnK6QIw2+BxOheV+5RWa14iXJsDgtljyxHzP4j3zFhw/Sy1H01k/22myTdO1jOh3JhR+/Qtn9tQegltqdtmJRsI5vtGlwVSp95hTg8CfNzwbKunqt3ytNUUkb8nbMuFRRY5KIhYnLpqgMYZ/SFDtuvSmgHRWgaRTGwqUiBkxLGGhPwNw0vPPxLaAHmQ1vq2cD8lzDEdgz3LbPDWYEPcxDSc2LaOpmPNQz7qnOHRz095OhZ4aY0bHkoq6TurdSNTtEv45nQBIot7zuc+hXy4ZiIpeBaP+Q3NgxAPou844iL4TZLlmnmqPGXUhLXWadjhwtaMslKgUbTaOUKP8jg1yGDW305P1c9bqVoyyEaWPtmpbkC4W4zaU6ERoALIsQSOuKo+9TEv6VYV8Wjv7HSzdLLDviR/9GWbbeN2sltpuv9TbZUWsHQImrfPfkE/lK645l/Zb5wXvVrEN8hkjZKDFbdSCEco5--DCJ+0i2AHh2fGr4H--yfGDk4WRVS8L0U0MIgM+sA==
2 changes: 2 additions & 0 deletions config/i18n-tasks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ ignore_missing:
- 'concerns.token_mailers_commons.*'
- 'api_*.authorization_request_mailer.subject'
- 'api_*.token_mailer.subject'
- 'api_particulier.reporters_mailer.*'
# - 'errors.messages.{accepted,blank,invalid,too_short,too_long}'
# - '{devise,simple_form}.*'

Expand All @@ -124,6 +125,7 @@ ignore_unused:
- 'api_{entreprise,particulier}.token_mailer.*'
- 'api_{entreprise,particulier}.authorization_request_mailer.*'
- 'api_{entreprise,particulier}.endpoints.show.error.record_not_found'
- 'api_particulier.reporters_mailer.*'
# - 'activerecord.attributes.*'
# - '{devise,kaminari,will_paginate}.*'
# - 'simple_form.{yes,no}'
Expand Down
8 changes: 7 additions & 1 deletion config/locales/mailers.fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ fr:
subject: 📬 Votre demande d'accès à l'API Entreprise a bien été reçue par nos services.
reassurance_demande_recue:
subject: ⚙️ Votre demande est en cours de traitement.

update_embarquement_brouillon_en_attente:
subject: 🔧 Besoin d'aide pour finaliser votre demande de mise à jour ?
update_embarquement_demande_refusee:
Expand Down Expand Up @@ -118,3 +118,9 @@ fr:
subject: 🔑 Lien d'accès temporaire au jeton API Particulier
signature: L'équipe API Particulier
link_description: Un lien vers un jeton d'accès API Particulier vient d'être généré à votre intention. Vous pouvez accéder à ce jeton via le lien

reporters_mailer:
submit:
subject: Une nouvelle demande a été déposé pour API Particulier pour le groupe de donnée %{group}
approve:
subject: Une nouvelle demande a été validé pour API Particulier pour le groupe de donnée %{group}
2 changes: 1 addition & 1 deletion config/routes/api_particulier.rb
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,6 @@
get '/donnees_personnelles', to: 'pages#donnees_personnelles', as: :donnees_personnelles
get '/accessibilite', to: 'pages#accessibility', as: :accessibilite


get '/datapass/:id', to: 'reporters#show', as: :dashboard_reporter
end
end
47 changes: 47 additions & 0 deletions spec/features/api_particulier/reporters_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'API Particulier', app: :api_particulier do
subject(:visit_dashboard) do
visit api_particulier_dashboard_reporter_path(id:)
end

before do
login_as(user)
end

context 'with valid user and id' do
let(:id) { 'cnaf' }
let(:user) { create(:user, email: '[email protected]') }

it 'renders metabase view' do
visit_dashboard

expect(page).to have_current_path(api_particulier_dashboard_reporter_path(id:))
expect(page.html).to include('metabase.entreprise.api.gouv.fr')
end
end

context 'with invalid user' do
let(:id) { 'cnaf' }
let(:user) { create(:user, email: '[email protected]') }

it 'redirects to root path' do
visit_dashboard

expect(page).to have_current_path(root_path)
end
end

context 'with invalid id' do
let(:id) { 'whatever' }
let(:user) { create(:user, email: '[email protected]') }

it 'redirects to root path' do
visit_dashboard

expect(page).to have_current_path(root_path)
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
RSpec.describe DatapassWebhook::APIParticulier::NotifyReporters, type: :interactor do
include ActiveJob::TestHelper

subject { described_class.call(datapass_webhook_params) }

let(:datapass_webhook_params) do
build(:datapass_webhook,
event:,
authorization_request_attributes: {
scopes:
})
end
let(:event) { 'approve' }
let(:scopes) { { 'cnaf_quotient_familial' => true } }

describe 'reporters notification' do
describe 'when it is a submit event' do
let(:event) { 'submit' }

context 'when authorization request has scopes from reporters group' do
let(:scopes) { { 'cnaf_quotient_familial' => true } }

it { is_expected.to be_success }

it 'notifies reporters' do
expect {
perform_enqueued_jobs do
subject
end
}.to change { ActionMailer::Base.deliveries.count }.by(1)

mail = ActionMailer::Base.deliveries.last

expect(mail.subject).to match(/Une nouvelle demande a été déposé pour API Particulier/)
end

context 'when authorization request has no scopes from reporters group' do
let(:scopes) { { 'cnaf_quotient_familial' => false, 'whatever' => true } }

it { is_expected.to be_success }

it 'does not notify reporters' do
expect {
perform_enqueued_jobs do
subject
end
}.not_to change { ActionMailer::Base.deliveries.count }
end
end
end
end
end
end
15 changes: 15 additions & 0 deletions spec/mailers/api_particulier/reporters_mailer_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
RSpec.describe APIParticulier::ReportersMailer do
before do
create(:user, email: '[email protected]')
end

describe '#submit' do
subject(:mail) do
described_class.with(group: 'cnaf').submit
end

it 'sends an email to reporters associated to this group' do
expect(mail.bcc).to include('[email protected]')
end
end
end
16 changes: 16 additions & 0 deletions spec/mailers/previews/api_particulier/reporters_mailer_preview.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
class APIParticulier::ReportersMailerPreview < ActionMailer::Preview
%w[
submitted
validated
].each do |event|
define_method(event) do
APIParticulier::ReportersMailer.with(group:).send(event)
end
end

private

def group
'cnaf'
end
end

0 comments on commit 1a0287f

Please sign in to comment.