Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce group reporters for API Particulier #1614

Merged
merged 7 commits into from
Jul 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je chipote mais j'aurais mis ça dans une méthode

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
Loading