Google Authenticator kaynak dosyalarını edinmek için içerisinde qr code oluşturucu da barındıran linkini vermiş olduğum github reposunu ziyaret ediyoruz.
https://github.com/sonata-project/GoogleAuthenticator
Ardından Composer aracılığıyla, aşağıdaki komutu kullanarak dosyaları projemizin olduğu dizine çekiyoruz.
composer require sonata-project/google-authenticator
Google Authenticator için Google üzerinden alacağınız bir api key veya secret'a ihtiyaç yoktur. Secret kodunu belli başlı algoritmaya göre her kullanıcı için biz oluşturucağız. Bu anahtar değerini kullanıcı görmeyecek ancak, ilk Google Authenticator kurulumunda bu kod ile karekod oluşturulacağından her kullanıcı için farklı bir secret oluşturup veri tabanında saklamakta fayda var. Bu kısmı kullanıcı sitenize kayıt olduğunda otomatik yapabilirsiniz.
Google'ın istediği standartlara göre rastgele secret oluşturan fonksiyonumuz.
16 Haneli ve 0,1,8,9 karakterlerini içermemektedir.
function generateRandomString($length = 10) {
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
echo generateRandomString(16);
Kodların birleştirilmiş hali, satırlara olabildiğince açıklama ekledim.
<?php
declare(strict_types=1);
require 'vendor/autoload.php';
$secret = 'XVQ2UIGO75XRUKJY'; //BURADAKİ SECRET YUKARIDA VERDİĞİM FONKSİYON İLE RASTGELE TÜRETİLEBİLİR.
$user = "okan"; //GİRİŞ YAPMAKTA OLAN KİŞİNİN KULLANICI ADI VEYA E-POSTA ADRESİ
$siteadresi = "viptema.com";
$qrcode = \Sonata\GoogleAuthenticator\GoogleQrUrl::generate($user, $secret, $siteadresi);
$g = new \Sonata\GoogleAuthenticator\GoogleAuthenticator();
// AŞAĞIDAKİ SATIRI AÇTIĞINIZDA KAREKODU AÇACAK OLAN 6 HANELİ KODU GÖREBİLİRSİNİZ. SCRİPTİNİZ ÇALIŞIYORSA BU KODU TEKRAR YORUM SATIRI YAPIN!
//echo $g->getCode($secret);
if (isset($_POST['submit'])) {
$code = $_POST['pass-code'];
if ($g->checkCode($secret,$code)) {
echo "Helal olsun kodu doğru girdin";
}else{
echo "Hassiktir kodu yanlış girdin.";
}
}
?>
<img src="<?=$qrcode?>">
<form action="" method="post">
<input type="text" name="pass-code">
<button type="submit" name="submit">Tamam</button>
</form>
Profesyonel ve her yönü ile kontrol edilebilir gelişmiş çok özellikli ajans yazılımıdır. İşte öne çıkan özellikler.