Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
webbingbrasil/users-module / Traits / CmsResetsPasswords.php
Size: Mime:
<?php

/**
 * Created by PhpStorm.
 * User: danilo
 * Date: 14/07/16
 * Time: 16:25
 */

namespace Modules\Users\Traits;

use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
use Illuminate\Mail\Message;
use Modules\Users\Facades\Password;

trait CmsResetsPasswords
{

    use ResetsPasswords;


    /**
     * @param Request $request
     * @return $this|\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
     */
    public function postEmail(Request $request)
    {
        $this->validate($request, ['email' => 'required']);


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

        switch ($response) {
            case Password::RESET_LINK_SENT:
                if ($request->ajax()) {
                    return response()->json([
                        'status' => trans($response)
                    ], 200);
                }
                flash()->success(trans($response));
                return redirect()->back()->with('status', trans($response));
            case Password::INVALID_USER:
                if ($request->ajax()) {
                    return response()->json([
                        'email' => [trans($response)]
                    ], 400);
                }

                return redirect()->back()->withErrors(['email' => trans($response)]);
            default:
                if ($request->ajax()) {
                    die('ok');
                    return response()->json([
                        'status' => trans($response)
                    ], 200);
                }

                flash()->error(trans($response));
                return redirect()->back()->with('status', trans($response));
        }
    }

    /**
     * @param Request $request
     * @return $this|\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function postReset(Request $request)
    {
        $this->validate($request, [
            'token' => 'required',
            'email' => 'required',
            'password' => 'required|confirmed|min:6',
        ]);

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

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

        switch ($response) {
            case Password::PASSWORD_RESET:
                if ($request->ajax()) {
                    return response()->json([
                        'redirectTo' => $this->redirectPath()
                    ], 200);
                }
                return redirect($this->redirectPath());


            default:
                if ($request->ajax()) {
                    return response()->json([
                        'email' => [trans($response)]
                    ], 400);
                }
                return redirect()->back()
                    ->withInput($request->only('email'))
                    ->withErrors(['email' => trans($response)]);

        }
    }
}