2024-04-29 00:17:15 +02:00
|
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
2018-05-31 15:18:06 +02:00
|
|
|
|
module Manager
|
|
|
|
|
class UsersController < Manager::ApplicationController
|
2020-01-13 14:35:25 +01:00
|
|
|
|
def update
|
|
|
|
|
user = User.find(params[:id])
|
2021-10-18 15:09:09 +02:00
|
|
|
|
targeted_user = User.find_by(email: targeted_email)
|
2021-10-04 14:00:32 +02:00
|
|
|
|
|
2021-10-18 15:09:09 +02:00
|
|
|
|
if targeted_user.nil?
|
2021-10-04 14:00:32 +02:00
|
|
|
|
user.skip_reconfirmation!
|
|
|
|
|
user.update(email: targeted_email)
|
|
|
|
|
|
|
|
|
|
if (user.valid?)
|
|
|
|
|
flash[:notice] = "L'email a été modifié en « #{targeted_email} » sans notification ni validation par email."
|
|
|
|
|
else
|
|
|
|
|
flash[:error] = user.errors.full_messages.to_sentence
|
|
|
|
|
end
|
2021-11-29 13:47:45 +01:00
|
|
|
|
|
|
|
|
|
redirect_to edit_manager_user_path(user)
|
2020-01-13 14:35:25 +01:00
|
|
|
|
else
|
2021-10-22 15:17:25 +02:00
|
|
|
|
targeted_user.merge(user)
|
2021-10-04 15:44:05 +02:00
|
|
|
|
|
|
|
|
|
flash[:notice] = "Le compte « #{targeted_email} » a absorbé le compte « #{user.email} »."
|
2021-11-29 13:47:45 +01:00
|
|
|
|
redirect_to edit_manager_user_path(targeted_user)
|
2020-01-13 14:35:25 +01:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2024-05-31 16:30:22 +02:00
|
|
|
|
def unblock_mails
|
|
|
|
|
user = User.find(params[:id])
|
|
|
|
|
user.update!(email_verified_at: Time.current)
|
|
|
|
|
flash[:notice] = "Les emails ont été débloqués."
|
|
|
|
|
redirect_to manager_user_path(user)
|
|
|
|
|
end
|
|
|
|
|
|
2018-07-17 12:10:56 +02:00
|
|
|
|
def resend_confirmation_instructions
|
|
|
|
|
user = User.find(params[:id])
|
|
|
|
|
user.resend_confirmation_instructions
|
2021-05-26 15:16:30 +02:00
|
|
|
|
flash[:notice] = "L'email d’activation de votre compte a été renvoyé."
|
2018-07-17 12:10:56 +02:00
|
|
|
|
redirect_to manager_user_path(user)
|
|
|
|
|
end
|
2019-07-04 12:36:17 +02:00
|
|
|
|
|
2023-02-02 17:33:05 +01:00
|
|
|
|
def resend_reset_password_instructions
|
|
|
|
|
user = User.find(params[:id])
|
|
|
|
|
user.send_reset_password_instructions
|
|
|
|
|
flash[:notice] = "L'email de réinitialisation du mot de passe a été renvoyé."
|
|
|
|
|
redirect_to manager_user_path(user)
|
|
|
|
|
end
|
|
|
|
|
|
2019-07-04 12:36:17 +02:00
|
|
|
|
def enable_feature
|
|
|
|
|
user = User.find(params[:id])
|
|
|
|
|
|
|
|
|
|
params[:features].each do |key, enable|
|
|
|
|
|
if enable
|
|
|
|
|
Flipper.enable_actor(key.to_sym, user)
|
|
|
|
|
else
|
|
|
|
|
Flipper.disable_actor(key.to_sym, user)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
head :ok
|
|
|
|
|
end
|
2020-01-08 10:50:16 +01:00
|
|
|
|
|
|
|
|
|
def delete
|
|
|
|
|
user = User.find(params[:id])
|
2020-09-17 15:39:16 +02:00
|
|
|
|
if !user.can_be_deleted?
|
|
|
|
|
fail "Impossible de supprimer cet utilisateur. Il a des dossiers en instruction ou il est administrateur."
|
2020-01-08 10:50:16 +01:00
|
|
|
|
end
|
2023-11-17 10:22:34 +01:00
|
|
|
|
user.delete_and_keep_track_dossiers_also_delete_user(current_super_admin, reason: :user_removed)
|
2020-01-08 10:50:16 +01:00
|
|
|
|
|
2020-11-05 15:09:11 +01:00
|
|
|
|
logger.info("L'utilisateur #{user.id} est supprimé par #{current_super_admin.id}")
|
2020-01-08 10:50:16 +01:00
|
|
|
|
flash[:notice] = "L'utilisateur #{user.id} est supprimé"
|
|
|
|
|
|
|
|
|
|
redirect_to manager_users_path
|
|
|
|
|
end
|
2020-10-06 16:52:10 +02:00
|
|
|
|
|
|
|
|
|
def emails
|
|
|
|
|
@user = User.find(params[:id])
|
2021-04-13 10:57:26 +02:00
|
|
|
|
|
|
|
|
|
email_services = [
|
2022-04-26 11:44:42 +02:00
|
|
|
|
Sendinblue::API.new,
|
|
|
|
|
Dolist::API.new
|
2024-10-03 10:42:47 +02:00
|
|
|
|
].filter(&:properly_configured?)
|
|
|
|
|
|
|
|
|
|
@sent_mails = Concurrent::Array.new
|
|
|
|
|
email_services.map do |api|
|
|
|
|
|
Thread.new do
|
|
|
|
|
mails = api.sent_mails(@user.email)
|
|
|
|
|
@sent_mails.concat(mails)
|
|
|
|
|
end
|
|
|
|
|
end.each(&:join)
|
|
|
|
|
|
|
|
|
|
@sent_mails.sort_by!(&:delivered_at).reverse!
|
2020-10-07 10:07:38 +02:00
|
|
|
|
end
|
|
|
|
|
|
2021-04-08 17:46:11 +02:00
|
|
|
|
def unblock_email
|
|
|
|
|
@user = User.find(params[:user_id])
|
|
|
|
|
if Sendinblue::API.new.unblock_user(@user.email)
|
|
|
|
|
flash.notice = "L'adresse email a été débloquée auprès de Sendinblue"
|
|
|
|
|
else
|
2021-10-27 18:59:18 +02:00
|
|
|
|
flash.alert = "Impossible de débloquer cette adresse email auprès de Sendinblue"
|
2021-04-08 17:46:11 +02:00
|
|
|
|
end
|
|
|
|
|
redirect_to emails_manager_user_path(@user)
|
2020-10-06 16:52:10 +02:00
|
|
|
|
end
|
2021-10-04 14:00:32 +02:00
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
|
|
def targeted_email
|
|
|
|
|
params[:user][:email]
|
|
|
|
|
end
|
2022-11-15 12:21:20 +01:00
|
|
|
|
|
|
|
|
|
def paginate_resources(_resources)
|
|
|
|
|
super.without_count
|
|
|
|
|
end
|
2018-05-31 15:18:06 +02:00
|
|
|
|
end
|
|
|
|
|
end
|