Exemple #1
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            var claims = new List <Claim>();

            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
            var identity = new ClaimsIdentity(context.Options.AuthenticationType);

            if (context.UserName == null && context.Password == null)
            {
                context.SetError("invalid_grant", "Usuario y contraseña son requeridos.");
                return;
            }
            var responloging = usuariosLogic.LogIng(context.UserName, context.Password, util.GetKey, util.GetIV);

            if (responloging.response)
            {
                var Usuario = usuariosLogic.GetUsuariosPorUserName(context.UserName);
                Usuario.IntentosFallidos = 0;
                var responseUpdateIntentosFallidos = usuariosLogic.Guardar(Usuario);
                if (!responseUpdateIntentosFallidos.response)
                {
                    context.SetError("invalid_grant", responseUpdateIntentosFallidos.mensaje);
                    return;
                }
                UsuarioViewModel user = new UsuarioViewModel
                {
                    UserName = Usuario.UserName,
                    Email    = Usuario.Email,
                    UserId   = Usuario.Id
                };

                var jsonUserMonitoreo = JsonConvert.SerializeObject(user);


                ////claims.Add(new Claim("Usuario", jsonUserMonitoreo));

                identity.AddClaim(new Claim("Usuario", jsonUserMonitoreo));
                ////context.Validated(new ClaimsIdentity(context.Options.AuthenticationType));
                ////context.Validated(claims);
                //context.Validated(identity);

                identity.AddClaim(new Claim("sub", context.UserName));
                identity.AddClaim(new Claim("role", "user"));

                context.Validated(identity);
            }
            else
            {
                context.SetError("invalid_grant", responloging.mensaje);
                return;
            }
        }
        public HttpResponseMessage ChangePassworduser(ChangeUserPasswordRequest request)
        {
            RespondModel respondModel = new RespondModel();
            ResponseMsj  responseMsj  = new ResponseMsj();

            try
            {
                if (!ModelState.IsValid)
                {
                    var ErrorList = ModelState.Keys
                                    .SelectMany(key => ModelState[key].Errors.Select(x => new { Error = key + " " + x.ErrorMessage })
                                                .ToList());

                    respondModel.SetResponse(false, string.Join("\n", ErrorList.Select(x => x.Error).ToList()));

                    return(responseMsj.CreateJsonResponse(respondModel, HttpStatusCode.BadRequest));
                }
                else
                {
                    /*Se  valida la contraseña actual*/

                    var responloging = userlogic.ValidatePasswordUser(request.Email, request.OldPassword, util.GetKey, util.GetIV);
                    /*Se  valida la contraseña actual*/

                    if (!responloging.response)
                    {
                        return(responseMsj.CreateJsonResponse(responloging, HttpStatusCode.BadRequest));
                    }
                    /*Se  obtiene el usuario*/

                    var Usuario = userlogic.GetUsuariosPorUserName(request.Email);
                    /*Se  obtiene el usuario*/

                    /*Se  obtiene el perfil del usuario*/

                    var perfil = perfilseg.GetPerfilbyId(Usuario.IdPerfilSeguridad);
                    /*Se  obtiene el perfil del usuario*/

                    /*Se valida que la nueva contraseña cumpla con los requsitos del perfil*/
                    var ValidPassword = CheckPassword(request.NewPassword, perfil.LenMinPass, perfil.CantLetrasMin, perfil.CantLetrasMayMin, perfil.CantNumeroMin, perfil.CantCharEspecialMin);
                    if (!ValidPassword.IsValid)
                    {
                        respondModel.SetResponse(false, string.Join("\n", ValidPassword.Mensajes));

                        return(responseMsj.CreateJsonResponse(respondModel, HttpStatusCode.BadRequest));
                    }
                    /*Se valida que la nueva contraseña cumpla con los requsitos del perfil*/

                    /*Se actualiza la nueva contraseña*/
                    Usuario.Password = util.encriptar(request.NewPassword);

                    /*Se guardan los cambios*/
                    respondModel = userlogic.Guardar(Usuario);
                    /*Se guardan los cambios*/


                    if (!respondModel.response)
                    {
                        return(responseMsj.CreateJsonResponse(respondModel, HttpStatusCode.BadRequest));
                    }

                    return(responseMsj.CreateJsonResponse(respondModel, HttpStatusCode.OK));
                }
            }
            catch (Exception ex)
            {
                return(responseMsj.CreateJsonResponse(ex.Message, HttpStatusCode.BadRequest));
            }
        }