101 lines
3.4 KiB
PHP
101 lines
3.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\API;
|
|
|
|
use App\Helpers\ResponseFormatter;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\User;
|
|
use Exception;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
class UserControler extends Controller
|
|
{
|
|
public function register(Request $request)
|
|
{
|
|
try {
|
|
$request->validate([
|
|
'nama_lengkap' => ['required', 'string', 'max:255'],
|
|
'alamat' => ['required', 'string', 'max:255'],
|
|
'tgl_lahir' => ['required', 'date'],
|
|
'nama_wali' => ['nullable', 'string', 'max:255'],
|
|
'no_telp_wali' => ['nullable', 'string', 'max:255'],
|
|
'peran' => ['required', 'in:santri,pengajar'],
|
|
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
|
|
'password' => ['required', 'string', 'min:8'],
|
|
]);
|
|
|
|
$user = User::create([
|
|
'nama_lengkap' => $request->nama_lengkap,
|
|
'alamat' => $request->alamat,
|
|
'tgl_lahir' => $request->tgl_lahir,
|
|
'nama_wali' => $request->nama_wali,
|
|
'no_telp_wali' => $request->no_telp_wali,
|
|
'peran' => $request->peran,
|
|
'email' => $request->email,
|
|
'password' => Hash::make($request->password),
|
|
]);
|
|
|
|
$tokenResult = $user->createToken('authToken')->plainTextToken;
|
|
|
|
return ResponseFormatter::success([
|
|
'access_token' => $tokenResult,
|
|
'token_type' => 'Bearer',
|
|
'user' => $user,
|
|
], 'User Registered');
|
|
} catch (Exception $error) {
|
|
return ResponseFormatter::error([
|
|
'message' => 'Something went wrong',
|
|
'error' => $error->getMessage(),
|
|
], 'Authentication Failed', 500);
|
|
}
|
|
}
|
|
|
|
public function login(Request $request)
|
|
{
|
|
try {
|
|
$request->validate([
|
|
'email' => 'required|string',
|
|
'password' => 'required'
|
|
]);
|
|
|
|
$user = User::where('email', $request->email)->first();
|
|
|
|
if (!$user || !Hash::check($request->password, $user->password)) {
|
|
return ResponseFormatter::error([
|
|
'message' => 'email atau password salah'
|
|
], 'Authentication Failed', 401);
|
|
}
|
|
|
|
$tokenResult = $user->createToken('authToken')->plainTextToken;
|
|
|
|
return ResponseFormatter::success([
|
|
'access_token' => $tokenResult,
|
|
'token_type' => 'Bearer',
|
|
// 'user' => $user
|
|
'user' => [
|
|
'peran' => $user->peran // Pastikan 'status' ada di sini
|
|
]
|
|
], 'Authenticated');
|
|
} catch (Exception $error) {
|
|
return ResponseFormatter::error([
|
|
'message' => 'Something went wrong',
|
|
'error' => $error->getMessage()
|
|
], 'Authentication Failed', 500);
|
|
}
|
|
}
|
|
|
|
public function fetch(Request $request)
|
|
{
|
|
return ResponseFormatter::success($request->user(), 'Data berhasil di ambil');
|
|
}
|
|
|
|
public function logout(Request $request)
|
|
{
|
|
$token = $request->user()->currentAccessToken()->delete();
|
|
|
|
return ResponseFormatter::success($token, 'Token Revoked');
|
|
}
|
|
}
|