예제 #1
0
        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" }));
        }
예제 #2
0
        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" }));
        }
예제 #3
0
        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" }));
        }
예제 #4
0
        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" }));
        }
예제 #5
0
        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));
        }
예제 #6
0
        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));
        }