authorities
authorities, bir kullanıcının belirli bir cihaz üzerindeki temel otoritesini temsil eder.
Global rol tek başına yeterli değildir. Aynı rolü taşıyan iki kullanıcı farklı cihazlarda farklı erişim seviyesine sahip olabilir. Bu tablo kullanıcı ile cihaz arasındaki ilişkiyi modeller: hangi kullanıcı hangi cihaza erişebilir, cihazın sahibi kim, yetki aktif mi. İlişkide kısıtlar vardır: bir kullanıcı aynı cihaza iki kez authority satırı olamaz (composite unique index: device_id + user_id). Kısaca: hangi kullanıcı hangi cihaza erişebilir, cihazın sorumlusu kim sorusunun cevabı bu tabloda yer alır.
Bu tablo yalnız kullanıcı-cihaz ilişkisini tutmuş. Bu ilişki üzerinde yapılabilecek spesifik aksiyon izinleri burada tanımlanmaz (o authority_permissions tablosundadır). Kullanıcının genel rol bilgisi burada tutulmaz (o users.role_id ile user_roles tablosunda). Cihazın fiziksel özellikleri ve konfigürasyonu bu tabloda değildir. Ownership atanması mekanizması: cihaz mobil app üzerinden kurulduğunda, kurumu yapan kullanıcı otomatik olarak owner: true ile sistemi (ID: 0) tarafından authority kaydı alır. Owner değiştirilmek istenirse, eski owner authority silinir, yeni authority kaydı eklenir ve sistem tarafından owner yapılır. Bu şekilde owner atanması sadece sistem (ID: 0) tarafından yapılır ve denetim izi korunur. Kısaca: bir kullanıcı belirli bir cihazda ne yapabilir sorusunun cevabı burada değildir.
İstisna kuralı: ai_agent rolündeki servis kullanıcıları için authorities kaydı açılmaz. Bu kullanıcılar cihazlara owner/operator olarak bağlanmaz; yalnız analiz servisleri üzerinden global read sorguları çalıştırır.
Yapilacaklar (Soft Delete ve Audit)
-
is_deletedvedelete_timealanlari eklendi; owner gecislerinde fiziksel silmeyi kaldirma hedefi belirlendi. -
created_byveupdated_byalanlari eklendi. -
create_timeveupdate_timeyasam dongusu alanlari olarak korundu. -
ownerdegisikligi,is_activedegisikligi ve revoke islemlerini audit log tablosuna trigger ile yaz. -
update_timealanini DB trigger ile deterministik yonet.
FK Davranis Notlari
| FK | ON DELETE | ON UPDATE | Not |
|---|---|---|---|
authorities.user_id -> users.id | CASCADE | CASCADE | Kullanici silinince bagli authority kayitlari yetim kalmaz. |
authorities.device_id -> devices.id | CASCADE | CASCADE | Cihaz silinince bagli authority kayitlari birlikte temizlenir. |
Kolonlar
| Kolon | Tip | Null | Kısıtlar | Anlamı |
|---|---|---|---|---|
id | int | hayır | PK, AUTO INCREMENT | Authority anahtarı |
device_id | varchar(21) | hayır | FK → devices.id | Yetkinin geçerli olduğu cihaz |
user_id | int | hayır | FK → users.id | Yetki sahibi kullanıcı |
owner | boolean | hayır | DEFAULT: false | Cihazın sahibi/ana sorumlusu mu |
is_active | boolean | hayır | DEFAULT: true | Yetki aktif mi |
assigned_by | int | evet | FK → users.id | Yetkiyi veren kullanıcı |
is_deleted | boolean | hayır | DEFAULT: false | Soft delete bayrağı |
delete_time | timestamp | evet | - | Soft delete zamanı |
created_by | int | hayır | FK → users.id | Kaydı oluşturan actor |
updated_by | int | hayır | FK → users.id | Son düzenleyen actor |
create_time | timestamp | hayır | - | Oluşturma |
update_time | timestamp | hayır | - | Güncelleme |
Unique Constraint: (device_id, user_id) — bir kullanıcı aynı cihaza yalnız bir kez authority kaydı olabilir.
Örnek Kayıtlar
- Authority 1: Cihaz Sahibi
- Authority 2: Operatör Erişimi
- Authority 3: Farklı Cihaz
- Authority 4: Sistem Tarafından Oluşturulan
{
"id": 1,
"device_id": "46000000C47CA670",
"user_id": 1,
"owner": true,
"is_active": true,
"assigned_by": 1,
"is_deleted": false,
"delete_time": null,
"created_by": 1,
"updated_by": 1,
"create_time": "2026-04-03T10:00:00Z",
"update_time": "2026-04-03T10:00:00Z"
}
Özet: Mehmet Günce (user_id: 1) cihazın sahibi (owner: true). Kendi kendine yetki vermiş (assigned_by: 1).
{
"id": 2,
"device_id": "46000000C47CA670",
"user_id": 2,
"owner": false,
"is_active": true,
"assigned_by": 1,
"is_deleted": false,
"delete_time": null,
"created_by": 1,
"updated_by": 1,
"create_time": "2026-04-03T10:05:00Z",
"update_time": "2026-04-03T10:05:00Z"
}
Özet: Naz Akkoyun (user_id: 2) aynı cihaza operatör olarak erişebilir. Sahibi değildir (owner: false), Mehmet tarafından eklenmiş (assigned_by: 1).
{
"id": 3,
"device_id": "46000000C47CA671",
"user_id": 3,
"owner": false,
"is_active": true,
"assigned_by": 1,
"is_deleted": false,
"delete_time": null,
"created_by": 1,
"updated_by": 1,
"create_time": "2026-04-03T10:10:00Z",
"update_time": "2026-04-03T10:10:00Z"
}
Özet: Furkan Ekinci (user_id: 3) başka bir cihaza (ID: ...C47CA671) erişebilir. Sahibi olmayan erişim, bakım/teknik desteği için tanınmış.
{
"id": 4,
"device_id": "46000000C47CA672",
"user_id": 1,
"owner": true,
"is_active": true,
"assigned_by": 0,
"is_deleted": false,
"delete_time": null,
"created_by": 0,
"updated_by": 0,
"create_time": "2026-04-08T08:30:00Z",
"update_time": "2026-04-08T08:30:00Z"
}
Özet: Cihaz mobil app üzerinden kuruldu, sistem otomatik olarak authority oluşturdu (assigned_by: 0). Kurulum yapan kullanıcı (user_id: 1) automatic sahibi olarak atandı. Sistem tarafından yapılmış güncelleme (updated_by: 0).