implementation of Authentication using JWT. Security applied on all microservices endpoints.

This commit is contained in:
Reginald Cherenfant Jasmin
2023-09-20 00:32:30 -04:00
parent 8d386af40a
commit 77816605d1
75 changed files with 1744 additions and 219 deletions

View File

@ -3,6 +3,7 @@ using DamageAssesment.Api.SurveyResponses.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using System.IdentityModel.Tokens.Jwt;
namespace DamageAssesment.Api.SurveyResponses.Controllers
{
@ -10,10 +11,20 @@ namespace DamageAssesment.Api.SurveyResponses.Controllers
public class SurveyResponsesController : ControllerBase
{
private readonly ISurveysResponse surveyResponseProvider;
public SurveyResponsesController(ISurveysResponse surveyResponseProvider)
private string token;
private readonly IHttpContextAccessor httpContextAccessor;
public SurveyResponsesController(ISurveysResponse surveyResponseProvider, IHttpContextAccessor httpContextAccessor)
{
this.surveyResponseProvider = surveyResponseProvider;
this.httpContextAccessor = httpContextAccessor;
token = httpContextAccessor.HttpContext.Request.Headers.Authorization;
if (token != null)
{
token = token.Replace("Bearer ", string.Empty);
} else
{
token = "";
}
}
/// <summary>
/// GET request for retrieving survey responses.
@ -22,7 +33,7 @@ namespace DamageAssesment.Api.SurveyResponses.Controllers
[HttpGet("Responses")]
public async Task<ActionResult> GetSurveyResponsesAsync()
{
var result = await this.surveyResponseProvider.GetSurveyResponsesAsync();
var result = await this.surveyResponseProvider.GetSurveyResponsesAsync(token);
if (result.IsSuccess)
{
return Ok(result.surveyResponses);
@ -36,11 +47,11 @@ namespace DamageAssesment.Api.SurveyResponses.Controllers
/// <summary>
/// GET request for retrieving survey responses by survey ID.
/// </summary>
[HttpGet("Responses/BySurvey/{surveyid}")]
public async Task<ActionResult> GetSurveyResponsesAsync(int surveyid)
{
var result = await this.surveyResponseProvider.GetSurveyResponsesBySurveyAsync(surveyid);
var result = await this.surveyResponseProvider.GetSurveyResponsesBySurveyAsync(surveyid, token);
if (result.IsSuccess)
{
return Ok(result.SurveyResponses);
@ -56,7 +67,7 @@ namespace DamageAssesment.Api.SurveyResponses.Controllers
[HttpGet("Responses/{surveyid}/{locationid}")]
public async Task<ActionResult> GetSurveyResponsesBySurveyAndLocationAsync(int surveyid, int locationid)
{
var result = await this.surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(surveyid, locationid);
var result = await this.surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(surveyid, locationid, token);
if (result.IsSuccess)
{
return Ok(result.SurveyResponses);
@ -73,8 +84,8 @@ namespace DamageAssesment.Api.SurveyResponses.Controllers
[HttpGet("Responses/ByAnswer/{surveyid}/{questionid}/{answer}")]
public async Task<ActionResult> GetSurveyResponsesByAnswerAsyncAsync(int surveyid, int questionid, string answer)
{
var result = await surveyResponseProvider.GetResponsesByAnswerAsync(surveyid, questionid, answer);
{
var result = await surveyResponseProvider.GetResponsesByAnswerAsync(surveyid, questionid, answer, token);
if (result.IsSuccess)
{
return Ok(result.SurveyResponses);
@ -90,7 +101,7 @@ namespace DamageAssesment.Api.SurveyResponses.Controllers
[HttpGet("Responses/ByRegion/{surveyid}")]
public async Task<ActionResult> GetAnswersByRegionAsync(int surveyid)
{
var result = await this.surveyResponseProvider.GetAnswersByRegionAsync(surveyid);
var result = await this.surveyResponseProvider.GetAnswersByRegionAsync(surveyid, token);
if (result.IsSuccess)
{
return Ok(result.Answers);
@ -105,7 +116,7 @@ namespace DamageAssesment.Api.SurveyResponses.Controllers
[HttpGet("Responses/ByMaintenanceCenter/{surveyid}")]
public async Task<ActionResult> GetAnswersByMaintenaceCentersync(int surveyid)
{
var result = await this.surveyResponseProvider.GetSurveyResponsesByMaintenanceCenterAsync(surveyid);
var result = await this.surveyResponseProvider.GetSurveyResponsesByMaintenanceCenterAsync(surveyid, token);
if (result.IsSuccess)
{
return Ok(result.SurveyResponses);
@ -120,7 +131,7 @@ namespace DamageAssesment.Api.SurveyResponses.Controllers
[HttpGet("Responses/{id}")]
public async Task<ActionResult> GetSurveyResponseByIdAsync(int id)
{
var result = await this.surveyResponseProvider.GetSurveyResponseByIdAsync(id);
var result = await this.surveyResponseProvider.GetSurveyResponseByIdAsync(id, token);
if (result.IsSuccess)
{
return Ok(result.SurveyResponse);
@ -165,7 +176,7 @@ namespace DamageAssesment.Api.SurveyResponses.Controllers
/// <summary>
/// DELETE request for deleting an existing survey response.
/// </summary>
[HttpDelete("Responses/{id}")]
public async Task<ActionResult> DeleteSurveyResponseAsync(int id)
{
@ -184,7 +195,7 @@ namespace DamageAssesment.Api.SurveyResponses.Controllers
[HttpPost("Responses/Answers")]
public async Task<ActionResult> PostSurveyAnswersAsync(Request request)
{
var result = await this.surveyResponseProvider.PostSurveyAnswersAsync(request);
var result = await this.surveyResponseProvider.PostSurveyAnswersAsync(request, token);
if (result.IsSuccess)
return Ok(result.SurveyResponse);