Setting login form laravel dengan user id atau email tetapi error mewajibkan menggunakan email saja

Saat saya setting login form laravel dengan menggunakan User id atau email yang terjadi ialah diwajibkan mengisi email, padahal sudah saya setting dapat login juga dengan cara input user id, proses registrasi beres dan saat login dengan email juga sukses tapi disayangkan login dengan user id gagal. petunjuk saya menggunakan:

<a href='https://tutsforweb.com/laravel-auth-login-email-username-one-field/'>sumber coding</a>

berikut contoh login.blade.php yang saya sesuaikan dengan kebutuhan saya

<div class="form-group row">
                            <label for="login" class="col-sm-4 col-form-label text-md-right">
                                {{ __('User_ID or Email') }}
                            </label>

                            <div class="col-md-6">
                                <input id="login" type="text"
                                       class="form-control{{ $errors->has('user_id') || $errors->has('email') ? ' is-invalid' : '' }}"
                                       name="login" value="{{ old('user_id') ?: old('email') }}" required autofocus>

                                @if ($errors->has('user_id') || $errors->has('email'))
                                    <span class="invalid-feedback">
                                        <strong>{{ $errors->first('user_id') ?: $errors->first('email') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

dan berikut logincontroller.php

<?php

namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Login username to be used by the controller.
     *
     * @var string
     */
    protected $user_id;

    /**
     * Create a new controller instance.
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');

        $this->user_id = $this->findUserid();
    }

    /**
     * Get the login username to be used by the controller.
     *
     * @return string
     */
    public function findUserid()
    {
        $login = request()->input('login');

        $fieldType = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'user_id';

        request()->merge([$fieldType => $login]);

        return $fieldType;
    }

    /**
     * Get username property.
     *
     * @return string
     */
    public function user_id()
    {
        return $this->user_id;
    }
}

jika dirasa ada yg bisa membantu saya dalam pemecahannya saya sangat terbantu sekali dan terima kasih sebanyak2nya

avatar MuhammadRamdani
@MuhammadRamdani

19 Kontribusi 4 Poin

Diperbarui 4 tahun yang lalu

1 Jawaban:

cara gampangnya dan lebih bersih dengan meng-override method credentials. Contoh kode-nya seperti ini <pre> &lt;?php

namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller { /* |-------------------------------------------------------------------------- | Login Controller |-------------------------------------------------------------------------- | | This controller handles authenticating users for the application and | redirecting them to your home screen. The controller uses a trait | to conveniently provide its functionality to your applications. | */

use AuthenticatesUsers;

/**
 * Where to redirect users after login.
 *
 * @var string
 */
protected $redirectTo = &#039;/home&#039;;

/**
 * Login username to be used by the controller.
 *
 * @var string
 */
protected $user_id;

/**
 * Create a new controller instance.
 */
public function __construct()
{
    $this-&amp;gt;middleware(&#039;guest&#039;)-&amp;gt;except(&#039;logout&#039;); 
}

/**
 * Get the login username to be used by the controller.
 *
 * @return string
 */

protected function credentials(Request $request) { if(is_numeric($request-&gt;get('user_id'))){ return ['user_id'=&gt;$request-&gt;get('user_id'),'password'=&gt;$request-&gt;get('password')]; } return $request-&gt;only($this-&gt;username(), 'password'); } }

</pre>

avatar mrizkiromdoni
@mrizkiromdoni

78 Kontribusi 26 Poin

Dipost 4 tahun yang lalu

Login untuk ikut Jawaban