Esempio n. 1
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            SistemaJYREntities db = new SistemaJYREntities();

            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email, Cedula = model.Cedula, Nombre = model.Nombre, Apellido1 = model.Apellido1, Apellido2 = model.Apellido2, Rol = 3, Estado = true
                };
                AspNetUsers validacion = null;
                try
                {
                    validacion = db.AspNetUsers.Where(x => x.Cedula == model.Cedula).First();
                }
                catch (System.Exception)
                {
                    validacion = null;
                }

                if (validacion != null)
                {
                    Session["Ced"] = "Duplicada";
                    return(View(model));
                }
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    result = await UserManager.AddToRoleAsync(user.Id, "Cliente");

                    //await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
                    Session["usuario"] = user;

                    // Para obtener más información sobre cómo habilitar la confirmación de cuentas y el restablecimiento de contraseña, visite https://go.microsoft.com/fwlink/?LinkID=320771
                    // Enviar correo electrónico con este vínculo
                    string callbackUrl = await EnviarCorreoAsync(user.Id, "Confirma tu cuenta", 1);

                    Session["MensajeIndex"] = "Confirma tú cuenta";
                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            return(View(model));
        }
Esempio n. 2
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // Require the user to have a confirmed email before they can log on.
            var user = await UserManager.FindByNameAsync(model.Email);

            if (user != null)
            {
                if (!await UserManager.IsEmailConfirmedAsync(user.Id))
                {
                    string callbackUrl = await EnviarCorreoAsync(user.Id, "Confirma tu cuenta-Reenviado", 1);

                    Session["MensajeIndex"] = "Confirma tu cuenta-Reenviado";
                    ViewBag.errorMessage    = "Debe confirmar su correo para iniciar sesión."
                                              + "La confirmación ha sido reenviada a su correo electrónico.";
                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    Session["usuario"] = user;
                }
            }

            // No cuenta los errores de inicio de sesión para el bloqueo de la cuenta
            // Para permitir que los errores de contraseña desencadenen el bloqueo de la cuenta, cambie a shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : true);

            switch (result)
            {
            case SignInStatus.Success:
                Models.SistemaJYREntities en    = new SistemaJYREntities();
                ApplicationUser           userr = new ApplicationUser();
                AspNetUsers us = en.AspNetUsers.Where(x => x.Email == model.Email).First();
                userr.Nombre       = us.Nombre;
                userr.Apellido1    = us.Apellido1;
                userr.Apellido2    = us.Apellido2;
                userr.Cedula       = us.Cedula;
                userr.Email        = us.Email;
                userr.UserName     = us.UserName;
                userr.Rol          = us.Rol;
                userr.Estado       = us.Estado;
                Session["usuario"] = userr;

                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                Session["MensajeIndex"] = "Lockout";
                return(RedirectToAction("Index", "Home"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Usuario o contraseña incorrectos, intentelo de nuevo.");
                return(View(model));
            }
        }