Пример #1
0
        public bool checkPassword(string dominio, string usuario, string password, out string basedatos)
        {
            bool retorno = false;

            var licenciaModel = new LicenciasaplicacionService(dominio);

            if (!licenciaModel.Activado)
            {
                throw new LicenciaException("No tiene activada ninguna licencia. Consulte a su administrador.");
            }

            basedatos = licenciaModel.Basedatos;

            using (var db = MarfilEntities.ConnectToSqlServer(basedatos))
            {
                if (usuario.Equals(ApplicationHelper.UsuariosAdministrador))
                {
                    var admin = db.Administrador.FirstOrDefault(u => u.password == password);
                    if (admin != null)
                    {
                        return(true);
                    }
                }
                else
                {
                    var objUser = db.Usuarios.FirstOrDefault(u => u.usuario == usuario && u.password == password);
                    if (objUser != null)
                    {
                        return(true);
                    }
                }

                return(retorno);
            }
        }
Пример #2
0
        //Rai ---> puedeEntrarEempresa para el botón de arriba del header, NO se tienen en cuenta el check de poder cambiar de empresa
        public bool puedeEntrarEmpresa(string basedatos, string user, string empresa, string dominio)
        {
            var result = true;

            try
            {
                var licenciaModel = new LicenciasaplicacionService(dominio);
                using (var db = MarfilEntities.ConnectToSqlServer(licenciaModel.Basedatos))
                {
                    var descripcionempresa = db.Empresas.Where(f => f.id == empresa).Select(f => f.nombre).SingleOrDefault();
                    var usuariodb          = db.Usuarios.Where(f => f.usuario == user).Single();
                    var empresadb          = db.Empresas.Where(f => f.id == empresa).Single();

                    if (!(ApplicationHelper.UsuariosAdministrador == user || (usuariodb.nivel >= empresadb.nivel) || (usuariodb.nivel == null && empresadb.nivel == 0)))
                    {
                        throw new CambiarEmpresaException("No tiene permisos sobre la empresa " + descripcionempresa + " Consulte con su administrador");
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex is CambiarEmpresaException)
                {
                    throw;
                }
                result = false;
            }

            return(result);
        }
Пример #3
0
        private void Validarlicencia(Guid idusuario, string usuario, LicenciasaplicacionService licenciasService, MarfilEntities db)
        {
            if (!licenciasService.Activado)
            {
                throw new LicenciaException("No tiene activada ninguna licencia. Consulte a su administrador.");
            }

            if (db.Usuariosactivos.Any(f => f.fkusuarios == idusuario))
            {
                throw new UsuarioensuoException(string.Format("El usuario {0} ya está en uso.", usuario));
            }

            if (db.Usuariosactivos.Count() >= licenciasService.Usuarioslicencia)
            {
                throw new UsuarioactivoException(string.Format("Se ha alcanzado el número máximo de usuarios activos ({0}) y no puede conectarse a la aplicación.", licenciasService.Usuarioslicencia));
            }
        }
Пример #4
0
        public ActionResult ForzarDesconexion(string usuario)
        {
            try
            {
                var licenciaModel = new LicenciasaplicacionService(_dominio);
                _loginService.Forzardesconexion(licenciaModel.Basedatos, usuario);

                TempData[Constantes.VariableMensajeExito] = General.MensajeExitoOperacionForzarDesconexion;
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
            }


            return(RedirectToAction("Index"));
        }
Пример #5
0
        private bool LoginInternal(string dominio, string usuario, string contraseña, out SecurityTicket model, string empresa, string ejercicio, string almacen)
        {
            var result = true;

            model = null;
            try
            {
                var tusuario   = usuario;
                var tid        = Guid.Empty;
                var troleid    = Guid.Empty;
                var tbasedatos = "";
                var tempresa   = string.Empty;

                var tazureblob = "";


                var licenciaModel = new LicenciasaplicacionService(dominio);
                tbasedatos = licenciaModel.Basedatos;
                tazureblob = licenciaModel.Azureblob;

                using (var db = MarfilEntities.ConnectToSqlServer(licenciaModel.Basedatos))
                {
                    if (usuario.Equals(ApplicationHelper.UsuariosAdministrador))
                    {
                        var admin = db.Administrador.FirstOrDefault(u => u.password == contraseña);
                        if (admin == null)
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        var objUser = db.Usuarios.FirstOrDefault(u => u.usuario == usuario && u.password == contraseña);
                        if (objUser != null)
                        {
                            var objRole = db.Roles.First(f => f.Usuarios.Any(j => j.id == objUser.id));
                            tid     = objUser.id;
                            troleid = objRole.id;
                        }
                        else
                        {
                            return(false);
                        }
                    }

                    //Rai
                    tempresa = string.IsNullOrEmpty(empresa) ? GetEmpresaDefecto(tid, db) : empresa;
                    var descripcionempresa = db.Empresas.Where(f => f.id == tempresa).Select(f => f.nombre).SingleOrDefault();

                    if (puedeEntrarEmpresa(tbasedatos, tusuario, tempresa, dominio))
                    {
                        Validarlicencia(tid, usuario, licenciaModel, db);

                        var context          = new LoginContextService(tempresa, licenciaModel.Basedatos);
                        var ejercicioService = FService.Instance.GetService(typeof(EjerciciosModel), context, db) as EjerciciosService;
                        var almacenService   = FService.Instance.GetService(typeof(AlmacenesModel), context, db) as AlmacenesService;
                        var talmacen         = string.IsNullOrEmpty(almacen) ? almacenService.GetAlmacenDefecto(tid, db, tempresa) : almacen;
                        var tejercicio       = string.IsNullOrEmpty(ejercicio) ? ejercicioService.GetEjercicioDefecto(tid, db, tempresa) : ejercicio;

                        model = new SecurityTicket
                        {
                            Usuario      = tusuario,
                            Id           = tid,
                            RoleId       = troleid,
                            BaseDatos    = tbasedatos,
                            Empresa      = tempresa,
                            Ejercicio    = tejercicio,
                            Fkalmacen    = talmacen,
                            Tipolicencia = licenciaModel.TipoLicencia,
                            Azureblob    = tazureblob
                                           //serializeModel.Roles = db.USUARIOROLE.Where(i => i.IDUSUARIO == u.ID).Select(i => i.ROLE.NOMBRE).ToList();
                        };
                        CreateUsuarioActivo(model, db);
                        // esto es la validación
                        //var u = db.Usuarios.FirstOrDefault(i => i.Usuario == usu.Email && i.PWD == usu.Password && i.IFACTIVO);

                        var preferencias = new PreferenciasUsuarioService(db);
                        preferencias.SetPreferencia(TiposPreferencias.EmpresaDefecto, tid, PreferenciaEmpresaDefecto.Id, PreferenciaEmpresaDefecto.Nombre, new PreferenciaEmpresaDefecto()
                        {
                            Empresa = tempresa
                        });

                        if (tempresa != ApplicationHelper.EmpresaMock)
                        {
                            var ejercicioPreferencia = new PreferenciaEjercicioDefecto();
                            ejercicioPreferencia.SetEjercicio(tempresa, tejercicio);

                            var almacenPreferencia = new PreferenciaAlmacenDefecto();
                            almacenPreferencia.SetAlmacen(tempresa, talmacen);

                            preferencias.SetPreferencia(TiposPreferencias.EjercicioDefecto, tid, PreferenciaEjercicioDefecto.Id, PreferenciaEjercicioDefecto.Nombre, ejercicioPreferencia);
                            preferencias.SetPreferencia(TiposPreferencias.AlmacenDefecto, tid, PreferenciaAlmacenDefecto.Id, PreferenciaAlmacenDefecto.Nombre, almacenPreferencia);
                        }
                    }

                    else
                    {
                        throw new CambiarEmpresaException("No tiene permisos sobre la empresa " + descripcionempresa + " Consulte con su administrador");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
                if (ex is LicenciaException)
                {
                    throw;
                }
                if (ex is UsuarioactivoException)
                {
                    throw;
                }
                if (ex is UsuarioensuoException)
                {
                    throw;
                }
                if (ex is CambiarEmpresaException)
                {
                    throw;
                }
                result = false;
            }

            return(result);
        }
Пример #6
0
        public ActionResult Index(LoginModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var context       = new ContextLogin();
                    var licenciaModel = new LicenciasaplicacionService(_dominio);
                    context.BaseDatos = licenciaModel.Basedatos;
                    context.Azureblob = licenciaModel.Azureblob;
                    using (var startupService = new StartupService(context, context.BaseDatos))
                    {
                        if (startupService.ExisteAdmin()) //esto no deberia estar aqui!
                        {
                            HttpCookie securityCookie;
                            if (_loginService.Login(_dominio, model.Usuario, model.Contraseña, out securityCookie))
                            {
                                //ensure != null
                                securityCookie.Expires = DateTime.Now.AddMinutes(120);
                                Response.Cookies.Add(securityCookie);
                                if (model.Recordarme)
                                {
                                    WebHelper.CreateCookie("login", $"{model.Usuario}#{licenciaModel.Basedatos}");
                                }
                                else
                                {
                                    WebHelper.RemoveCookie();
                                }

                                return(RedirectToLocal(model.ReturUrl));
                            }

                            ModelState.AddModelError("", "Usuario, contraseña o base de datos incorrectas");
                        }
                        else
                        {
                            return(RedirectToAction("Admin", "Startup", new { id = licenciaModel.Basedatos }));
                        }
                    }
                }
                catch (LicenciaException ex)
                {
                    ModelState.AddModelError("", ex.Message); //añadir lenguaje settings
                }
                catch (UsuarioactivoException ex)
                {
                    ModelState.AddModelError("", ex.Message); //añadir lenguaje settings
                }
                catch (UsuarioensuoException ex)
                {
                    model.Usuariobloqueado = true;
                }

                //Rai
                catch (CambiarEmpresaException ex)
                {
                    ModelState.AddModelError("", ex.Message); //añadir lenguaje settings
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", "Usuario, contraseña o base de datos incorrectas");//añadir lenguaje settings
                }
            }

            return(View(model));
        }