FastAPI + PostgreSQL 16. KYC, issue sistemi, permission/group yönetimi, session yönetimi, API client auth (kışla kapısı), officials/persons CRUD. Migration 0001–0013 dahil.
75 lines
3.2 KiB
SQL
75 lines
3.2 KiB
SQL
-- Eski permissions tablosunu yeniden yapılandır
|
||
DROP TABLE IF EXISTS group_permissions CASCADE;
|
||
DROP TABLE IF EXISTS permissions CASCADE;
|
||
|
||
CREATE TABLE permissions (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
module TEXT NOT NULL, -- "issue", "kyc", "location", "comment", "*"
|
||
action TEXT NOT NULL, -- "create", "read", "update", "delete", "approve", "assign", "*"
|
||
description TEXT,
|
||
UNIQUE (module, action)
|
||
);
|
||
|
||
CREATE TABLE group_permissions (
|
||
group_id BIGINT NOT NULL REFERENCES permission_groups(id) ON DELETE CASCADE,
|
||
permission_id BIGINT NOT NULL REFERENCES permissions(id) ON DELETE CASCADE,
|
||
PRIMARY KEY (group_id, permission_id)
|
||
);
|
||
|
||
-- is_superuser flag — bu gruptaki herkes tüm izinlere sahip
|
||
ALTER TABLE permission_groups ADD COLUMN IF NOT EXISTS is_superuser BOOLEAN NOT NULL DEFAULT FALSE;
|
||
|
||
-- Temel izinleri seed et
|
||
INSERT INTO permissions (module, action, description) VALUES
|
||
-- wildcard
|
||
('*', '*', 'Tüm modüllerde tüm eylemler'),
|
||
-- location
|
||
('location', 'create', 'Yeni lokasyon ekle'),
|
||
('location', 'read', 'Lokasyon detayını gör'),
|
||
('location', 'update', 'Lokasyon bilgisi güncelle'),
|
||
('location', 'delete', 'Lokasyon sil'),
|
||
('location', 'retype', 'Lokasyon tipini değiştir'),
|
||
('location', 'reparent', 'Lokasyon hiyerarşisini değiştir'),
|
||
('location', 'merge', 'Lokasyonları birleştir'),
|
||
('location', 'split', 'Lokasyon ayrılma kaydı ekle'),
|
||
-- admin_unit
|
||
('admin_unit', 'create', 'Yeni idari birim ekle'),
|
||
('admin_unit', 'update', 'İdari birim güncelle'),
|
||
('admin_unit', 'close', 'İdari birimi kapat'),
|
||
('admin_unit', 'assign', 'Lokasyona idari birim ata'),
|
||
-- issue
|
||
('issue', 'create', 'Sorun bildir'),
|
||
('issue', 'read', 'Sorun detayını gör'),
|
||
('issue', 'update', 'Sorun güncelle'),
|
||
('issue', 'delete', 'Sorun sil'),
|
||
('issue', 'assign', 'Sorumlu ata'),
|
||
('issue', 'resolve', 'Sorunu çözüldü işaretle'),
|
||
('issue', 'reject', 'Sorunu reddet'),
|
||
-- comment
|
||
('comment', 'create', 'Yorum yap'),
|
||
('comment', 'delete', 'Yorum sil'),
|
||
-- kyc
|
||
('kyc', 'approve', 'KYC başvurusu onayla'),
|
||
('kyc', 'reject', 'KYC başvurusu reddet'),
|
||
('kyc', 'view', 'KYC belgelerini gör'),
|
||
-- user
|
||
('user', 'read', 'Kullanıcı listesi ve detayı'),
|
||
('user', 'suspend', 'Kullanıcıyı askıya al'),
|
||
('user', 'assign_group', 'Kullanıcıya grup ata'),
|
||
-- profile
|
||
('profile', 'create', 'Kişi/organizasyon profili oluştur'),
|
||
('profile', 'update', 'Profil güncelle'),
|
||
('profile', 'delete', 'Profil sil'),
|
||
-- report
|
||
('report', 'create', 'Rapor oluştur'),
|
||
('report', 'read', 'Rapor görüntüle'),
|
||
('report', 'manage', 'Rapor tiplerini ve fiyatları yönet'),
|
||
-- moderation
|
||
('moderation', 'review', 'İçerik inceleme kuyruğunu gör'),
|
||
('moderation', 'action', 'Moderasyon aksiyonu uygula')
|
||
ON CONFLICT (module, action) DO NOTHING;
|
||
|
||
-- İlk süper kullanıcı grubu
|
||
INSERT INTO permission_groups (name, description, is_superuser)
|
||
VALUES ('Süper Yönetici', 'Tüm izinlere sahip grup', TRUE)
|
||
ON CONFLICT DO NOTHING;
|