Exemplo n.º 1
0
        private async Task <bool> PasswordChange(User usuario, string NewPassword)
        {
            try
            {
                usuario.Password        = Cripto.HashPassword(NewPassword);
                usuario.Token           = null;
                usuario.TokenExpiration = null;
                _context.Update(usuario);
                await _context.SaveChangesAsync();

                return(true);
            }
            catch (Exception) { }
            return(false);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            User usuario = new User
            {
                UserId     = model.UserId,
                Password   = Cripto.HashPassword(model.Password),
                ProfileId  = 2,
                UserActivo = true
            };

            if (ModelState.IsValid)
            {
                _context.Add(usuario);
                await _context.SaveChangesAsync();

                return(Redirect(returnUrl));
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> ResetPassword(string Password, string ConfirmPassword, string Token)
        {
            var usuario = new User();

            usuario                 = _context.User.Where(u => u.Token == Token).SingleOrDefault();
            usuario.Password        = Cripto.HashPassword(Password);
            usuario.Token           = null;
            usuario.TokenExpiration = null;

            if (ModelState.IsValid)
            {
                _context.Update(usuario);
                await _context.SaveChangesAsync();

                TempData["Message"] = "La contraseña fue cambiada correctamente.";
                return(RedirectToAction("Login", "Account"));
            }

            // If we got this far, something failed, redisplay form
            return(View(new ResetPasswordViewModel {
                Token = Token
            }));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Login(LoginModel loginModel)
        {
            var user = _context.User.FirstOrDefault(u => u.UserId == loginModel.Username && u.Password == Cripto.HashPassword(loginModel.Password));

            if (user != null)
            {
                if (user.UserActivo)
                {
                    string redirect      = "/Home";
                    string userName      = "";
                    string codificadorId = "";
                    string faseId        = "";
                    string email         = "";

                    if (user.ProfileId == 1 || user.ProfileId == 2)
                    {
                        var userfasecod = _context.UserFaseCodificador.FirstOrDefault(u => u.UserId == user.UserId);
                        var codificador = _context.Codificador.FirstOrDefault(c => c.CodificadorId == userfasecod.CodificadorId);
                        userName      = codificador.NombreCodificador;
                        codificadorId = userfasecod.CodificadorId.ToString();
                        faseId        = userfasecod.FaseId.ToString();
                        email         = codificador.Email;
                        redirect      = "/Codificacion";
                    }
                    else if (user.ProfileId == 0)
                    {
                        userName = "******";
                        redirect = "/Admin";
                    }
                    var claims = new List <Claim> {
                        new Claim(ClaimTypes.Sid, user.UserId),
                        new Claim(ClaimTypes.Role, user.ProfileId.ToString()),
                        new Claim(ClaimTypes.UserData, codificadorId),
                        new Claim(ClaimTypes.Version, faseId),
                        new Claim(ClaimTypes.Name, userName),
                        new Claim(ClaimTypes.Email, email)
                    };
                    var             userIdentity = new ClaimsIdentity(claims, "login");
                    ClaimsPrincipal principal    = new ClaimsPrincipal(userIdentity);
                    await HttpContext.SignInAsync(principal);

                    return(Redirect(redirect));
                }
                else
                {
                    TempData["Message"] = "Usuario desactivado.";
                }
            }
            else
            {
                TempData["Message"] = "Usuario o contraseña no válidos.";
            }

            return(View());
        }
Exemplo n.º 5
0
        private User LoginUser(string username, string password)
        {
            var usuario = _context.User.FirstOrDefault(u => u.UserId == username && u.Password == Cripto.HashPassword(password));

            return(usuario);
        }
Exemplo n.º 6
0
        public async Task <IActionResult> ChangePassword(string OldPassword, string NewPassword)
        {
            var    identity = (ClaimsIdentity)HttpContext.User.Identity;
            string userId   = identity.GetSpecificClaim(ClaimTypes.Sid);

            if (userId == null)
            {
                return(NotFound());
            }

            var usuario = _context.User.FirstOrDefault(u => u.UserId == userId && u.Password == Cripto.HashPassword(OldPassword));

            if (usuario != null && await PasswordChange(usuario, NewPassword))
            {
                TempData["Message"] = "La contraseña fue cambiada correctamente.";
            }
            else
            {
                TempData["Message"] = "Error en los datos. No se pudo cambiar la contraseña.";
            }

            return(RedirectToAction("Codificador", "Account"));
        }