Exemple #1
0
        public async Task <IActionResult> Login(LoginViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                AppUser svcUser   = null;
                var     unEncrytp = HelperExtensions.getPasswordHashed(model.Password);
                var     result    = db.Profile
                                    .Where(p => p.Username == model.username && p.Password == unEncrytp)
                                    .FirstOrDefault();

                if (result == null)
                {
                    ModelState.AddModelError(string.Empty, "El usuario y/o la contraseña es incorrecto.");
                    return(View("Login2", model));
                }

                if (result.Nestado == 91)
                {
                    ModelState.AddModelError(string.Empty, "Usuario bloqueado.");
                    return(View("Login2", model));
                }

                var roles = db.Profilerole.Where(r => r.Username == model.username).Select(r => r.RoleId).ToArray();

                if (roles.Length == 0)
                {
                    ModelState.AddModelError(string.Empty, "El usuario no tiene permisos asignados, contacte al administrador de sistemas");
                    return(View("Login2", model));
                }

                var caja = db.Caja.Find(result.CajaId);
                svcUser = new AppUser()
                {
                    username     = result.Username,
                    ncentrocosto = result.Ncentrocosto,
                    Token        = model.Password,
                    roles        = roles,
                    cajaid       = result.CajaId,
                    description  = caja.Description
                };

                await HttpContext.SignInAsync(svcUser.CreatePrincipal());

                return(RedirectToLocal(returnUrl));
            }
            return(View("Login2", model));
        }