101 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
public function registerUser(Request $request)
{
DB::beginTransaction();
// return $request->all();
try {
$validated = $request->validate([
'name' => 'required|string|max:100',
'email' => 'required|email|unique:users,email',
'id_pegawai' => 'required',
'password' => 'required|string|min:6',
]);
$user = User::create([
'name' => $validated['name'],
'email' => $validated['email'],
'id_pegawai' => $validated['id_pegawai'],
'password' => Hash::make($validated['password']),
]);
DB::commit();
return response()->json([
'message' => 'User berhasil didaftarkan',
'user' => $user,
'token_type' => 'Bearer',
], 201);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Terjadi kesalahan saat registrasi',
'error' => $e->getMessage()
], 500);
}
}
public function loginUser(Request $request)
{
// return $request->all();
try {
$credentials = $request->validate([
'name' => 'required',
'password' => 'required',
]);
if (!Auth::attempt($credentials)) {
return response()->json([
'message' => 'Username atau password salah',
], 401);
}
$user = Auth::user();
if ($user->statusenabled === false) {
return response()->json([
'message' => 'Akun dinonaktifkan'
], 403);
}
$token = $user->createToken('auth_token')->plainTextToken;
return response()->json([
'message' => 'Login berhasil',
'user' => $user,
'access_token' => $token,
'token_type' => 'Bearer',
]);
} catch (\Exception $e) {
return response()->json([
'message' => 'Terjadi kesalahan saat login',
'error' => $e->getMessage()
], 500);
}
}
public function logoutUser(Request $request)
{
try {
$request->user()->currentAccessToken()->delete();
return response()->json([
'message' => 'Berhasil logout dan token dihapus',
]);
} catch (\Exception $e) {
return response()->json([
'message' => 'Gagal logout',
'error' => $e->getMessage()
], 500);
}
}
}