コード例 #1
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            var roles = new List <string>();

            _roles = new Dictionary <string, string>();

            context.OwinContext.Response.Headers.Remove("Cache-Control");
            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

            var identity = new ClaimsIdentity(context.Options.AuthenticationType);


            try
            {
                _usuario = await _usuarioAppService.Authenticantion(context.UserName, context.Password);

                if (_usuario == null)
                {
                    throw new Exception(Errors.UserNotFound);
                }


                identity.AddClaim(new Claim(ClaimTypes.Role, _usuario.UsuarioPerfil.NomeUsuarioPerfil, _usuario.UsuarioPerfil.UsuarioPerfilId.ToString("")));
                roles.Add(_usuario.UsuarioPerfil.NomeUsuarioPerfil);
                _roles.Add(_usuario.UsuarioPerfil.NomeUsuarioPerfil, _usuario.UsuarioPerfil.UsuarioPerfilId.ToString(""));



                identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));

                var principal = new GenericPrincipal(identity, roles.ToArray());

                Thread.CurrentPrincipal = principal;


                await Task.FromResult(context.Validated(identity));
            }
            catch (Exception ex)
            {
                context.SetError("invalid_grant", ex.Message);
            }
        }