Skip to main content

Özel SQL Araçları (Custom SQL Tool)

Genel Bakış​

Özel SQL Araçları, kullanıcıların arama editörlerine (BankSearch, ItemSearch vb.) özel SQL sorguları bağlamasına olanak tanır. Bir sayfada bu editörlerden biri yüklendiğinde, kullanıcının rolüne göre yetkili tanımlı sorgular varsa editörün yanında bir ikon görünür. İkona tıklandığında, editörün mevcut değeri parametre olarak kullanılarak SQL sorgusu çalıştırılır ve sonuçlar bir popup grid'de gösterilir.

Erişim rol tabanlı (whitelist modeli) olarak yönetilir: bir tanım en az bir role atanmadıkça hiçbir kullanıcı tarafından görülemez.


Yönetici Kılavuzu: Tanım Oluşturma​

Tanım Sayfasına Erişim​

/CustomSqlTool adresine gidin. Bu sayfa tüm özel SQL araç tanımlarını listeler.

Yeni Tanım Oluşturma​

  1. Yeni Kayıt butonuna tıklayın
  2. Açılan modalda aşağıdaki alanları doldurun:
    • Kod: Otomatik oluşturulur (salt okunur)
    • Açıklama: Tanımın amacını açıklayan metin
    • Partial Adı: Hedef arama editörünün klasör adı (örn: BankSearch, ItemSearch, CustomerWithAccountsSearch)
    • SQL Sorgusu: Çalıştırılacak SELECT sorgusu (@Id parametresi kullanılmalı; tüm sütunların açık bir adı olmalıdır)
    • Pasif mi?: Tanımı geçici olarak devre dışı bırakmak için
  3. Kaydet butonuna tıklayın
  4. Tanımı kaydetmenin ardından Rol Yetkilendirmesi bölümünden en az bir rol atayın; aksi takdirde tanım hiçbir kullanıcıya görünmez.

Rol Yetkilendirmesi Yönetimi​

Her tanım için hangi rollerin bu aracı görebileceği ayrıca yapılandırılır.

  • Rol Ekle: İlgili tanımın Rol Yetkilendirmesi bölümünden bir veya daha fazla ErpRole seçerek kaydedin. Seçilen rollerin her biri için ayrı bir yetkilendirme kaydı oluşturulur.
  • Rol Kaldır: Listeden bir rolün yanındaki sil ikonuna tıklayın. Yalnızca o tek yetkilendirme kaydı silinir.
  • Sıfır rol durumu: Bir tanıma hiç rol atanmamışsa tanım tüm kullanıcılardan gizlenir (whitelist modeli).

Önemli — Mevcut Tanımlar: Sistem güncellemesinden sonra rol atanmamış tüm mevcut tanımlar otomatik olarak gizlenir. Kullanıcıların erişimini yeniden sağlamak için her tanıma uygun rolleri atamanız gerekir.

Tanım Düzenleme​

Grid'de ilgili satırdaki düzenle ikonuna tıklayın. Mevcut değerler modal'da yüklenir.

Tanım Silme​

Grid'de ilgili satırdaki sil ikonuna tıklayın. Tanım pasif yapılır (kalıcı silinmez).


Kullanıcı Kılavuzu: Sayfalarda Kullanım​

Nasıl Çalışır?​

  1. Bir sayfa yüklendiğinde, sayfadaki tüm arama editörleri otomatik taranır
  2. Kullanıcının rollerine göre erişim yetkisi olan tanımlar bulunan editörlerin yanında mavi bir veritabanı ikonu (bx bx-data) görünür
  3. Editörde bir değer seçtikten sonra ikona tıklayın:
    • Tek tanım varsa: Sorgu doğrudan çalıştırılır
    • Birden fazla tanım varsa: Her tanımın açıklamasını listeleyen bir açılır menü gösterilir; menüden seçim yapıldığında ilgili sorgu çalıştırılır
  4. Sonuçlar bir popup grid'de gösterilir

Dikkat Edilmesi Gerekenler​

  • İkona tıklamadan önce editörde bir değer seçilmiş olmalıdır
  • Değer seçilmemişse uyarı mesajı görüntülenir
  • Sonuçlar anlık olarak veritabanından çekilir (kullanıcıya özgü filtreleme nedeniyle önbellek kullanılmaz)
  • Bir tanım yalnızca kullanıcının sahip olduğu rollerden en az biri o tanıma yetkilendirilmişse görünür

SQL Sorgusu Format Gereksinimleri​

Temel Kurallar​

  1. Sorgu SELECT veya WITH (CTE) ile başlamalıdır
  2. Parametre olarak yalnızca @Id kullanılır (GUID değeri otomatik bağlanır)
  3. Aşağıdaki komutlar yasaktır: INSERT, UPDATE, DELETE, DROP, ALTER, CREATE, EXEC, EXECUTE, TRUNCATE, MERGE
  4. Tüm sütunların açık bir adı (alias) olmalıdır. Adsız sütun içeren bir sorgu (örn. SELECT 1, SELECT GETDATE(), hesaplama ifadeleri) çalışma zamanında hataya neden olur.

Örnek Sorgular​

Basit Sorgu​

SELECT AccountNumber, IBAN, BranchName
FROM BankAccounts
WHERE BankId = @Id AND IsActive = 1

CTE ile Sorgu​

WITH AccountSummary AS (
SELECT BankAccountId, SUM(Amount) as TotalAmount
FROM Transactions
WHERE BankId = @Id
GROUP BY BankAccountId
)
SELECT ba.AccountNumber, ba.IBAN, s.TotalAmount
FROM BankAccounts ba
JOIN AccountSummary s ON s.BankAccountId = ba.Id

@Id Parametresi​

  • @Id parametresi, kullanıcının editörde seçtiği kaydın GUID değerini alır
  • Parametre her zaman güvenli şekilde (parameterized query) çalıştırılır — string birleştirme yapılmaz
  • Sadece tek bir parametre desteklenir

Güvenlik​

  • SQL sorguları kayıt sırasında ve çalışma zamanında doğrulanır
  • Yalnızca SELECT/WITH sorguları kabul edilir
  • @Id her zaman parametrik olarak çalıştırılır (SQL injection koruması)
  • Tanım oluşturma ve rol yetkilendirmesi yönetimi sadece yetkili kullanıcılara aittir
  • Tanım görünürlüğü whitelist modeline dayanır: yalnızca kullanıcının rollerinden en az biri yetkili tanımlar gösterilir; rol atanmamış tanımlar hiç kimseye görünmez