From 667bd7c04aca4e6ccfd7c8e93bd288b097048af8 Mon Sep 17 00:00:00 2001 From: Yusuf Eka Sayogana Date: Thu, 18 Oct 2018 15:43:08 +0700 Subject: [PATCH] add change password feature --- app/Http/Controllers/UsersController.php | 42 ++++++++++++++++++++++++++++++++ resources/views/users/password.blade.php | 32 ++++++++++++++++++++++++ routes/web.php | 2 ++ 3 files changed, 76 insertions(+) create mode 100644 resources/views/users/password.blade.php diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index 7ade80f..9aaaad5 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -3,6 +3,9 @@ namespace App\Http\Controllers; use DB; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Validator; use Storage; use App\User; use App\Couple; @@ -12,6 +15,15 @@ use App\Http\Requests\Users\UpdateRequest; class UsersController extends Controller { /** + * UsersController constructor. + */ + public function __construct() + { + $this->middleware('auth',['only' => ['changePasswordForm','changePassword']]); + } + + + /** * Search user by keyword. * * @return \Illuminate\Http\Response @@ -113,6 +125,36 @@ class UsersController extends Controller return view('users.edit', compact('user', 'replacementUsers')); } + public function changePasswordForm() + { + $user = Auth::user(); + return view('users.password', compact('user')); + } + + public function changePassword(Request $request) + { + $user = Auth::user(); + $validator = Validator::make($request->all(),[ + 'old_password' => 'required|string|min:6|', + 'new_password' => 'required|string|min:6|confirmed', + ]); + + $validator->after(function ($validator) use ($request,$user) { + if (Hash::check($request->old_password, $user->password)) { + $user->password = bcrypt($request->new_password); + $user->update(); + }else{ + $validator->errors()->add('old_password', 'Old password is wrong !'); + } + }); + + if ($validator->fails()) { + return back()->withErrors($validator); + } + + return redirect('/'); + } + /** * Update the specified User in storage. * diff --git a/resources/views/users/password.blade.php b/resources/views/users/password.blade.php new file mode 100644 index 0000000..2457ecf --- /dev/null +++ b/resources/views/users/password.blade.php @@ -0,0 +1,32 @@ +@extends('layouts.app') + +@section('content') + +
+ {{ Form::open(['route' => ['users.password'], 'method' =>'patch', 'autocomplete' => 'off']) }} +
+
+

Change Password

+
+ {!! FormField::password('old_password', ['label' => 'Old Password']) !!} + @if ($errors->has('email')) + + {{ $errors->first('email') }} + + @endif + {!! FormField::password('new_password', ['label' => 'New Password']) !!} + {!! FormField::password('new_password_confirmation', ['label' => 'New Password Confirm']) !!} +
+ +
+
+ {{ Form::close() }} +
+@endsection diff --git a/routes/web.php b/routes/web.php index d0a974b..457707b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -25,6 +25,8 @@ Route::post('family-actions/{user}/add-husband', 'FamilyActionsController@addHus Route::post('family-actions/{user}/set-parent', 'FamilyActionsController@setParent')->name('family-actions.set-parent'); Route::get('profile-search', 'UsersController@search')->name('users.search'); +Route::get('users/password', 'UsersController@changePasswordForm')->name('users.password.form'); +Route::patch('users/password', 'UsersController@changePassword')->name('users.password'); Route::get('users/{user}', 'UsersController@show')->name('users.show'); Route::get('users/{user}/edit', 'UsersController@edit')->name('users.edit'); Route::patch('users/{user}', 'UsersController@update')->name('users.update');