0
votes

I have a problem, i need get data request from other field on login form to dashboard.

Login Form enter image description here

My Login Controller, and i use default auth from laravel

<?php

namespace App\Http\Controllers\Auth;

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';
    public function username(){
        return 'username';
    }
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
}

My AuthentictesUser

<?php

    namespace Illuminate\Foundation\Auth;

    use Illuminate\Http\Request;
    use App\Tahun;
    use Illuminate\Support\Facades\Auth;
    use Illuminate\Validation\ValidationException;

    trait AuthenticatesUsers
    {
        use RedirectsUsers, ThrottlesLogins;


        public function showLoginForm()
        {
            $tahuns = \DB::table('tahuns')->where('active','<>', '2')
            ->orderBy('id','desc')->get();
            return view('auth.login', compact('tahuns'));
        }

        public function login(Request $request)
        {
            $this->validateLogin($request);

            if ($this->hasTooManyLoginAttempts($request)) {
                $this->fireLockoutEvent($request);

                return $this->sendLockoutResponse($request);
            }

            if ($this->attemptLogin($request)) {
                return $this->sendLoginResponse($request);
            }

            $this->incrementLoginAttempts($request);

            return $this->sendFailedLoginResponse($request);
        }

        protected function validateLogin(Request $request)
        {
            $this->validate($request, [
                $this->username() => 'required|string',
                'password' => 'required|string',
                'tahun' => 'required|string',
            ]);
        }

        protected function attemptLogin(Request $request)
        {
            return $this->guard()->attempt(
                $this->credentials($request), $request->filled('remember')
            );
        }

        protected function credentials(Request $request)
        {
            return $request->only($this->username(), 'password');
        }

        protected function sendLoginResponse(Request $request)
        {
            $request->session()->regenerate();

            $this->clearLoginAttempts($request);

            return $this->authenticated($request, $this->guard()->user())
                    ?: redirect()->intended($this->redirectPath());
        }

        protected function authenticated(Request $request, $user)
        {
            //
        }

        protected function sendFailedLoginResponse(Request $request)
        {
            throw ValidationException::withMessages([
                $this->username() => [trans('auth.failed')],
            ]);
        }

        public function username()
        {
            return 'email';
        }

        public function logout(Request $request)
        {
            $this->guard()->logout();

            $request->session()->invalidate();

            return redirect('/');
        }
            protected function guard()
            {
                return Auth::guard();
            }
        }

How if i use data from fill tahun(year) on login form? And i need send data from login form to my dashboard.

1

1 Answers

0
votes

There is no need to replace the trait since you can simply override the trait methods in your LoginController, just like you did with username().

Override public function showLoginForm() and return your custom view.

Override protected function validateLogin(Request $request) to validate your new fields.

Finally, override protected function authenticated(Request $request, $user) and save the tahun data or return a redirect response.