<?php


namespace App\Http\Controllers;

use Auth;
use Illuminate\Support\Facades\Hash;
use Validator;
use Request;


class UserUpdatePasswordController extends Controller
{


    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function updatePassword()
    {
        return view('user.update_password');
    }


    /**
     * @param Request $request
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
     */
    public function updatePasswordStore(Request $request)
    {
        $rules = array(
            'old_password' => 'required|old_password:' . Auth::user()->password,
            'password' => 'required|string|min:8|confirmed',
        );

        Validator::extend('old_password', function ($attribute, $value, $parameters, $validator) {

            return Hash::check($value, current($parameters));

        });

        $validator = Validator::make(Request::all(), $rules);

        if ($validator->fails()) {

            // get the error messages from the validator
            $messages = $validator->messages();
            // redirect our user back to the form with the errors from the validator
            return view('user.update_password')->withErrors($validator);

        }
        $request->user()->fill([
            'password' => Hash::make($request->password)
        ])->save();


        \Session()->flash('alert-save', '1');
        return redirect(route('user_update_password'));

    }


    /**
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
     */
    public function updatePasswordFirst(){
        if(!Auth::user()->isPasswort()){
            return view('user.update_password_first');
        }
        return redirect(route('user_update_password'));
    }

    /**
     * @param Request $request
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
     */
    public function updatePasswordFirstStore(Request $request)
    {
        $rules = array(
            'password' => 'required|string|min:6|confirmed',
        );


        $validator = Validator::make(Request::all(), $rules);

        if ($validator->fails()) {

            // get the error messages from the validator
            $messages = $validator->messages();
            // redirect our user back to the form with the errors from the validator
            return view('user.update_password_first')->withErrors($validator);

        }

        $request->user()->fill([
            'password' => Hash::make($request->password)
        ])->save();


        \Session()->flash('alert-save', '1');
        return redirect('/home');
    }
}