#1 : Modification droit et ip Keycloak.

This commit is contained in:
Loic Masi
2026-04-21 13:28:20 +02:00
parent 7056a30e60
commit c7a72eeea2
10 changed files with 34 additions and 27 deletions

View File

@@ -1,5 +1,6 @@
namespace Webzine.WebApplication.Areas.Administration.Controllers; namespace Webzine.WebApplication.Areas.Administration.Controllers;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Webzine.Entity; using Webzine.Entity;
@@ -38,6 +39,7 @@ public class ArtisteController : Controller
/// </summary> /// </summary>
/// <param name="page">Le numéro de page pour la pagination des artistes (par défaut à 0).</param> /// <param name="page">Le numéro de page pour la pagination des artistes (par défaut à 0).</param>
/// <returns>Redirection.</returns> /// <returns>Redirection.</returns>
[Authorize(Roles = "ADMIN")]
public IActionResult Index(int page = 0) public IActionResult Index(int page = 0)
{ {
int artistes_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration"); int artistes_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration");
@@ -93,6 +95,7 @@ public class ArtisteController : Controller
/// </summary> /// </summary>
/// <param name="id">L'identifiant de l'artiste à modifier. </param> /// <param name="id">L'identifiant de l'artiste à modifier. </param>
/// <returns>Redirection.</returns> /// <returns>Redirection.</returns>
[Authorize(Roles = "ADMIN")]
public IActionResult Edit(int id) public IActionResult Edit(int id)
{ {
var artiste = this.artisteRepository.Find(id); var artiste = this.artisteRepository.Find(id);
@@ -110,6 +113,7 @@ public class ArtisteController : Controller
/// </summary> /// </summary>
/// <param name="model">Paramètre d'un artiste.</param> /// <param name="model">Paramètre d'un artiste.</param>
/// <returns>Redirection sur Index.</returns> /// <returns>Redirection sur Index.</returns>
[Authorize(Roles = "ADMIN")]
[HttpPost] [HttpPost]
public IActionResult Edit(ArtisteEditViewModel model) public IActionResult Edit(ArtisteEditViewModel model)
{ {
@@ -133,6 +137,7 @@ public class ArtisteController : Controller
/// </summary> /// </summary>
/// <param name="id">L'identifiant de l'artiste à supprimer. </param> /// <param name="id">L'identifiant de l'artiste à supprimer. </param>
/// <returns>Redirection.</returns> /// <returns>Redirection.</returns>
[Authorize(Roles = "ADMIN")]
public IActionResult Delete(int id) public IActionResult Delete(int id)
{ {
var artiste = this.artisteRepository.Find(id); var artiste = this.artisteRepository.Find(id);
@@ -156,6 +161,7 @@ public class ArtisteController : Controller
/// </summary> /// </summary>
/// <param name="model">L'artiste à supprimer.</param> /// <param name="model">L'artiste à supprimer.</param>
/// <returns>Redirige vers la page d'index d'admin artiste.</returns> /// <returns>Redirige vers la page d'index d'admin artiste.</returns>
[Authorize(Roles = "ADMIN")]
[HttpPost] [HttpPost]
public IActionResult Delete(AdminArtisteForm model) public IActionResult Delete(AdminArtisteForm model)
{ {

View File

@@ -1,5 +1,6 @@
namespace Webzine.WebApplication.Areas.Administration.Controllers namespace Webzine.WebApplication.Areas.Administration.Controllers
{ {
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Webzine.Repository.Contracts; using Webzine.Repository.Contracts;
@@ -40,6 +41,7 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
/// </summary> /// </summary>
/// <param name="page">Le numéro de page pour la pagination des commentaires (par défaut à 0).</param> /// <param name="page">Le numéro de page pour la pagination des commentaires (par défaut à 0).</param>
/// <returns>La vue Index avec le ViewModel contenant la liste des commentaires.</returns> /// <returns>La vue Index avec le ViewModel contenant la liste des commentaires.</returns>
[Authorize(Roles = "ADMIN")]
public IActionResult Index(int page = 0) public IActionResult Index(int page = 0)
{ {
int commentaires_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration"); int commentaires_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration");

View File

@@ -1,5 +1,6 @@
namespace Webzine.WebApplication.Areas.Administration.Controllers namespace Webzine.WebApplication.Areas.Administration.Controllers
{ {
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Webzine.Entity; using Webzine.Entity;
@@ -40,6 +41,7 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
/// </summary> /// </summary>
/// <param name="page">Le numero de page pour la pagination des styles (par defaut a 0).</param> /// <param name="page">Le numero de page pour la pagination des styles (par defaut a 0).</param>
/// <returns>La vue Index avec la liste des styles.</returns> /// <returns>La vue Index avec la liste des styles.</returns>
[Authorize(Roles = "ADMIN")]
public IActionResult Index(int page = 0) public IActionResult Index(int page = 0)
{ {
int styles_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration"); int styles_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration");

View File

@@ -2,6 +2,7 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers;
using Business.Contracts; using Business.Contracts;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Rendering;
@@ -54,6 +55,7 @@ public class TitreController : Controller
/// </summary> /// </summary>
/// <param name="page">Le numéro de page pour la pagination des titres (par défaut à 0).</param> /// <param name="page">Le numéro de page pour la pagination des titres (par défaut à 0).</param>
/// <returns>La vue Index avec le ViewModel contenant la liste des titres.</returns> /// <returns>La vue Index avec le ViewModel contenant la liste des titres.</returns>
[Authorize(Roles = "ADMIN")]
public IActionResult Index(int page = 0) public IActionResult Index(int page = 0)
{ {
int titres_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration"); int titres_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration");

View File

@@ -1,6 +1,5 @@
namespace Webzine.WebApplication.Controllers namespace Webzine.WebApplication.Controllers
{ {
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Webzine.Repository.Contracts; using Webzine.Repository.Contracts;
@@ -34,7 +33,6 @@
/// </summary> /// </summary>
/// <param name="nom">Le nom de l'artiste à rechercher, formaté en kebab-case (ex: "fatal-bazooka").</param> /// <param name="nom">Le nom de l'artiste à rechercher, formaté en kebab-case (ex: "fatal-bazooka").</param>
/// <returns>La vue de l'artiste avec son ViewModel, ou une redirection vers l'accueil si le nom est vide, ou une erreur 404 si l'artiste n'est pas trouvé.</returns> /// <returns>La vue de l'artiste avec son ViewModel, ou une redirection vers l'accueil si le nom est vide, ou une erreur 404 si l'artiste n'est pas trouvé.</returns>
[Authorize(Roles = "ADMIN")]
public IActionResult Index(string nom) public IActionResult Index(string nom)
{ {
this.logger.LogInformation("Tentative d'accès à l'artiste avec le nom : {NomArtiste}", nom); this.logger.LogInformation("Tentative d'accès à l'artiste avec le nom : {NomArtiste}", nom);

View File

@@ -1,6 +1,5 @@
namespace Webzine.WebApplication.Controllers namespace Webzine.WebApplication.Controllers
{ {
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
/// <summary> /// <summary>
@@ -26,7 +25,6 @@
/// Affiche la page de contact du webzine. /// Affiche la page de contact du webzine.
/// </summary> /// </summary>
/// <returns>La vue Index de la page de contact.</returns> /// <returns>La vue Index de la page de contact.</returns>
[Authorize(Roles = "ADMIN")]
public IActionResult Index() public IActionResult Index()
{ {
return this.View(); return this.View();

View File

@@ -4,7 +4,6 @@
namespace Webzine.WebApplication.Controllers namespace Webzine.WebApplication.Controllers
{ {
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Webzine.Repository.Contracts; using Webzine.Repository.Contracts;
@@ -39,8 +38,7 @@ namespace Webzine.WebApplication.Controllers
/// Affichage de la page Recherche depuis le header de l'app. /// Affichage de la page Recherche depuis le header de l'app.
/// </summary> /// </summary>
/// <param name="mot">Nom d'artiste ou de titre.</param> /// <param name="mot">Nom d'artiste ou de titre.</param>
/// <returns>Page de recherche avec les r<EFBFBD>sultats.</returns> /// <returns>Page de recherche avec les résultats.</returns>
[Authorize(Roles = "ADMIN")]
public IActionResult Index(string mot) public IActionResult Index(string mot)
{ {
// Logger la recherche. // Logger la recherche.

View File

@@ -4,7 +4,6 @@
namespace Webzine.WebApplication.Controllers namespace Webzine.WebApplication.Controllers
{ {
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Webzine.Entity; using Webzine.Entity;
@@ -48,7 +47,6 @@ namespace Webzine.WebApplication.Controllers
/// <param name="id">Identifiant du titre.</param> /// <param name="id">Identifiant du titre.</param>
/// <param name="model">Model de donnée pour un commentaire.</param> /// <param name="model">Model de donnée pour un commentaire.</param>
/// <returns>Vue des details ou 404 si introuvable.</returns> /// <returns>Vue des details ou 404 si introuvable.</returns>
[Authorize(Roles = "ADMIN")]
public IActionResult Index(int id) public IActionResult Index(int id)
{ {
this.logger.LogInformation("Demande d'affichage du detail pour le titre ID {Id}.", id); this.logger.LogInformation("Demande d'affichage du detail pour le titre ID {Id}.", id);

View File

@@ -58,6 +58,27 @@
</a> </a>
</li> </li>
<li class="nav-item">
@if (User.Identity?.IsAuthenticated == true)
{
<span class="text-primary">Bonjour @User.Identity.Name</span>
<a asp-controller="Account"
asp-action="Logout"
class="btn btn-outline-danger btn-sm">
Déconnexion
</a>
}
else
{
<a asp-controller="Account"
asp-action="Login"
class="btn btn-outline-primary btn-sm">
Connexion
</a>
}
</li>
</ul> </ul>
<!-- Barre de recherche --> <!-- Barre de recherche -->

View File

@@ -14,24 +14,6 @@
</head> </head>
<body class="d-flex flex-column min-vh-100"> <body class="d-flex flex-column min-vh-100">
<partial name="_Header"/> <partial name="_Header"/>
@if (User.Identity?.IsAuthenticated == true)
{
<span class="me-2">Bonjour @User.Identity.Name</span>
<a asp-controller="Account"
asp-action="Logout"
class="btn btn-outline-danger btn-sm">
Déconnexion
</a>
}
else
{
<a asp-controller="Account"
asp-action="Login"
class="btn btn-outline-primary btn-sm">
Connexion
</a>
}
<div class="container-fluid flex-grow-1 py-4"> <div class="container-fluid flex-grow-1 py-4">
<div class="row"> <div class="row">
<main class="col mx-3"> <main class="col mx-3">