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)); } }