public bool Login(string dominio, string usuario, string contraseña, out HttpCookie securityCookie, string empresa, string ejercicio, string almacen)
        {
            securityCookie = null;
            try
            {
                var modelSecurity = new SecurityTicket();
                if (LoginInternal(dominio, usuario, contraseña, out modelSecurity, empresa, ejercicio, almacen))
                {
                    if (modelSecurity != null)
                    {
                        var serializer = new JavaScriptSerializer();
                        var userData   = serializer.Serialize(modelSecurity);
                        var authTicket = new FormsAuthenticationTicket(
                            1,
                            usuario,
                            DateTime.Now,
                            DateTime.Now.AddMinutes(120),     //meter en settings
                            false,
                            userData);

                        var encTicket = FormsAuthentication.Encrypt(authTicket);
                        securityCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
                        return(true);
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex is LicenciaException)
                {
                    throw;
                }
                if (ex is UsuarioactivoException)
                {
                    throw;
                }
                if (ex is UsuarioensuoException)
                {
                    throw;
                }
                if (ex is CambiarEmpresaException)
                {
                    throw;
                }
                Console.Write(ex.Message);
            }

            return(false);
        }
 private void CreateUsuarioActivo(SecurityTicket model, MarfilEntities db)
 {
     try
     {
         var nuevoUsuarioActivo = db.Usuariosactivos.Create();
         nuevoUsuarioActivo.fkusuarios           = model.Id;
         nuevoUsuarioActivo.fechaconexion        = DateTime.Now;
         nuevoUsuarioActivo.fechaultimaoperacion = DateTime.Now;
         nuevoUsuarioActivo.idconexion           = Guid.NewGuid();
         model.Idconexion = nuevoUsuarioActivo.idconexion;
         db.Usuariosactivos.Add(nuevoUsuarioActivo);
         db.SaveChanges();
     }
     catch (Exception)
     {
         throw new UsuarioensuoException(string.Format("El usuario {0} ya está en uso.", model.Usuario));
     }
 }
        public bool Login(string dominio, string usuario, string contraseña, out HttpCookie securityCookie)
        {
            securityCookie = null;
            try
            {
                var modelSecurity = new SecurityTicket
                {
                    Usuario    = ApplicationHelper.UsuariosAdministrador,
                    Id         = Guid.Empty,
                    Idconexion = Guid.Empty,
                    RoleId     = Guid.Empty,
                    BaseDatos  = "marfil",
                    Empresa    = "0001",
                    Ejercicio  = "2"
                                 //serializeModel.Roles = db.USUARIOROLE.Where(i => i.IDUSUARIO == u.ID).Select(i => i.ROLE.NOMBRE).ToList();
                };
                var serializer = new JavaScriptSerializer();
                var userData   = serializer.Serialize(modelSecurity);
                var authTicket = new FormsAuthenticationTicket(
                    1,
                    usuario,
                    DateTime.Now,
                    DateTime.Now.AddMinutes(120),        //meter en settings
                    false,
                    userData);

                var encTicket = FormsAuthentication.Encrypt(authTicket);
                securityCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
                return(true);
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

            return(true);
        }
        public void SetEmpresaUser(string dominio, string basedatos, string user, string empresa, string ejercicio, string almacen, Guid idconexion, out HttpCookie cookie)
        {
            cookie = null;
            try
            {
                var modelSecurity = new SecurityTicket();
                var serializer    = new JavaScriptSerializer();
                var userData      = serializer.Serialize(modelSecurity);
                var authTicket    = new FormsAuthenticationTicket(
                    1,
                    user,
                    DateTime.Now,
                    DateTime.Now.AddMinutes(120),        //meter en settings
                    false,
                    userData);

                var encTicket = FormsAuthentication.Encrypt(authTicket);
                cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }
        }
        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 bool Login(string dominio, string usuario, string contraseña, out SecurityTicket model)
 {
     return(LoginInternal(dominio, usuario, contraseña, out model, string.Empty, string.Empty, string.Empty));
 }