Вход Регистрация
Файл: src/vendor/laravel/framework/src/Illuminate/Foundation/Auth/ResetsPasswords.php
Строк: 270
<?php

namespace IlluminateFoundationAuth;

use 
IlluminateHttpRequest;
use 
IlluminateMailMessage;
use 
IlluminateSupportFacadesAuth;
use 
IlluminateSupportFacadesPassword;

trait 
ResetsPasswords
{
    use 
RedirectsUsers;

    
/**
     * Display the form to request a password reset link.
     *
     * @return IlluminateHttpResponse
     */
    
public function getEmail()
    {
        return 
$this->showLinkRequestForm();
    }

    
/**
     * Display the form to request a password reset link.
     *
     * @return IlluminateHttpResponse
     */
    
public function showLinkRequestForm()
    {
        if (
property_exists($this, 'linkRequestView')) {
            return 
view($this->linkRequestView);
        }

        if (
view()->exists('auth.passwords.email')) {
            return 
view('auth.passwords.email');
        }

        return 
view('auth.password');
    }

    
/**
     * Send a reset link to the given user.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    
public function postEmail(Request $request)
    {
        return 
$this->sendResetLinkEmail($request);
    }

    
/**
     * Send a reset link to the given user.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    
public function sendResetLinkEmail(Request $request)
    {
        
$this->validate($request, ['email' => 'required|email']);

        
$broker = $this->getBroker();

        
$response = Password::broker($broker)->sendResetLink($request->only('email'), function (Message $message) {
            
$message->subject($this->getEmailSubject());
        });

        switch (
$response) {
            case 
Password::RESET_LINK_SENT:
                return 
$this->getSendResetLinkEmailSuccessResponse($response);

            case 
Password::INVALID_USER:
            default:
                return 
$this->getSendResetLinkEmailFailureResponse($response);
        }
    }

    
/**
     * Get the e-mail subject line to be used for the reset link email.
     *
     * @return string
     */
    
protected function getEmailSubject()
    {
        return 
property_exists($this, 'subject') ? $this->subject : 'Your Password Reset Link';
    }

    
/**
     * Get the response for after the reset link has been successfully sent.
     *
     * @param  string  $response
     * @return SymfonyComponentHttpFoundationResponse
     */
    
protected function getSendResetLinkEmailSuccessResponse($response)
    {
        return 
redirect()->back()->with('status', trans($response));
    }

    
/**
     * Get the response for after the reset link could not be sent.
     *
     * @param  string  $response
     * @return SymfonyComponentHttpFoundationResponse
     */
    
protected function getSendResetLinkEmailFailureResponse($response)
    {
        return 
redirect()->back()->withErrors(['email' => trans($response)]);
    }

    
/**
     * Display the password reset view for the given token.
     *
     * If no token is present, display the link request form.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  string|null  $token
     * @return IlluminateHttpResponse
     */
    
public function getReset(Request $request, $token = null)
    {
        return 
$this->showResetForm($request, $token);
    }

    
/**
     * Display the password reset view for the given token.
     *
     * If no token is present, display the link request form.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  string|null  $token
     * @return IlluminateHttpResponse
     */
    
public function showResetForm(Request $request, $token = null)
    {
        if (
is_null($token)) {
            return 
$this->getEmail();
        }

        
$email = $request->input('email');

        if (
property_exists($this, 'resetView')) {
            return 
view($this->resetView)->with(compact('token', 'email'));
        }

        if (
view()->exists('auth.passwords.reset')) {
            return 
view('auth.passwords.reset')->with(compact('token', 'email'));
        }

        return 
view('auth.reset')->with(compact('token', 'email'));
    }

    
/**
     * Reset the given user's password.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    
public function postReset(Request $request)
    {
        return 
$this->reset($request);
    }

    
/**
     * Reset the given user's password.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    
public function reset(Request $request)
    {
        
$this->validate($request, $this->getResetValidationRules());

        
$credentials = $request->only(
            
'email', 'password', 'password_confirmation', 'token'
        
);

        
$broker = $this->getBroker();

        
$response = Password::broker($broker)->reset($credentials, function ($user, $password) {
            
$this->resetPassword($user, $password);
        });

        switch (
$response) {
            case 
Password::PASSWORD_RESET:
                return 
$this->getResetSuccessResponse($response);

            default:
                return 
$this->getResetFailureResponse($request, $response);
        }
    }

    
/**
     * Get the password reset validation rules.
     *
     * @return array
     */
    
protected function getResetValidationRules()
    {
        return [
            
'token' => 'required',
            
'email' => 'required|email',
            
'password' => 'required|confirmed|min:6',
        ];
    }

    
/**
     * Reset the given user's password.
     *
     * @param  IlluminateContractsAuthCanResetPassword  $user
     * @param  string  $password
     * @return void
     */
    
protected function resetPassword($user, $password)
    {
        
$user->password = bcrypt($password);

        
$user->save();

        
Auth::guard($this->getGuard())->login($user);
    }

    
/**
     * Get the response for after a successful password reset.
     *
     * @param  string  $response
     * @return SymfonyComponentHttpFoundationResponse
     */
    
protected function getResetSuccessResponse($response)
    {
        return 
redirect($this->redirectPath())->with('status', trans($response));
    }

    
/**
     * Get the response for after a failing password reset.
     *
     * @param  Request  $request
     * @param  string  $response
     * @return SymfonyComponentHttpFoundationResponse
     */
    
protected function getResetFailureResponse(Request $request, $response)
    {
        return 
redirect()->back()
            ->
withInput($request->only('email'))
            ->
withErrors(['email' => trans($response)]);
    }

    
/**
     * Get the broker to be used during password reset.
     *
     * @return string|null
     */
    
public function getBroker()
    {
        return 
property_exists($this, 'broker') ? $this->broker : null;
    }

    
/**
     * Get the guard to be used during password reset.
     *
     * @return string|null
     */
    
protected function getGuard()
    {
        return 
property_exists($this, 'guard') ? $this->guard : null;
    }
}
Онлайн: 3
Реклама