This commit is contained in:
mborzyszkowski 2020-09-12 16:49:44 +02:00
parent a06991a318
commit 7b7998f408
7 changed files with 24 additions and 23 deletions

View File

@ -44,7 +44,7 @@ namespace InternshipSystem.Api.Controllers
[HttpGet("loginEdition")]
[Authorize]
public async Task<ActionResult> LoginIntoEdition(Guid editionId, User user, CancellationToken token)
public async Task<ActionResult> LoginIntoEdition(Guid editionId, [FromServices] User user, CancellationToken token)
{
var edition = await _context.Editions.FindAsync(editionId);

View File

@ -35,7 +35,8 @@ namespace InternshipSystem.Api.Controllers
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[Authorize(Policy = Policies.RegisteredOnly)]
public async Task<ActionResult> AddDocumentToInternship([FromBody] DocumentPublishRequest documentRequest, CancellationToken cancellationToken)
public async Task<ActionResult> AddDocumentToInternship([FromBody] DocumentPublishRequest documentRequest,
[FromServices] User user, CancellationToken cancellationToken)
{
var validator = new DocumentPublishRequest.Validator();
var validationResult = await validator.ValidateAsync(documentRequest, cancellationToken);
@ -45,9 +46,7 @@ namespace InternshipSystem.Api.Controllers
return BadRequest(validationResult.ToString());
}
var personNumber = long.Parse(User.FindFirst(InternshipClaims.PersonNumber).Value);
return await _internshipService.AddDocumentToInternship(documentRequest, personNumber, cancellationToken);
return await _internshipService.AddDocumentToInternship(documentRequest, user.PersonNumber, cancellationToken);
}
}
}

View File

@ -38,15 +38,13 @@ namespace InternshipSystem.Api.Controllers
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[Authorize]
public async Task<ActionResult<IList<EditionResult>>> GetAvailableEditions(CancellationToken token)
public async Task<ActionResult<IList<EditionResult>>> GetAvailableEditions([FromServices] User user, CancellationToken token)
{
var personNumber = long.Parse(User.FindFirst(InternshipClaims.PersonNumber).Value);
var editions =
await Context.Editions
.Where(edition =>
edition.Internships
.Any(internship => internship.Student.Id == personNumber))
.Any(internship => internship.Student.Id == user.PersonNumber))
.ProjectTo<EditionResult>(Mapper.ConfigurationProvider)
.ToListAsync(token);
@ -74,7 +72,7 @@ namespace InternshipSystem.Api.Controllers
var edition =
await Context.Editions
.Include(e => e.AvailableSubjects)
.Where(e => e.Id == id)
.Where(e => e.Id.Equals(id))
.ProjectTo<EditionConfigurationResult>(Mapper.ConfigurationProvider)
.FirstOrDefaultAsync(token);

View File

@ -31,8 +31,8 @@ namespace InternshipSystem.Api.Controllers
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[Authorize]
public async Task<ActionResult> SubmitRegistrationForm([FromBody] RegistrationFormQuery registrationQuery,
CancellationToken cancellationToken)
public async Task<ActionResult> SubmitRegistrationForm([FromBody] RegistrationFormQuery registrationQuery,
[FromServices] User user, CancellationToken cancellationToken)
{
var validator = new RegistrationFormQuery.Validator();
var validationResult = await validator.ValidateAsync(registrationQuery, cancellationToken);
@ -41,10 +41,8 @@ namespace InternshipSystem.Api.Controllers
{
return BadRequest(validationResult.ToString());
}
var personNumber = long.Parse(User.FindFirst(InternshipClaims.PersonNumber).Value);
return await _internshipService.SubmitRegistration(registrationQuery, personNumber, cancellationToken);
return await _internshipService.SubmitRegistration(registrationQuery, user.PersonNumber, cancellationToken);
}
}
}

View File

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@ -41,7 +42,7 @@ namespace InternshipSystem.Api.Controllers
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[Authorize]
[Authorize(Policy = Policies.RegisteredOnly)]
public async Task<ActionResult<IList<InternshipType>>> GetInternshipTypesForEdition([FromServices] User user, CancellationToken cancellationToken)
{
var edition =

View File

@ -33,7 +33,7 @@ namespace InternshipSystem.Api.Controllers
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[Authorize]
public async Task<IActionResult> RegisterStudentForEdition([FromBody] Guid registrationCode, CancellationToken token)
public async Task<IActionResult> RegisterStudentForEdition([FromBody] Guid registrationCode, [FromServices] User user, CancellationToken token)
{
var edition = await _context.Editions.FindAsync(registrationCode, token);
@ -41,10 +41,8 @@ namespace InternshipSystem.Api.Controllers
{
return NotFound();
}
var personNumber = long.Parse(User.FindFirst(InternshipClaims.PersonNumber).Value);
var student = await _context.Students.FindAsync(personNumber, token);
var student = await _context.Students.FindAsync(user.PersonNumber, token);
edition.RegisterInternship(student);
await _context.SaveChangesAsync(token);

View File

@ -22,12 +22,19 @@ namespace InternshipSystem.Api.ModelBinders
{
return Task.CompletedTask;
}
Guid? editionGuid = null;
if (principal.FindFirst(InternshipClaims.Edition) != null
&& Guid.TryParse(principal.FindFirst(InternshipClaims.Edition).Value, out var edition))
{
editionGuid = edition;
}
var user = new User
{
Name = principal.FindFirst(ClaimTypes.Name).Value,
PersonNumber = long.Parse(principal.FindFirst(InternshipClaims.PersonNumber).Value),
EditionId = Guid.TryParse(principal.FindFirst(InternshipClaims.Edition).Value, out var edition) ? edition : (Guid?) null
EditionId = editionGuid
};
bindingContext.Result = ModelBindingResult.Success(user);