Exemplo n.º 1
0
        public async Task <LogAcessoOutput> CreateLogAcessoAsync(LogAcessoInput input)
        {
            var logAcesso = new LogAcesso()
            {
                Login         = input.Login,
                DataTentativa = DateTime.Now,
                Success       = input.Success,
                CreateDate    = DateTime.Now
            };

            _dbContext.LogAcessos.Add(logAcesso);

            return(new LogAcessoOutput()
            {
                Id = logAcesso.Id
            });
        }
        public async Task <ActionResult <LoginOutput> > Login([FromBody] LoginInput input)
        {
            var userToVerify = await CreateClaimsIdentityAsync(input.UserNameOrEmail, input.Password);

            var logAcesso = new LogAcessoInput()
            {
                Login = input.UserNameOrEmail
            };

            if (userToVerify == null)
            {
                logAcesso.Success = false;
                await _logService.CreateLogAcessoAsync(logAcesso);

                return(BadRequest(new List <NameValueDto>
                {
                    new NameValueDto("UserNameOrPasswordIncorrect", "The user name or password is incorrect!")
                }));
            }

            logAcesso.Success = true;
            await _logService.CreateLogAcessoAsync(logAcesso);

            var token = new JwtSecurityToken
                        (
                issuer: input.UserNameOrEmail,
                audience: _jwtTokenConfiguration.Audience,
                claims: userToVerify.Claims,
                expires: _jwtTokenConfiguration.EndDate,
                notBefore: _jwtTokenConfiguration.StartDate,
                signingCredentials: _jwtTokenConfiguration.SigningCredentials
                        );

            return(Ok(new LoginOutput {
                Token = new JwtSecurityTokenHandler().WriteToken(token), UserName = input.UserNameOrEmail
            }));
        }