/// <summary> /// Responsável por efetuar login do usuário na aplicação /// </summary> /// <param name="context"></param> /// <returns></returns> public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { return(Task.Factory.StartNew(() => { var authOrquestrador = new AuthOrquestrador(); try { var usuario = authOrquestrador.Login(context.UserName, context.Password); if ((usuario != null) && (usuario.ID > 0)) { IList <Claim> claims = new List <Claim>() { new Claim(ClaimTypes.Name, !string.IsNullOrWhiteSpace(usuario.Nome)?usuario.Nome:usuario.Email), new Claim("UserID", usuario.ID.ToString()), new Claim(ClaimTypes.Role, usuario.Claim), new Claim("usuario", Newtonsoft.Json.JsonConvert.SerializeObject(usuario)), }; ClaimsIdentity oAuthIdentity = new ClaimsIdentity(claims, Startup.OAuthOptions.AuthenticationType); context.Validated(new Microsoft.Owin.Security.AuthenticationTicket(oAuthIdentity, new Microsoft.Owin.Security.AuthenticationProperties() { })); return; } context.SetError("3", "Usuário não autenticado"); } catch (RegistroNaoEncontradoException ex) { //Failure = 3 context.SetError("3", ex.Message); } catch (UsuarioBloqueadoException ex) { // LockedOut = 1, context.SetError("1", ex.Message); } catch (UsuarioNaoVerificadoException ex) { //RequiresVerification = 2, context.SetError("2", ex.Message); } catch (Exception ex) { context.SetError("3", "Usuário não autenticado"); } })); }
/// <summary> /// Construtor estático do controle para garantir uma única instância do orquestrador /// </summary> static AuthController() { _orquestrador = new AuthOrquestrador(); }