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); }
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; }
protected T ExecScalar <T>(ISqlInstruction sql) { return(db.ExecScalar <T>(sql)); }
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); } }
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); } }