public Usuario Autenticar(AutenticacaoTipo autenticacaoTipo, string nomeDeUsuario, string Senha) { IAutenticacaoAdService adService; IAutenticacaoSapService sapService; Usuario usuario = null; switch (autenticacaoTipo) { case AutenticacaoTipo.Cms: adService = InjectorManager.GetInstance <IAutenticacaoAdService>(); usuario = adService.Autenticar(nomeDeUsuario, Senha); break; case AutenticacaoTipo.Mobile: sapService = InjectorManager.GetInstance <IAutenticacaoSapService>(); usuario = sapService.Autenticar(nomeDeUsuario, Senha); break; default: break; } return(usuario); }
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { var appNameHeaderItem = context.Request.Headers.FirstOrDefault(item => item.Key.Equals("App")); IAutenticacaoService Autenticacaoservice; Usuario user = null; AutenticacaoTipo TipoAutenticacao = 0; try { if (appNameHeaderItem.Value != null && appNameHeaderItem.Value.Length > 0) { TipoAutenticacao = RetornarTipoAutenticacao(appNameHeaderItem.Value[0]); Autenticacaoservice = InjectorManager.GetInstance <IAutenticacaoService>(); user = Autenticacaoservice.Autenticar(TipoAutenticacao, context.UserName, context.Password); } } catch (BusinessServiceException exception) { context.SetError("invalid_grant", exception.Message); return; } catch { context.SetError("invalid_grant", "Um erro crítico ocorreu durante a autenticação. Contacte a área responsável"); return; } var identity = new ClaimsIdentity(context.Options.AuthenticationType); var aceitouTermoDeUso = VerificarSeUsuarioJaAceitouTermoDeuso(user.NomeDeUsuario); identity.AddClaim(new Claim("NomeDeUsuario", user.NomeDeUsuario)); identity.AddClaim(new Claim("NomeDePerfil", user.Nome)); identity.AddClaim(new Claim("AceitouTermoDeUso", aceitouTermoDeUso.ToString())); if (user.PerfilAdministrador) { identity.AddClaim(new Claim(ClaimTypes.Role, "Administrador")); } if (user.PerfilEditor) { identity.AddClaim(new Claim(ClaimTypes.Role, "Editor")); } if (user.PerfilMobile) { identity.AddClaim(new Claim(ClaimTypes.Role, "Mobile")); } if (TipoAutenticacao == AutenticacaoTipo.Cms) { identity.AddClaim(new Claim(ClaimTypes.Role, "UsuarioCms")); } if (TipoAutenticacao == AutenticacaoTipo.Mobile) { identity.AddClaim(new Claim(ClaimTypes.Role, "UsuarioApp")); } context.Validated(identity); }