Hocam, HTML kodunuza kayıt olurken göz gezdirdim. Aslında göz gezdirmekten çok, kayıt olurken suggested username kısmına girdiğimde hep aynı suggested isim önerilerini gördüm. Sonra kaynak koda baktığımda şu şekilde sabit bir kullanıcı adı listesi gördüm:
JavaScript:
const suggestions = [
"minegram_user",
"minegram2026",
"minegram01",
"minegram_user1",
"my_minegram",
"minegram_official",
"minegram2026_",
"minegram_user01"
];
Kodu yeterince detaylı incelemedim ancak yüksek ihtimalle bu kullanıcı adları /api/check-username üzerinden tek tek kontrol ediliyordur. Fakat burada şöyle bir durum ortaya çıkıyor: Diyelim ki minegram2026 kullanıcı adını ben aldım. Liste hâlâ sabit olduğu için, benden sonra başka birisi kayıt olurken suggested username kısmına girdiğinde sistem yine minegram2026'yı aday olarak deneyecek.
Eğer zaten /api/check-username üzerinden kullanıcı adının dolu olup olmadığı kontrol ediliyorsa, bence burada olması gereken şey, suggested username sisteminin de bu kontrolden yararlanması ve alınmış kullanıcı adlarını hiç önermemesi. Yani önce dolu bir kullanıcı adını kullanıcıya önerip daha sonra dolu olduğunu kontrol ederek başka bir isme geçmek yerine, suggested kısmında yalnızca o anda gerçekten müsait olan kullanıcı adlarının bulunması daha doğru olur.
Örneğin mevcut listedeki kullanıcı adları önce /api/check-username üzerinden kontrol edilip yalnızca müsait olanlar ayrı bir listeye alınabilir:
JavaScript:
const suggestions = [
"minegram_user",
"minegram2026",
"minegram01",
"minegram_user1",
"my_minegram",
"minegram_official",
"minegram2026_",
"minegram_user01"
];
const availableSuggestions = [];
for (const username of suggestions) {
const response = await fetch(
"/api/check-username?username=" +
encodeURIComponent(username)
);
const data = await response.json();
if (data.available === true) {
availableSuggestions.push(username);
}
}
if (availableSuggestions.length > 0) {
const randomUsername =
availableSuggestions[
Math.floor(
Math.random() * availableSuggestions.length
)
];
usernameInput.value = randomUsername;
}
Mesela minegram2026 alınmışsa, sistem bunu suggested kısmında kullanmak yerine önce kontrol edip eler ve yalnızca gerçekten müsait olan kullanıcı adlarından birini önerir.
Tabii burada daha düzgün çözüm, sabit kullanıcı adı listesini JavaScript içerisinde tutmak yerine suggested username için ayrı bir API Endpoint'i oluşturup, backend tarafından o anda müsait olan kullanıcı adlarının dinamik olarak üretilmesi veya gönderilmesi olur.
Ayrıca aynı kullanıcı adının iki farklı kullanıcı tarafından alınamaması da yalnızca Frontend'deki /api/check-username kontrolüne bırakılmamalı. Asıl benzersizlik backend/veritabanı tarafında garanti edilmeli. Frontend kontrolü daha çok kullanıcı deneyimi açısından yapılan ön kontrol olarak kullanılmalı.