public async Task <ActionResult> SeleccionarModulo(string codigoModulo) { int?usuarioId = ManejadorSessionAcceso.getSession(ManejadorSessionAcceso.EnumerableSessionAcceso.usuario_id_pasado_autentificacion) as int?; if (usuarioId.HasValue && usuarioId.Value > 0 && !string.IsNullOrWhiteSpace(codigoModulo)) { //Verificar q la cuenta no este asignada a otro usuario var usuario = await usuarioService.Get(new EntityDto <int>(usuarioId.Value)); if (usuario != null) { // El usuario tiene el modulo asociado var modulo = usuario.Modulos.Where(c => c.Codigo == codigoModulo).SingleOrDefault(); if (modulo == null) { string error = string.Format("El usuario {0}, no tiene asociado el modulo con el codigo {1}", usuario.Cuenta, codigoModulo); throw new GenericException(error, error); } return(await AutentificarUsuario(usuario, modulo)); } Log.InfoFormat("El usuario con Identificador {0}, no existe", usuarioId.Value); } return(RedirectToAction("Ingreso", new { msg = "El usuario o el módulo seleccionado no esta asociado" })); }
public async Task <ActionResult> SeleccionarModulo() { int?usuarioId = ManejadorSessionAcceso.getSession(ManejadorSessionAcceso.EnumerableSessionAcceso.usuario_id_pasado_autentificacion) as int?; if (usuarioId.HasValue && usuarioId.Value > 0) { var usuario = await usuarioService.Get(new EntityDto <int>(usuarioId.Value)); return(View(usuario)); } return(RedirectToAction("Ingreso", new { msg = "Ingrese sus credenciales" })); }
public async Task <ActionResult> CambiarClave() { int?usuarioId = ManejadorSessionAcceso.getSession(ManejadorSessionAcceso.EnumerableSessionAcceso.usuario_id_pasado_autentificacion) as int?; if (usuarioId.HasValue && usuarioId.Value > 0) { var usuario = await usuarioService.Get(new EntityDto <int>(usuarioId.Value)); if (usuario != null) { var model = new NuevaClaveViewModel(); model.NombreUsuario = usuario.NombresCompletos(); return(View(model)); } } return(RedirectToAction("Ingreso", new { msg = "Ingrese sus credenciales" })); }
public async Task <ActionResult> Reset(string code) { //1. Verificar correo de reseteo var loginResult = await LoginManager.ValidatePasswordResetCode(code); if (loginResult.Result == LoginResultType.SucessPasswordResetCode) { //Por seguridad cerrar la sesion actual, evitar cruces de usuarios authenticationManager.SignOut(); Session.Clear(); //Guardar en sesion, la cuenta que ya sido autentificada parcialmente ManejadorSessionAcceso.setSession(ManejadorSessionAcceso.EnumerableSessionAcceso.usuario_id_pasado_autentificacion, loginResult.User.Id); return(RedirectToAction("CambiarClave")); } return(RedirectToAction("Ingreso", new { msg = "El código es inválido o ha caducado. Ingrese sus credenciales" })); }
public async Task <ActionResult> Ingreso(IngresoViewModel model) { try { if (ModelState.IsValid) { //1. Autentificacion model.Usuario = model.Usuario.Trim(); var loginResult = await LoginManager.LoginAsync(model.Usuario, model.Password); if (loginResult.Result == LoginResultType.InvalidUserNameOrEmailAddress || loginResult.Result == LoginResultType.InvalidPassword) { Log.InfoFormat("No existe el usuario [{0}]", model.Usuario); ModelState.AddModelError("", string.Format("Usuario ó Clave incorrecta")); //Setear nuevamente el campo usuario ViewBag.Usuario = model.Usuario; return(IntentarIngreso(model)); } if (loginResult.Result == LoginResultType.LockedOut) { Log.InfoFormat(string.Format("El usuario [{0}], se encuentra bloqueado/inactivo", model.Usuario)); ModelState.AddModelError("", string.Format("El usuario [{0}], se encuentra bloqueado/inactivo", model.Usuario)); return(IntentarIngreso(model)); } if (loginResult.Result == LoginResultType.SucessPasswordResetCode) { //Guardar en sesion, la cuenta que ya sido autentificada ManejadorSessionAcceso.setSession(ManejadorSessionAcceso.EnumerableSessionAcceso.usuario_id_pasado_autentificacion, loginResult.User.Id); return(RedirectToAction("CambiarClave")); } if (loginResult.Result == LoginResultType.SucessAuthentication) { var usuario = loginResult.User; //Si unicamente existe un modulo if (usuario.Modulos.Count == 1) { var moduloDefault = usuario.Modulos.FirstOrDefault(); var mensaje = string.Format("El usuario {0} ingresa por defecto con el codigo de modulo {1} , fecha y hora: {2}", usuario, moduloDefault.Codigo , Application.getDateTime()); return(await AutentificarUsuario(usuario, moduloDefault)); } else if (usuario.Modulos.Count > 1) { Log.InfoFormat(string.Format("El usuario [{0}], posee varios modulos ", model.Usuario)); //Guardar en sesion, la cuenta que ya sido autentificada ManejadorSessionAcceso.setSession(ManejadorSessionAcceso.EnumerableSessionAcceso.usuario_id_pasado_autentificacion, usuario.Id); return(RedirectToAction("SeleccionarModulo")); } else if (usuario.Modulos.Count == 0) { Log.ErrorFormat("Sistema. El usuario no posee modulos asociadas"); ModelState.AddModelError(string.Empty, "El usuario no posee modulos asociadas"); } } Log.InfoFormat("Sistema. El usuario {0} no existe", model.Usuario); ModelState.AddModelError(string.Empty, string.Format("El usuario no existe. {0}", loginResult.Result.ToString())); } } catch (Exception ex) { var result = ManejadorExcepciones.HandleException(ex); Log.ErrorFormat(result.Message); ModelState.AddModelError("", result.Message); } return(View(model)); }
public async Task <ActionResult> CambiarClave(NuevaClaveViewModel model) { try { if (ModelState.IsValid) { int?usuarioId = ManejadorSessionAcceso.getSession(ManejadorSessionAcceso.EnumerableSessionAcceso.usuario_id_pasado_autentificacion) as int?; if (usuarioId.HasValue && usuarioId.Value > 0) { //Cambiar Clave var loginResult = await LoginManager.ChangePasswordAsync(usuarioId.Value, model.Password); if (loginResult.Result == LoginResultType.SucessAuthentication) { var usuario = loginResult.User; //Si unicamente existe un modulo if (usuario.Modulos.Count == 1) { var moduloDefault = usuario.Modulos.FirstOrDefault(); var mensaje = string.Format("El usuario {0} ingresa por defecto con el codigo de modulo {1} , fecha y hora: {2}", usuario, moduloDefault.Codigo , Application.getDateTime()); return(await AutentificarUsuario(usuario, moduloDefault)); } else if (usuario.Modulos.Count > 1) { Log.InfoFormat(string.Format("El usuario [{0}], posee varios modulos ", loginResult.User.Cuenta)); //Guardar en sesion, la cuenta que ya sido autentificada ManejadorSessionAcceso.setSession(ManejadorSessionAcceso.EnumerableSessionAcceso.usuario_id_pasado_autentificacion, usuario.Id); return(RedirectToAction("SeleccionarModulo")); } else if (usuario.Modulos.Count == 0) { Log.ErrorFormat("Sistema. El usuario no posee modulos asociadas"); ModelState.AddModelError(string.Empty, "El usuario no posee modulos asociadas"); } } ModelState.AddModelError("", loginResult.Result.ToString()); } else { return(RedirectToAction("Ingreso", new { msg = "Ingrese sus credenciales" })); } } } catch (Exception ex) { var result = ManejadorExcepciones.HandleException(ex); Log.ErrorFormat(result.Message); ModelState.AddModelError("", result.Message); } return(View(model)); }