public ICustomPrincipal getUserActivo(string dominio, string usuario, string password, Guid idconexion) { CustomPrincipal principal = null; string basedatos; if (checkPassword(dominio, usuario, password, out basedatos) && Existeusuarioactivo(basedatos, idconexion)) { using (var db = MarfilEntities.ConnectToSqlServer(basedatos)) { var objUser = db.Usuarios.Single(f => f.usuario == usuario); if (objUser != null) { if (objUser != null) { var objRole = db.Roles.First(f => f.Usuarios.Any(j => j.id == objUser.id)); var troleid = objRole?.id; var tempresa = GetEmpresaDefecto(objUser.id, db); var context = new LoginContextService(tempresa, 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 = almacenService.GetAlmacenDefecto(objUser.id, db, tempresa); var tejercicio = ejercicioService.GetEjercicioDefecto(objUser.id, db, tempresa); principal = new CustomPrincipal(usuario) { Id = objUser.id, RoleId = troleid ?? Guid.NewGuid(), Usuario = objUser.usuario, BaseDatos = basedatos, Roles = objUser.Roles.Select(x => x.role).ToList(), Empresa = tempresa, Ejercicio = tejercicio, Idconexion = idconexion, Fkalmacen = talmacen }; } } } } return(principal); }
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); }