Static Pages and fixes #38

Manually merged
Zonar merged 5 commits from StaticPagesAndFixes into master 2020-09-12 17:24:49 +02:00
7 changed files with 24 additions and 23 deletions
Showing only changes of commit 7b7998f408 - Show all commits

View File

@ -44,7 +44,7 @@ namespace InternshipSystem.Api.Controllers
[HttpGet("loginEdition")] [HttpGet("loginEdition")]
[Authorize] [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); var edition = await _context.Editions.FindAsync(editionId);

View File

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

View File

@ -38,15 +38,13 @@ namespace InternshipSystem.Api.Controllers
[ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status404NotFound)]
[Authorize] [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 = var editions =
await Context.Editions await Context.Editions
.Where(edition => .Where(edition =>
edition.Internships edition.Internships
.Any(internship => internship.Student.Id == personNumber)) .Any(internship => internship.Student.Id == user.PersonNumber))
.ProjectTo<EditionResult>(Mapper.ConfigurationProvider) .ProjectTo<EditionResult>(Mapper.ConfigurationProvider)
.ToListAsync(token); .ToListAsync(token);
@ -74,7 +72,7 @@ namespace InternshipSystem.Api.Controllers
var edition = var edition =
await Context.Editions await Context.Editions
.Include(e => e.AvailableSubjects) .Include(e => e.AvailableSubjects)
.Where(e => e.Id == id) .Where(e => e.Id.Equals(id))
.ProjectTo<EditionConfigurationResult>(Mapper.ConfigurationProvider) .ProjectTo<EditionConfigurationResult>(Mapper.ConfigurationProvider)
.FirstOrDefaultAsync(token); .FirstOrDefaultAsync(token);

View File

@ -31,8 +31,8 @@ namespace InternshipSystem.Api.Controllers
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status401Unauthorized)]
[Authorize] [Authorize]
public async Task<ActionResult> SubmitRegistrationForm([FromBody] RegistrationFormQuery registrationQuery, public async Task<ActionResult> SubmitRegistrationForm([FromBody] RegistrationFormQuery registrationQuery,
CancellationToken cancellationToken) [FromServices] User user, CancellationToken cancellationToken)
{ {
var validator = new RegistrationFormQuery.Validator(); var validator = new RegistrationFormQuery.Validator();
var validationResult = await validator.ValidateAsync(registrationQuery, cancellationToken); var validationResult = await validator.ValidateAsync(registrationQuery, cancellationToken);
@ -41,10 +41,8 @@ namespace InternshipSystem.Api.Controllers
{ {
return BadRequest(validationResult.ToString()); 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.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -41,7 +42,7 @@ namespace InternshipSystem.Api.Controllers
[ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status404NotFound)]
[Authorize] [Authorize(Policy = Policies.RegisteredOnly)]
public async Task<ActionResult<IList<InternshipType>>> GetInternshipTypesForEdition([FromServices] User user, CancellationToken cancellationToken) public async Task<ActionResult<IList<InternshipType>>> GetInternshipTypesForEdition([FromServices] User user, CancellationToken cancellationToken)
{ {
var edition = var edition =

View File

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

View File

@ -22,12 +22,19 @@ namespace InternshipSystem.Api.ModelBinders
{ {
return Task.CompletedTask; 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 var user = new User
{ {
Name = principal.FindFirst(ClaimTypes.Name).Value, Name = principal.FindFirst(ClaimTypes.Name).Value,
PersonNumber = long.Parse(principal.FindFirst(InternshipClaims.PersonNumber).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); bindingContext.Result = ModelBindingResult.Success(user);