Skip to content

Commit

Permalink
Ajout d'infos manquantes dans les logs (utilisateur et demande) (#987)
Browse files Browse the repository at this point in the history
* Ajout d’infos manquantes dans les logs (utilisateur et demande)

* Ajout de logs pour les créations de demande et invitation

* Simplification de EventService
  • Loading branch information
niladic committed Mar 30, 2021
1 parent 7a72fdb commit 4fd8c5b
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 47 deletions.
75 changes: 53 additions & 22 deletions app/controllers/ApplicationController.scala
Expand Up @@ -326,8 +326,16 @@ case class ApplicationController @Inject() (
eventService.log(
ApplicationCreated,
s"La demande ${application.id} a été créée",
Some(application)
application = application.some
)
application.invitedUsers.foreach { case (userId, _) =>
eventService.log(
ApplicationCreated,
s"Envoi de la nouvelle demande ${application.id} à l'utilisateur $userId",
application = application.some,
involvesUser = userId.some
)
}
applicationData.linkedMandat.foreach { mandatId =>
mandatService
.linkToApplication(Mandat.Id(mandatId), applicationId)
Expand All @@ -340,7 +348,7 @@ case class ApplicationController @Inject() (
underlyingException = Some(error)
)
case Success(Left(error)) =>
eventService.logError(error, application = Some(application))
eventService.logError(error, application = application.some)
case Success(Right(_)) =>
eventService.log(
ApplicationLinkedToMandat,
Expand Down Expand Up @@ -669,7 +677,7 @@ case class ApplicationController @Inject() (
eventService.log(
AllAsUnauthorized,
s"L'utilisateur n'a pas de droit d'afficher la vue de l'utilisateur $userId",
involvesUser = Some(user)
involvesUser = Some(user.id)
)
Future(
Unauthorized(
Expand All @@ -680,7 +688,7 @@ case class ApplicationController @Inject() (
eventService.log(
AllAsUnauthorized,
s"L'utilisateur n'a pas de droit d'afficher la vue de l'utilisateur admin $userId",
involvesUser = Some(user)
involvesUser = Some(user.id)
)
Future(
Unauthorized(
Expand All @@ -695,7 +703,7 @@ case class ApplicationController @Inject() (
.log(
AllAsShowed,
s"Visualise la vue de l'utilisateur $userId",
involvesUser = Some(user)
involvesUser = Some(user.id)
)
val applications = applicationService.allForUserId(
userId = targetUserId,
Expand Down Expand Up @@ -999,7 +1007,8 @@ case class ApplicationController @Inject() (
case Some(answer) if answer.files.getOrElse(Map.empty).contains(filename) =>
eventService.log(
FileOpened,
s"Le fichier de la réponse $answerId sur la demande $applicationId a été ouvert"
s"Le fichier de la réponse $answerId sur la demande $applicationId a été ouvert",
application = application.some
)
sendFile(
Paths.get(s"$filesPath/ans_$answerId-$filename"),
Expand All @@ -1009,7 +1018,8 @@ case class ApplicationController @Inject() (
case _ =>
eventService.log(
FileNotFound,
s"Le fichier de la réponse $answerId sur la demande $applicationId n'existe pas"
s"Le fichier de la réponse $answerId sur la demande $applicationId n'existe pas",
application = application.some
)
Future(NotFound("Nous n'avons pas trouvé ce fichier"))
}
Expand All @@ -1020,7 +1030,11 @@ case class ApplicationController @Inject() (
) =>
if (application.files.contains(filename)) {
eventService
.log(FileOpened, s"Le fichier de la demande $applicationId a été ouvert")
.log(
FileOpened,
s"Le fichier de la demande $applicationId a été ouvert",
application = application.some
)
sendFile(
Paths.get(s"$filesPath/app_$applicationId-$filename"),
filename,
Expand All @@ -1029,7 +1043,8 @@ case class ApplicationController @Inject() (
} else {
eventService.log(
FileNotFound,
s"Le fichier de la demande $applicationId n'existe pas"
s"Le fichier de la demande $applicationId n'existe pas",
application = application.some
)
Future(NotFound("Nous n'avons pas trouvé ce fichier"))
}
Expand Down Expand Up @@ -1070,7 +1085,7 @@ case class ApplicationController @Inject() (
formWithErrors => {
val error =
s"Erreur dans le formulaire de réponse (${formWithErrors.errors.map(_.message).mkString(", ")})."
eventService.log(AnswerNotCreated, s"$error")
eventService.log(AnswerNotCreated, s"$error", application = application.some)
Future(
Redirect(
routes.ApplicationController.show(applicationId).withFragment("answer-error")
Expand Down Expand Up @@ -1137,7 +1152,7 @@ case class ApplicationController @Inject() (
eventService.log(
AnswerNotCreated,
s"La réponse ${answer.id} n'a pas été créée sur la demande $applicationId : problème BDD",
Some(application)
application.some
)
Future(InternalServerError("Votre réponse n'a pas pu être envoyée"))
}
Expand All @@ -1164,7 +1179,7 @@ case class ApplicationController @Inject() (
formWithErrors => {
val error =
s"Erreur dans le formulaire d’invitation (${formWithErrors.errors.map(_.message).mkString(", ")})."
eventService.log(InviteNotCreated, error)
eventService.log(InviteNotCreated, error, application = application.some)
Future(
Redirect(
routes.ApplicationController.show(applicationId).withFragment("answer-error")
Expand All @@ -1176,7 +1191,7 @@ case class ApplicationController @Inject() (
if (inviteData.invitedUsers.isEmpty && inviteData.invitedGroups.isEmpty) {
val error =
s"Erreur dans le formulaire d’invitation (une personne ou un organisme doit être sélectionné)."
eventService.log(InviteNotCreated, error)
eventService.log(InviteNotCreated, error, application = application.some)
Future(
Redirect(
routes.ApplicationController.show(applicationId).withFragment("answer-error")
Expand Down Expand Up @@ -1218,16 +1233,24 @@ case class ApplicationController @Inject() (
notificationsService.newAnswer(application, answer)
eventService.log(
AgentsAdded,
s"L'ajout d'utilisateur ${answer.id} a été créé sur la demande $applicationId",
Some(application)
s"L'ajout d'utilisateur (réponse ${answer.id}) a été créé sur la demande $applicationId",
application = application.some
)
answer.invitedUsers.foreach { case (userId, _) =>
eventService.log(
AgentsAdded,
s"Utilisateur $userId invité sur la demande $applicationId (réponse ${answer.id})",
application = application.some,
involvesUser = userId.some
)
}
Redirect(routes.ApplicationController.myApplications())
.flashing(success -> "Les utilisateurs ont été invités sur la demande")
} else {
eventService.log(
AgentsNotAdded,
s"L'ajout d'utilisateur ${answer.id} n'a pas été créé sur la demande $applicationId : problème BDD",
Some(application)
application = application.some
)
InternalServerError("Les utilisateurs n'ont pas pu être invités")
}
Expand Down Expand Up @@ -1266,8 +1289,16 @@ case class ApplicationController @Inject() (
eventService.log(
AddExpertCreated,
s"La réponse ${answer.id} a été créée sur la demande $applicationId",
Some(application)
application = application.some
)
answer.invitedUsers.foreach { case (userId, _) =>
eventService.log(
AddExpertCreated,
s"Expert $userId invité sur la demande $applicationId (réponse ${answer.id})",
application = application.some,
involvesUser = userId.some
)
}
Redirect(routes.ApplicationController.myApplications())
.flashing(success -> "Un expert a été invité sur la demande")
} else {
Expand Down Expand Up @@ -1298,25 +1329,24 @@ case class ApplicationController @Inject() (
def reopen(applicationId: UUID): Action[AnyContent] =
loginAction.async { implicit request =>
withApplication(applicationId) { application: Application =>
import eventService._
successful(application.canBeOpenedBy(request.currentUser)).flatMap {
case true =>
applicationService
.reopen(applicationId)
.filter(identity)
.map { _ =>
val message = "La demande a bien été réouverte"
log(ReopenCompleted, message, application.some)
eventService.log(ReopenCompleted, message, application.some)
Redirect(routes.ApplicationController.myApplications()).flashing(success -> message)
}
.recover { _ =>
val message = "La demande n'a pas pu être réouverte"
log(ReopenError, message, application.some)
eventService.log(ReopenError, message, application.some)
InternalServerError(message)
}
case false =>
val message = s"Non autorisé à réouvrir la demande $applicationId"
log(ReopenUnauthorized, message, application.some)
eventService.log(ReopenUnauthorized, message, application.some)
successful(Unauthorized(message))
}
}
Expand All @@ -1330,7 +1360,8 @@ case class ApplicationController @Inject() (
eventService
.log(
TerminateIncompleted,
s"La demande de clôture pour $applicationId est incomplète"
s"La demande de clôture pour $applicationId est incomplète",
application = application.some
)
Future(
BadGateway(
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/CSVImportController.scala
Expand Up @@ -433,7 +433,7 @@ case class CSVImportController @Inject() (
eventService.log(
UserCreated,
s"Utilisateur ajouté ${user.toLogString}",
involvesUser = Some(user)
involvesUser = Some(user.id)
)
}
eventService
Expand Down
52 changes: 35 additions & 17 deletions app/controllers/UserController.scala
Expand Up @@ -133,7 +133,8 @@ case class UserController @Inject() (
if usersInGroup.map(_.id).contains[UUID](userToAdd.id) =>
eventService.log(
EditMyGroupBadUserInput,
s"Tentative d'ajout de l'utilisateur ${userToAdd.id} déjà présent au groupe $groupId"
s"Tentative d'ajout de l'utilisateur ${userToAdd.id} déjà présent au groupe $groupId",
involvesUser = userToAdd.id.some
)
successful(
Redirect(routes.UserController.showEditMyGroups())
Expand All @@ -145,7 +146,8 @@ case class UserController @Inject() (
.map { _ =>
eventService.log(
EditMyGroupUpdated,
s"Utilisateur ${userToAdd.id} ajouté au groupe $groupId"
s"Utilisateur ${userToAdd.id} ajouté au groupe $groupId",
involvesUser = userToAdd.id.some
)
Redirect(routes.UserController.showEditMyGroups())
.flashing("success" -> "L’utilisateur a été ajouté au groupe")
Expand All @@ -155,21 +157,24 @@ case class UserController @Inject() (
)
}

def removeFromGroup(id: UUID, groupId: UUID) =
def removeFromGroup(userId: UUID, groupId: UUID) =
loginAction.async { implicit request =>
val user = request.currentUser
if (user.belongsTo(groupId))
if (request.currentUser.belongsTo(groupId))
userService
.removeFromGroup(id, groupId)
.removeFromGroup(userId, groupId)
.map { _ =>
eventService.log(EditMyGroupUpdated, s"Utilisateur $id retiré du groupe $groupId")
eventService.log(
EditMyGroupUpdated,
s"Utilisateur $userId retiré du groupe $groupId",
involvesUser = userId.some
)
Redirect(routes.UserController.showEditMyGroups())
.flashing("success" -> "L’utilisateur a bien été retiré du groupe.")
}
.recover { e =>
eventService.log(
EditMyGroupUpdatedError,
s"Erreur lors de la tentative d'ajout de l'utilisateur $id au groupe $groupId : ${e.getMessage}"
s"Erreur lors de la tentative d'ajout de l'utilisateur $userId au groupe $groupId : ${e.getMessage}"
)
Redirect(routes.UserController.showEditMyGroups())
.flashing("error" -> "Une erreur technique est survenue")
Expand Down Expand Up @@ -461,7 +466,7 @@ case class UserController @Inject() (
.log(
UserShowed,
"Visualise la vue de modification l'utilisateur ",
involvesUser = Some(user)
involvesUser = Some(user.id)
)
Future(
Ok(
Expand All @@ -476,7 +481,11 @@ case class UserController @Inject() (
)
)
case _ =>
eventService.log(ViewUserUnauthorized, s"Accès non autorisé pour voir $userId")
eventService.log(
ViewUserUnauthorized,
s"Accès non autorisé pour voir $userId",
involvesUser = userId.some
)
Future(Unauthorized("Vous n'avez pas le droit de faire ça"))
}
}
Expand All @@ -492,15 +501,19 @@ case class UserController @Inject() (
DeleteUserUnauthorized -> s"Suppression de l'utilisateur $userId refusée."
} { () =>
if (isAccountUsed(user)) {
eventService.log(UserIsUsed, description = s"Le compte ${user.id} est utilisé.")
eventService.log(
UserIsUsed,
description = s"Le compte ${user.id} est utilisé.",
involvesUser = user.id.some
)
Future(Unauthorized("User is not unused."))
} else {
userService.deleteById(userId)
val flashMessage = s"Utilisateur $userId / ${user.email} supprimé"
eventService.log(
UserDeleted,
s"Utilisateur ${user.toLogString} supprimé",
involvesUser = Some(user)
involvesUser = Some(user.id)
)
Future(
Redirect(routes.UserController.home()).flashing("success" -> flashMessage)
Expand All @@ -526,7 +539,8 @@ case class UserController @Inject() (
val groups = groupService.allGroups
eventService.log(
AddUserError,
s"Essai de modification de l'utilisateur $userId avec des erreurs de validation"
s"Essai de modification de l'utilisateur $userId avec des erreurs de validation",
involvesUser = user.id.some
)
Future(
BadRequest(
Expand All @@ -548,7 +562,11 @@ case class UserController @Inject() (
val rights = request.rights
if (not(Authorization.canEditOtherUser(oldUser)(rights))) {
eventService
.log(PostEditUserUnauthorized, s"Accès non autorisé à modifier $userId")
.log(
PostEditUserUnauthorized,
s"Accès non autorisé à modifier $userId",
involvesUser = oldUser.id.some
)
Future(Unauthorized("Vous n'avez pas le droit de faire ça"))
} else {
val userToUpdate = oldUser.copy(
Expand All @@ -575,7 +593,7 @@ case class UserController @Inject() (
.log(
UserEdited,
s"Utilisateur $userId modifié ${oldUser.toDiffLogString(userToUpdate)}",
involvesUser = Some(userToUpdate)
involvesUser = Some(userToUpdate.id)
)
Redirect(routes.UserController.editUser(userId))
.flashing("success" -> "Utilisateur modifié")
Expand All @@ -589,7 +607,7 @@ case class UserController @Inject() (
eventService.log(
EditUserError,
s"Impossible de modifier l'utilisateur dans la BDD ${oldUser.toDiffLogString(userToUpdate)}",
involvesUser = Some(oldUser)
involvesUser = Some(oldUser.id)
)
InternalServerError(
views.html
Expand Down Expand Up @@ -681,7 +699,7 @@ case class UserController @Inject() (
eventService.log(
EventType.UserCreated,
s"Utilisateur ajouté ${user.toLogString}",
involvesUser = Some(user)
involvesUser = Some(user.id)
)
}
eventService.log(UsersCreated, "Utilisateurs ajoutés")
Expand Down

0 comments on commit 4fd8c5b

Please sign in to comment.