Yeni kullanıcı kaydında ekstra alan kontrolü ve hata mesajı

Login kontrole, custom_verify isimli ekstra bir alan ekledim. custom_verify alanı x ise login başarılı olacak, diğer durumlar için başarısız olacak. SS’deki gibi yaptım ve çalışıyor. Eğer user/pass doğru ama bu alandan dolayı login başarısız olduğunda özelleştirilmiş bir mesaj vermek istiyorum. “custom_verify alanınız x değil” şeklinde. böyle bir geliştirme mümkün mü? laravel version 7.6.2

Merhaba, Laravel kendi kullanıcı kayıt işlemleri için app/Http/Controllers/Auth/RegisterController.php dosyasını kullanıyor. Zaten HTML formun içine ilgili alanı eklediğinizi varsayıyorum. Bu alanın kontrolü için de RegisterController.php dosyasındaki validator() metodunu kullanabilirsiniz.

Validation için in:boyleolsun şartını kullanabilirsiniz. Detaylı örneği:
https://laravel.com/docs/7.x/validation#rule-in

Özel bir hata mesajı belirtmek için yine belgenin ilgili kısmı:
https://laravel.com/docs/7.x/validation#custom-error-messages

Belgede Laravel’in kendi Register controllerındaki validationa dair detaylar da bu sayfada açıklanmış:
https://laravel.com/docs/7.x/authentication#included-authenticating

Haliyle, yeni_alan isimli bir alanı HTML (ya da herhangi bir istemciden) POST edilirken eklendiğini ve Validation sürecine dahil etmek istediğinizi düşünürsek.

RegisterController.php dosyasının validator() metodu şöyle güncellenebilir;

/**
 * Get a validator for an incoming registration request.
 *
 * @param  array  $data
 * @return \Illuminate\Contracts\Validation\Validator
 */
protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
        'yeni_alan' => ['required', 'string', 'in:tam_boyle_olsun']
    ]);
}

Not: soruda belirtilen Laravel sürümü 7.x olduğu için belge bağlantılarını 7.x üzerinden verdim. Bu yanıttan faydalananlar kendi Laravel sürümünün belgesi üzerinden aynı alanları incelemeli, yeni sürümlerde farklılıklar bulunabilir :slight_smile: