Ejemplo n.º 1
0
        private void InsertRecord(IDbExecuter db, AzRecord r)
        {
            var q = Insert("core_acl", r.Tenant)
                    .InColumnValue("subject", r.SubjectId.ToString())
                    .InColumnValue("action", r.ActionId.ToString())
                    .InColumnValue("object", r.ObjectId ?? string.Empty)
                    .InColumnValue("acetype", r.Reaction);

            db.ExecNonQuery(q);
        }
Ejemplo n.º 2
0
        private void DeleteRecord(IDbExecuter db, AzRecord r)
        {
            var q = Delete("core_acl", r.Tenant)
                    .Where("subject", r.SubjectId.ToString())
                    .Where("action", r.ActionId.ToString())
                    .Where("object", r.ObjectId ?? string.Empty)
                    .Where("acetype", r.Reaction);

            db.ExecNonQuery(q);
        }
Ejemplo n.º 3
0
        private bool ExistEscapeRecord(IDbExecuter db, AzRecord r)
        {
            var q = Query("core_acl", Tenant.DEFAULT_TENANT)
                    .SelectCount()
                    .Where("subject", r.SubjectId.ToString())
                    .Where("action", r.ActionId.ToString())
                    .Where("object", r.ObjectId ?? string.Empty)
                    .Where("acetype", r.Reaction);

            return(db.ExecScalar <int>(q) != 0);
        }
Ejemplo n.º 4
0
 private void InsertRecord(IDbExecuter db, AzRecord r)
 {
     var q = Insert("core_acl", r.Tenant)
         .InColumnValue("subject", r.SubjectId.ToString())
         .InColumnValue("action", r.ActionId.ToString())
         .InColumnValue("object", r.ObjectId ?? string.Empty)
         .InColumnValue("acetype", r.Reaction);
     db.ExecNonQuery(q);
 }
Ejemplo n.º 5
0
 private void DeleteRecord(IDbExecuter db, AzRecord r)
 {
     var q = Delete("core_acl", r.Tenant)
         .Where("subject", r.SubjectId.ToString())
         .Where("action", r.ActionId.ToString())
         .Where("object", r.ObjectId ?? string.Empty)
         .Where("acetype", r.Reaction);
     db.ExecNonQuery(q);
 }
Ejemplo n.º 6
0
 private bool ExistEscapeRecord(IDbExecuter db, AzRecord r)
 {
     var q = Query("core_acl", Tenant.DEFAULT_TENANT)
         .SelectCount()
         .Where("subject", r.SubjectId.ToString())
         .Where("action", r.ActionId.ToString())
         .Where("object", r.ObjectId ?? string.Empty)
         .Where("acetype", r.Reaction);
     return db.ExecScalar<int>(q) != 0;
 }
