diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 78f0be5778bc8631a1cd1ea22927aa94ab3a4d57..ad747df869ccc82454cd798f351bce00403f14de 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -5,6 +5,8 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Hash; +use App\Http\Requests\UpdatePasswordRequest; class HomeController extends Controller { @@ -43,6 +45,16 @@ class HomeController extends Controller return view('home', ['profile' => $profile, 'role' => $role, 'courses' => $courses, 'enrolled' => $enrolled]); } + /** + * Show the application dashboard. + * + * @return \Illuminate\Contracts\Support\Renderable + */ + public function editPassword() + { + return view('editPassword'); + } + public function profile(Request $request) { DB::table('users')->where('id', Auth::id())->update([ @@ -51,4 +63,17 @@ class HomeController extends Controller return redirect()->route('home', ['msg' => 1]); } + + /** + * @param UpdatePasswordRequest $request + * @return \Illuminate\Http\RedirectResponse + */ + public function password(UpdatePasswordRequest $request) + { + DB::table('users')->where('id', Auth::id())->update([ + 'password' => Hash::make($request->get('password')) + ]); + + return redirect()->route('home', ['msg' => 5]); + } } diff --git a/app/Http/Requests/UpdatePasswordRequest.php b/app/Http/Requests/UpdatePasswordRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..5f3d90427144f9ebbac0a8f892f5f9cb1fc67f79 --- /dev/null +++ b/app/Http/Requests/UpdatePasswordRequest.php @@ -0,0 +1,31 @@ +<?php + +namespace App\Http\Requests; + +use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Support\Facades\Auth; + +class UpdatePasswordRequest extends FormRequest +{ + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return Auth::check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'password' => ['required', 'string', 'min:8', 'confirmed'], + ]; + } +} diff --git a/public/css/home.css b/public/css/home.css index e2a29e59b9240ab4264516e6c124e3e71ed2a2b2..b8340a70cb50c7c47e9d731eaab1f86bcf921971 100644 --- a/public/css/home.css +++ b/public/css/home.css @@ -10,4 +10,8 @@ #edit { margin-top: 2rem; +} + +.editpass { + float: left; } \ No newline at end of file diff --git a/resources/views/editPassword.blade.php b/resources/views/editPassword.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..0d9432247b9cedd595d788a8e40ab49bf5dd618f --- /dev/null +++ b/resources/views/editPassword.blade.php @@ -0,0 +1,48 @@ +@extends('layouts.app') + +@section('content') +<div class="container"> + <div class="row justify-content-center"> + <div class="col-md-8"> + <div class="card"> + <div class="card-header">Ubah Password</div> + + <div class="card-body"> + <form method="POST" action="/password"> + @csrf + <div class="form-group row"> + <label for="password" class="col-md-4 col-form-label text-md-right">Password Baru</label> + + <div class="col-md-6"> + <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password"> + + @error('password') + <span class="invalid-feedback" role="alert"> + <strong>{{ $message }}</strong> + </span> + @enderror + </div> + </div> + + <div class="form-group row"> + <label for="password-confirm" class="col-md-4 col-form-label text-md-right">Konfirmasi Password</label> + + <div class="col-md-6"> + <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password"> + </div> + </div> + + <div class="form-group row mb-0"> + <div class="col-md-6 offset-md-4"> + <button type="submit" class="btn btn-primary"> + Ubah Password + </button> + </div> + </div> + </form> + </div> + </div> + </div> + </div> +</div> +@endsection diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 1cb3cad8c20e83cf0b1220550eb31a4672d7bb78..05cce0a1a1937756bab01cc50df620660f5c8d17 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -31,6 +31,13 @@ <span aria-hidden="true">×</span> </button> </div> + @elseif( request()->get('msg') == 5 ) + <div class="alert alert-success alert-dismissible fade show" role="alert"> + Password Berhasil Diubah + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> @endif @endisset <div class="row justify-content"> @@ -95,7 +102,7 @@ <a id="email">{{ $profile->email }}</a> <br/> <a id="role">{{ $role }}</a> <br/><br/> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalCenter"> - Edit Profile + Edit Profil </button> <div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered" role="document"> @@ -116,6 +123,7 @@ </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button> + <a href="edit_password" class="btn btn-primary editpass" role="button">Ubah Password</a> <button type="submit" class="btn btn-primary">Submit</button> </div> </form> @@ -131,27 +139,25 @@ <div class="col-md-12"> <div class="card"> <div class="card-header"><b>Kelas Tersedia</b></div> - <div class="card-body"> - <div class="accordion" id="accordionCourses"> - @foreach($courses as $index => $course) - <div class="card"> - <div class="card-header" id="heading<?php echo $course->id; ?>" style="transform: rotate(0);"> - <a class="stretched-link" type="button" data-toggle="collapse" data-target="#collapse<?php echo $course->id; ?>" aria-expanded="false" aria-controls="collapse<?php echo $course->id; ?>">{{ $course->name }}</a> - </div> + <div class="accordion" id="accordionCourses"> + @foreach($courses as $index => $course) + <div class="card"> + <div class="card-header" id="heading<?php echo $course->id; ?>" style="transform: rotate(0);"> + <a class="stretched-link" type="button" data-toggle="collapse" data-target="#collapse<?php echo $course->id; ?>" aria-expanded="false" aria-controls="collapse<?php echo $course->id; ?>">{{ $course->name }}</a> + </div> - <div id="collapse<?php echo $course->id; ?>" class="collapse" aria-labelledby="heading<?php echo $course->id; ?>" data-parent="#accordionCourses"> - <div class="card-body"> - {{ $course->description }} <br/><br/> - <form action="course/enroll" method="post"> - {{ csrf_field() }} - <input style="display: none;" type="number" class="form-control" name="enroll_id" id="enroll_id" required="required" value="<?php echo $course->id ?>"> - <button type="submit" class="btn btn-primary">Daftar Kelas</button> - </form> - </div> + <div id="collapse<?php echo $course->id; ?>" class="collapse" aria-labelledby="heading<?php echo $course->id; ?>" data-parent="#accordionCourses"> + <div class="card-body"> + {{ $course->description }} <br/><br/> + <form action="course/enroll" method="post"> + {{ csrf_field() }} + <input style="display: none;" type="number" class="form-control" name="enroll_id" id="enroll_id" required="required" value="<?php echo $course->id ?>"> + <button type="submit" class="btn btn-primary">Daftar Kelas</button> + </form> </div> </div> - @endforeach - </div> + </div> + @endforeach </div> </div> </div> diff --git a/routes/web.php b/routes/web.php index c6aeaad0020624f0da7e71d60ae7f57e17c8e657..f20f6a6e0e4c45c74fc20c2516a498c403d5743b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -14,6 +14,8 @@ Auth::routes(); Route::get('/', 'HomeController@index')->name('home'); Route::redirect('/home', '/'); Route::post('/profile', 'HomeController@profile')->name('profile'); +Route::get('/edit_password', 'HomeController@editPassword')->name('edit_password'); +Route::post('/password', 'HomeController@password')->name('password'); Route::get('/course/{id_course}', 'CourseController@index')->name('course'); Route::post('/course/new', 'CourseController@new')->name('course/new'); Route::post('/course/enroll', 'CourseController@enroll')->name('course/enroll');