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); } }
//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); }
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)); } }
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")); }
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); }
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)); }