Ejemplo n.º 7
0
        private void ValidateDomain(IDbExecuter db, string domain, int tenantId, bool validateCharacters)
        {
            // size
            if (string.IsNullOrEmpty(domain))
            {
                throw new TenantTooShortException("Tenant domain can not be empty.");
            }
            if (domain.Length < 6 || 50 <= domain.Length)
            {
                throw new TenantTooShortException("Length of domain must be greater than or equal to 6 and less than or equal to 50.");
            }

            // characters
            if (validateCharacters && !validDomain.IsMatch(domain))
            {
                throw new TenantIncorrectCharsException("Domain contains invalid characters.");
            }

            // forbidden or exists
            var exists = false;

            domain = domain.ToLowerInvariant();
            if (!exists)
            {
                if (forbiddenDomains == null)
                {
                    forbiddenDomains = ExecList(new SqlQuery("tenants_forbiden").Select("address")).Select(r => (string)r[0]).ToList();
                }
                exists = tenantId != 0 && forbiddenDomains.Contains(domain);
            }
            if (!exists)
            {
                exists = 0 < db.ExecScalar <int>(new SqlQuery("tenants_tenants").SelectCount().Where(Exp.Eq("alias", domain) & !Exp.Eq("id", tenantId)));
            }
            if (!exists)
            {
                exists = 0 < db.ExecScalar <int>(new SqlQuery("tenants_tenants").SelectCount().Where(Exp.Eq("mappeddomain", domain) & !Exp.Eq("id", tenantId)));
            }
            if (exists)
            {
                // cut number suffix
                while (true)
                {
                    if (6 < domain.Length && char.IsNumber(domain, domain.Length - 1))
                    {
                        domain = domain.Substring(0, domain.Length - 1);
                    }
                    else
                    {
                        break;
                    }
                }

                var q = new SqlQuery("tenants_forbiden").Select("address").Where(Exp.Like("address", domain, SqlLike.StartWith))
                        .Union(new SqlQuery("tenants_tenants").Select("alias").Where(Exp.Like("alias", domain, SqlLike.StartWith) & !Exp.Eq("id", tenantId)))
                        .Union(new SqlQuery("tenants_tenants").Select("mappeddomain").Where(Exp.Like("mappeddomain", domain, SqlLike.StartWith) & !Exp.Eq("id", tenantId)));

                var existsTenants = db.ExecList(q).ConvertAll(r => (string)r[0]);
                throw new TenantAlreadyExistsException("Address busy.", existsTenants);
            }
        }
Ejemplo n.º 8
0
 protected DbBaseService(ConnectionStringSettings connectionString, string tenantColumn)
 {
     db           = new DbExecuter(connectionString);
     TenantColumn = tenantColumn;
 }
Ejemplo n.º 9
0
        private void ValidateDomain(IDbExecuter db, string domain, int tenantId, bool validateCharacters)
        {
            // size
            if (string.IsNullOrEmpty(domain))
            {
                throw new TenantTooShortException("Tenant domain can not be empty.");
            }
            if (domain.Length < 6 || 50 <= domain.Length)
            {
                throw new TenantTooShortException("Length of domain must be greater than or equal to 6 and less than or equal to 50.");
            }

            // characters
            if (validateCharacters && !validDomain.IsMatch(domain))
            {
                throw new TenantIncorrectCharsException("Domain contains invalid characters.");
            }

            // forbidden or exists
            var exists = false;
            domain = domain.ToLowerInvariant();
            if (!exists)
            {
                if (forbiddenDomains == null)
                {
                    forbiddenDomains = ExecList(new SqlQuery("tenants_forbiden").Select("address")).Select(r => (string)r[0]).ToList();
                }
                exists = tenantId != 0 && forbiddenDomains.Contains(domain);
            }
            if (!exists)
            {
                exists = 0 < db.ExecScalar<int>(new SqlQuery("tenants_tenants").SelectCount().Where(Exp.Eq("alias", domain) & !Exp.Eq("id", tenantId)));
            }
            if (!exists)
            {
                exists = 0 < db.ExecScalar<int>(new SqlQuery("tenants_tenants").SelectCount().Where(Exp.Eq("mappeddomain", domain) & !Exp.Eq("id", tenantId)));
            }
            if (exists)
            {
                // cut number suffix
                while (true)
                {
                    if (6 < domain.Length && char.IsNumber(domain, domain.Length - 1))
                    {
                        domain = domain.Substring(0, domain.Length - 1);
                    }
                    else
                    {
                        break;
                    }
                }

                var q = new SqlQuery("tenants_forbiden").Select("address").Where(Exp.Like("address", domain, SqlLike.StartWith))
                    .Union(new SqlQuery("tenants_tenants").Select("alias").Where(Exp.Like("alias", domain, SqlLike.StartWith) & !Exp.Eq("id", tenantId)))
                    .Union(new SqlQuery("tenants_tenants").Select("mappeddomain").Where(Exp.Like("mappeddomain", domain, SqlLike.StartWith) & !Exp.Eq("id", tenantId)));

                var existsTenants = db.ExecList(q).ConvertAll(r => (string)r[0]);
                throw new TenantAlreadyExistsException("Address busy.", existsTenants);
            }
        }