کاستوم کردن مسیر ویو فرم لاگین

3 سال پیش
توسط بهرام آپدیت شد
محمد نمازی ( 14710 تجربه )
3 سال پیش
تخصص : توسعه دهنده وب

باسلام،
چطور میشه مسیر ویو لاگین و رجیستر رو تغییر داد ؟

کد کنترولر لاگین :

<?php

namespace AppHttpControllersAuth;

use AppEventsUserActivation;
use AppHttpControllersController;
use AppUser;
use CarbonCarbon;
use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateHttpRequest;
use Socialite;

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 = '/';

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

    /**
     * Handle a login request to the application.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpRedirectResponse|IlluminateHttpResponse
     */
    public function login(Request $request)
    {
        $this->validateLogin($request);

        // If the class is using the ThrottlesLogins trait, we can automatically throttle
        // the login attempts for this application. We'll key this by the username and
        // the IP address of the client making these requests into this application.
        if ($this->hasTooManyLoginAttempts($request)) {
            $this->fireLockoutEvent($request);

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

        if(auth()->validate($request->only('email' , 'password'))) {
            $user = User::whereEmail($request->input('email'))->first();
            if($user->active == 0 ) {
                $checkActiveCode = $user->activationCode()->where('expire' , '>=' , Carbon::now() )->latest()->first();

                if(count($checkActiveCode) == 1) {
                    if($checkActiveCode->expire > Carbon::now() ) {
                        $this->incrementLoginAttempts($request);
                        return back()->withErrors(['code' => 'ایمیل فعال سازی قبلا به ایمیل شما ارسال شد بعد از 15 دقیقه دوباره برای ارسال ایمیل لاگین کنید']);
                    }
                } else {
                    event(new UserActivation($user));
                }
            }
        }

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

        // If the login attempt was unsuccessful we will increment the number of attempts
        // to login and redirect the user back to the login form. Of courses, when this
        // user surpasses their maximum number of attempts they will get locked out.
        $this->incrementLoginAttempts($request);

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

    public function redirectToProvider()
    {
        return Socialite::driver('google')->redirect();
    }

    public function handleProviderCallback()
    {
        $social_user = Socialite::driver('google')->user();
        $user = User::whereEmail($social_user->getEmail())->first();

        if( ! $user ) {
            $user = User::create([
                'name' => $social_user->getName(),
                'email' => $social_user->getEmail(),
                'password' => bcrypt($social_user->getId())
            ]);
        }

        if($user->active == 0) {
            $user->update([
                'active' => 1
            ]);
        }

        auth()->loginUsingId($user->id);
        return redirect('/');
    }
}
بهرام ( 9858 تجربه )
3 سال پیش
تخصص : Laravel and Vuejs developer

سلام
برای تغییر ویو لاگین وارد trait که use شده یعنی AuthenticatesUsers بشید و در تابع showLoginForm ویو که میخوایید رو نمایش بدید.
واسه رجیستر هم که باید به trait مربوط به خودش یعنی RegistersUsers برید و در تابع showRegistrationForm ویو مورد نظرتون رو قرار بدید.
البته میتونید این تابع ها رو توی همون کنترلرتون بازنویسی کنید.

برای ارسال پاسخ باید وارد سایت شوید