public async Task <IActionResult> Login( [FromServices] IConfiguration configuration, [FromServices] IMediator mediator, [FromServices] IMapper mapper, [FromBody] RegistrationDto registrationDto) { var query = new GetProfileByLoginQuery(registrationDto.ProfileDto.Login); var data = await mediator.Send(query); var actual = SaltHelper.Hash(registrationDto.Password, data.Profile.Secret.Salt); if (actual != data.Profile.Secret.Hash) { return(ValidationProblem("Invalid login or password")); } var claims = AuthHelper.GetIdentity(data.Profile.Login, data.Profile.Id); var token = AuthHelper.GenerateToken(claims, configuration); var profile = mapper.Map <ProfileDto>(data.Profile); var loginedUser = new LoginedProfileDto { Token = token, ProfileDto = profile }; return(new JsonResult(loginedUser)); }
public async Task <IActionResult> Registration( [FromServices] IMediator mediator, [FromBody] RegistrationDto registrationDto) { var query = new GetProfileByLoginQuery(registrationDto.ProfileDto.Login); var resultQuery = await mediator.Send(query); if (resultQuery.Profile != null) { return(ValidationProblem("Login exists")); } var command = new AddProfileCommand(registrationDto.ProfileDto, registrationDto.Password); var data = await mediator.Send(command); return(new JsonResult(data.Profile)); }