trygaios Şu paketi kullanarak cihaz bilgilerini alın:
https://github.com/matomo-org/device-detector
Cihaz bilgilerinden bir hash oluşturun. Mesela
$hash = sha1($dd->getOs().'|'.$dd->getDeviceName());
Hash'e dahil edebileceğiniz bir çok seçenek var. Paketin dokümanlarını dikkatlice okuyun.
user_devices isimli bir tablo oluşturun ve kaydedin
+----+---------+------------------------------------------+---------------------+
| id | user_id | hash | created_at |
+----+---------+------------------------------------------+---------------------+
| 1 | 1 | a9993e364706816aba3e25717850c26c9cd0d89d | 2023-09-22 15:12:36 |
| 2 | 1 | 589c22335a381f122d129225f5c0ba3056ed5811 | 2023-11-16 23:07:12 |
+----+---------+------------------------------------------+---------------------+
Kullanıcı giriş yapmaya çalıştığında hashi aynı şekilde tekrar oluşturup ve user_devices içindeki kayıt sayısına vs bakıp kontrol edin. Mesela
$hash = sha1($dd->getOs().'|'.$dd->getDeviceName());
if (Auth::attempt($credentials)) {
$user = Auth::user();
// Cihaz sayısı 3'den az ise cihazı kaydet ve girişe izin ver
if($user->userDevices()->count() < 3) {
$user->userDevices()
->create([
'hash' => $hash,
]);
$request->session()
->regenerate();
return redirect()->intended('dashboard');
}
// Cihaz sayısı 3 ve 3'den büyükse cihaz daha önce kayıtlı mı kontrol et
// Yoksa izin verme.
if ($user->userDevices()->where('hash', $hash)->doesntExist()) {
Auth::logout();
$request->session()
->invalidate();
$request->session()
->regenerateToken();
return redirect('/')->withErrors(__('Device limit exceeded.'));
}
// Cihaz daha önce kayıtlı, girişe izin ver.
$request->session()
->regenerate();
return redirect()->intended('dashboard');
}