MIF_E31222854/app/Http/Controllers/API/UserControler.php

98 lines
3.3 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([
'no_telp_wali' => 'required|string',
'password' => 'required'
]);
$user = User::where('no_telp_wali', $request->no_telp_wali)->first();
if (!$user || !Hash::check($request->password, $user->password)) {
return ResponseFormatter::error([
'message' => 'Nomor telepon atau password salah'
], 'Authentication Failed', 401);
}
$tokenResult = $user->createToken('authToken')->plainTextToken;
return ResponseFormatter::success([
'access_token' => $tokenResult,
'token_type' => 'Bearer',
// 'user' => $user
], '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');
}
}