Skip to content
Open

baru #44

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 117 additions & 0 deletions app/Http/Controllers/AbsensiController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
<?php

namespace App\Http\Controllers;

use App\Models\Absensi;
use Illuminate\Http\Request;

class AbsensiController extends Controller
{
/**
* Tampilkan semua data absensi
*/
public function index(Request $request)
{
// Ambil kata kunci pencarian
$search = $request->input('search');

// Query dasar
$query = Absensi::query();

// Jika ada pencarian, filter hanya berdasarkan id_absensi
if (!empty($search)) {
$query->where('id_absensi', 'like', "%{$search}%");
}

// Urutkan berdasarkan tanggal terbaru dan paginasi
// Tambahkan withQueryString() agar pagination tetap membawa parameter pencarian
$absensis = $query->orderBy('tanggal', 'desc')
->paginate(10)
->withQueryString();

// Kirim data ke view
return view('absensi.index', compact('absensis', 'search'));
}

/**
* Form tambah data absensi
*/
public function create()
{
return view('absensi.create');
}

/**
* Simpan data absensi baru
*/
public function store(Request $request)
{
// Validasi input
$validated = $request->validate([
'id_absensi' => 'required|string|unique:absensis,id_absensi',
'pegawai_id' => 'required|integer',
'tanggal' => 'required|date',
'jam_masuk' => 'nullable|date_format:H:i',
'jam_keluar' => 'nullable|date_format:H:i',
'shift' => 'nullable|string',
'status' => 'required|string',
]);

// Simpan data yang tervalidasi
Absensi::create($validated);

return redirect()->route('absensi.index')
->with('success', 'Data absensi berhasil ditambahkan.');
}

/**
* Tampilkan detail data absensi
*/
public function show($id)
{
$absensi = Absensi::findOrFail($id);
return view('absensi.show', compact('absensi'));
}

/**
* Form ubah data absensi
*/
public function edit($id)
{
$absensi = Absensi::findOrFail($id);
return view('absensi.edit', compact('absensi'));
}

/**
* Update data absensi
*/
public function update(Request $request, $id)
{
$validated = $request->validate([
'id_absensi' => "required|string|unique:absensis,id_absensi,{$id}",
'pegawai_id' => 'required|integer',
'tanggal' => 'required|date',
'jam_masuk' => 'nullable|date_format:H:i',
'jam_keluar' => 'nullable|date_format:H:i',
'shift' => 'nullable|string',
'status' => 'required|string',
]);

$absensi = Absensi::findOrFail($id);
$absensi->update($validated);

return redirect()->route('absensi.index')
->with('success', 'Data absensi berhasil diperbarui.');
}

/**
* Hapus data absensi
*/
public function destroy($id)
{
Absensi::destroy($id);

return redirect()->route('absensi.index')
->with('success', 'Data absensi berhasil dihapus.');
}
}
58 changes: 51 additions & 7 deletions app/Http/Controllers/Auth/LoginController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
Expand All @@ -12,23 +14,22 @@ class LoginController extends Controller
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
| Controller ini menangani proses autentikasi pengguna dan mengarahkan
| mereka ke halaman admin setelah berhasil login.
|
*/

use AuthenticatesUsers;

/**
* Where to redirect users after login.
* Ke mana pengguna diarahkan setelah login.
*
* @var string
*/
protected $redirectTo = '/admin';

/**
* Create a new controller instance.
* Membuat instance controller baru.
*
* @return void
*/
Expand All @@ -38,15 +39,58 @@ public function __construct()
$this->middleware('auth')->only('logout');
}

/**
* Menampilkan form login kustom.
*
* @return \Illuminate\View\View
*/
public function showLoginForm()
{
return view('auth.login');
}

/**
* Get the post-login redirect path.
* Menangani proses login.
* Jika gagal, kirim pesan error kustom ke halaman login.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Http\JsonResponse
*/
public function login(Request $request)
{
// Validasi sederhana (jangan ubah logika utamanya)
$request->validate([
'email' => 'required|string',
'password' => 'required|string',
]);

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

// Coba login
if (Auth::attempt($credentials, $request->filled('remember'))) {
$request->session()->regenerate();
return redirect()->intended($this->redirectPath());
}

// Jika gagal, kembalikan ke login dengan error seperti di desain
return back()
->withInput($request->only('email'))
->with('error', 'Username & Password are incorrect');
}

/**
* Mengembalikan path redirect setelah login berhasil.
*
* @return string
*/
public function redirectPath(): string
{
if (method_exists($this, 'redirectTo')) {
return $this->redirectTo();
}
return property_exists($this, 'redirectTo') ? $this->redirectTo : '/admin';

return property_exists($this, 'redirectTo')
? $this->redirectTo
: '/admin';
}
}
74 changes: 22 additions & 52 deletions app/Http/Controllers/Auth/RegisterController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,73 +3,43 @@
namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\Models\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;

class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/

use RegistersUsers;

/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;

/**
* Create a new controller instance.
*
* @return void
* Menampilkan form registrasi.
*/
public function __construct()
public function showRegistrationForm()
{
$this->middleware('guest');
return view('auth.register');
}

/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
* Menangani pendaftaran pengguna baru.
*/
protected function validator(array $data)
public function register(Request $request)
{
return Validator::make($data, [
'first_name' => ['required', 'string', 'max:255'],
'last_name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
// Validasi input
$request->validate([
'first_name' => 'required|string|max:255',
'last_name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
]);
}

/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
return User::create([
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
// Buat user baru
User::create([
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);

// Redirect ke halaman login dengan pesan sukses
return redirect()->route('login')->with('success', 'Registrasi berhasil! Silakan login.');
}
}
}
Loading