refactor: encapsulate password update and push subscription logic within dedicated services
This commit is contained in:
parent
60142c5aa8
commit
5119dd7208
@ -5,8 +5,8 @@
|
|||||||
use App\Http\Controllers\Concerns\FlashesEntityMessage;
|
use App\Http\Controllers\Concerns\FlashesEntityMessage;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Admin\Account\UpdatePasswordRequest;
|
use App\Http\Requests\Admin\Account\UpdatePasswordRequest;
|
||||||
|
use App\Services\Account\ProfileService;
|
||||||
use Illuminate\Http\RedirectResponse;
|
use Illuminate\Http\RedirectResponse;
|
||||||
use Illuminate\Support\Facades\Hash;
|
|
||||||
use Inertia\Inertia;
|
use Inertia\Inertia;
|
||||||
use Inertia\Response;
|
use Inertia\Response;
|
||||||
|
|
||||||
@ -14,6 +14,10 @@ class PasswordController extends Controller
|
|||||||
{
|
{
|
||||||
use FlashesEntityMessage;
|
use FlashesEntityMessage;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
private readonly ProfileService $profileService,
|
||||||
|
) {}
|
||||||
|
|
||||||
public function edit(): Response
|
public function edit(): Response
|
||||||
{
|
{
|
||||||
return Inertia::render('admin/account/Password');
|
return Inertia::render('admin/account/Password');
|
||||||
@ -21,9 +25,10 @@ public function edit(): Response
|
|||||||
|
|
||||||
public function update(UpdatePasswordRequest $request): RedirectResponse
|
public function update(UpdatePasswordRequest $request): RedirectResponse
|
||||||
{
|
{
|
||||||
$user = $request->user();
|
$this->profileService->updatePassword(
|
||||||
$user->password = Hash::make($request->validated('password'));
|
$request->user(),
|
||||||
$user->save();
|
$request->validated('password'),
|
||||||
|
);
|
||||||
|
|
||||||
$this->flashUpdated('Kata sandi');
|
$this->flashUpdated('Kata sandi');
|
||||||
|
|
||||||
|
|||||||
@ -3,25 +3,20 @@
|
|||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Http\Requests\PushSubscriptionRequest;
|
use App\Http\Requests\PushSubscriptionRequest;
|
||||||
use App\Models\PushSubscription;
|
use App\Services\System\PushSubscriptionService;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Support\Facades\Auth;
|
|
||||||
|
|
||||||
class PushSubscriptionController extends Controller
|
class PushSubscriptionController extends Controller
|
||||||
{
|
{
|
||||||
|
public function __construct(
|
||||||
|
private readonly PushSubscriptionService $pushSubscriptionService,
|
||||||
|
) {}
|
||||||
|
|
||||||
public function store(PushSubscriptionRequest $request): JsonResponse
|
public function store(PushSubscriptionRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
$validated = $request->validated();
|
$this->pushSubscriptionService->updateOrCreateSubscription(
|
||||||
|
$request->validated(),
|
||||||
PushSubscription::updateOrCreate(
|
$request->user()->id,
|
||||||
[
|
|
||||||
'user_id' => Auth::id(),
|
|
||||||
'endpoint' => $validated['endpoint'],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'public_key' => $validated['publicKey'],
|
|
||||||
'auth_token' => $validated['authToken'],
|
|
||||||
]
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return response()->json(['message' => 'Subscription berhasil disimpan.']);
|
return response()->json(['message' => 'Subscription berhasil disimpan.']);
|
||||||
@ -29,11 +24,10 @@ public function store(PushSubscriptionRequest $request): JsonResponse
|
|||||||
|
|
||||||
public function destroy(PushSubscriptionRequest $request): JsonResponse
|
public function destroy(PushSubscriptionRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
$validated = $request->validated();
|
$this->pushSubscriptionService->deleteSubscription(
|
||||||
|
$request->validated('endpoint'),
|
||||||
PushSubscription::where('user_id', Auth::id())
|
$request->user()->id,
|
||||||
->where('endpoint', $validated['endpoint'])
|
);
|
||||||
->delete();
|
|
||||||
|
|
||||||
return response()->json(['message' => 'Subscription berhasil dihapus.']);
|
return response()->json(['message' => 'Subscription berhasil dihapus.']);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
|
||||||
class ProfileService
|
class ProfileService
|
||||||
{
|
{
|
||||||
@ -29,4 +30,13 @@ public function update(array $validated, User $user): void
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update user password.
|
||||||
|
*/
|
||||||
|
public function updatePassword(User $user, string $password): void
|
||||||
|
{
|
||||||
|
$user->password = Hash::make($password);
|
||||||
|
$user->save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
37
app/Services/System/PushSubscriptionService.php
Normal file
37
app/Services/System/PushSubscriptionService.php
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services\System;
|
||||||
|
|
||||||
|
use App\Models\PushSubscription;
|
||||||
|
|
||||||
|
class PushSubscriptionService
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Store or update a push subscription.
|
||||||
|
*
|
||||||
|
* @param array<string, mixed> $validated
|
||||||
|
*/
|
||||||
|
public function updateOrCreateSubscription(array $validated, int $userId): void
|
||||||
|
{
|
||||||
|
PushSubscription::updateOrCreate(
|
||||||
|
[
|
||||||
|
'user_id' => $userId,
|
||||||
|
'endpoint' => $validated['endpoint'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'public_key' => $validated['publicKey'],
|
||||||
|
'auth_token' => $validated['authToken'],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a push subscription.
|
||||||
|
*/
|
||||||
|
public function deleteSubscription(string $endpoint, int $userId): void
|
||||||
|
{
|
||||||
|
PushSubscription::where('user_id', $userId)
|
||||||
|
->where('endpoint', $endpoint)
|
||||||
|
->delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user