Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }