- Redesign dashboard as daily briefing format with action-first layout - Consolidate sidebar menu structure (Dashboard as single link) - Fix CRM form styling to use consistent UI patterns - Add PWA icons and push notification groundwork - Update SuiteMenuResolver for cleaner navigation
59 lines
1.5 KiB
PHP
59 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use NotificationChannels\WebPush\PushSubscription;
|
|
|
|
class PushSubscriptionController extends Controller
|
|
{
|
|
/**
|
|
* Store a new push subscription
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
$validated = $request->validate([
|
|
'endpoint' => 'required|url',
|
|
'keys.p256dh' => 'required|string',
|
|
'keys.auth' => 'required|string',
|
|
]);
|
|
|
|
$user = $request->user();
|
|
|
|
// Delete existing subscription for this endpoint
|
|
PushSubscription::where('endpoint', $validated['endpoint'])->delete();
|
|
|
|
// Create new subscription
|
|
$subscription = $user->updatePushSubscription(
|
|
$validated['endpoint'],
|
|
$validated['keys']['p256dh'],
|
|
$validated['keys']['auth']
|
|
);
|
|
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Push subscription saved',
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Delete a push subscription
|
|
*/
|
|
public function destroy(Request $request)
|
|
{
|
|
$validated = $request->validate([
|
|
'endpoint' => 'required|url',
|
|
]);
|
|
|
|
PushSubscription::where('endpoint', $validated['endpoint'])
|
|
->where('subscribable_id', $request->user()->id)
|
|
->delete();
|
|
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Push subscription removed',
|
|
]);
|
|
}
|
|
}
|