Пример #1
0
        public async Task <ActionResult <AppUserAuth> > LogIn([FromBody] AuthenticationQuery user)
        {
            try {
                var x = await ValidateUser(user);

                return(StatusCode(200, x));
            } catch (NotFoundException e) {
                return(StatusCode(404, e.Message));
            }
        }
Пример #2
0
        /// <summary>
        /// used to validate if a user account provided by the user exists or not
        /// </summary>
        /// <param name="userQ"></param>
        /// <returns>AppUserAuth</returns>
        protected async Task <AppUserAuth> ValidateUser(AuthenticationQuery userQ)
        {
            AppUserAuth     ret      = new AppUserAuth();
            ApplicationUser authUser = null;

            authUser = await _Mediator.Send(userQ);

            if (authUser != null)
            {
                ret = BuildUserAuthObject(authUser);
            }
            return(ret);
        }
        public async Task <ActionResult> LogIn([FromBody] AuthenticationQuery userAuth)
        {
            if (userAuth == null)
            {
                return(StatusCode(400));
            }

            if (!ModelState.IsValid)
            {
                return(new InvalidInputResponse(ModelState));
            }

            try {
                var user = await _Mediator.Send(userAuth);

                var key    = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["jwt:key"]));
                var creds  = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
                var claims = new List <Claim> {
                    new Claim(ClaimTypes.NameIdentifier, user.userName),
                    new Claim(ClaimTypes.Name, user.userName)
                };
                var identity  = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
                var principal = new ClaimsPrincipal(identity);
                var token     = new JwtSecurityToken(_configuration["jwt:Issuer"],
                                                     _configuration["jwt:Audience"],
                                                     claims,
                                                     expires: DateTime.Now.AddMinutes(30),
                                                     signingCredentials: creds);
                var serializedToken = new {
                    userId   = user.id,
                    userName = user.userName,
                    role     = user.role,
                    token    = new JwtSecurityTokenHandler().WriteToken(token)
                };

                return(StatusCode(200, serializedToken));
            } catch (NotFoundException e) {
                ModelState.AddModelError("Username or password", e.Message);
                return(new InvalidInputResponse(ModelState));
            }
        }
Пример #4
0
        /// <summary>
        /// Realiza a verificação do usuário para autenticação.
        /// </summary>
        /// <param name="email">Email do usuário</param>
        /// <param name="password">Senha do usuário</param>
        /// <returns>Entidade com o usuário encontrado</returns>
        public AuthenticationResult Authentication(AuthenticationQuery query)
        {
            using (var context = new DatabaseContext())
            {
                try
                {
                    var user = (from usuario in context.Usuario
                                join clinica in context.Clinica_Usuario on usuario.IdUsuario equals clinica.IdUsuario
                                where usuario.Email.Equals(query.Username) && clinica.IdClinica == query.IdClinica
                                select new
                    {
                        Nome = usuario.Nome,
                        Senha = usuario.Senha,
                        IdUsuario = usuario.IdUsuario,
                        IdUsuarioGrupo = clinica.IdUsuarioGrupo,
                        PrimeiroAcesso = usuario.PrimeiroAcesso
                    })
                               .FirstOrDefault();

                    if (user == null || PasswordHash.ValidatePassword(query.Password, user.Senha) == false)
                    {
                        return(null);
                    }

                    return(new AuthenticationResult
                    {
                        Nome = user.Nome,
                        IdUsuario = user.IdUsuario,
                        PrimeiroAcesso = user.PrimeiroAcesso,
                        IdUsuarioGrupo = user.IdUsuarioGrupo
                    });
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }