Skip to content

Commit cd29826

Browse files
committed
wip
1 parent 91e028d commit cd29826

File tree

3 files changed

+13
-116
lines changed

3 files changed

+13
-116
lines changed

app/Models/User.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ class User extends Authenticatable implements FilamentUser
2727
protected $casts = [
2828
'email_verified_at' => 'datetime',
2929
'password' => 'hashed',
30-
'mobile_repo_access_granted_at' => 'datetime',
31-
'discord_role_granted_at' => 'datetime',
3230
];
3331

3432
public function canAccessPanel(Panel $panel): bool
@@ -65,9 +63,6 @@ public function plugins(): HasMany
6563
return $this->hasMany(Plugin::class);
6664
}
6765

68-
/**
69-
* @return HasMany<Plugin>
70-
*/
7166
public function hasActiveMaxLicense(): bool
7267
{
7368
return $this->licenses()

resources/views/customer/licenses/index.blade.php

Lines changed: 9 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -11,59 +11,29 @@
1111
</p>
1212
</div>
1313
<div class="flex items-center space-x-3">
14-
<a href="{{ route('customer.showcase.index') }}" class="inline-flex items-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
15-
Showcase
16-
</a>
17-
<a href="{{ route('customer.integrations') }}" class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
18-
Integrations
14+
<a href="{{ route('customer.plugins.index') }}" class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
15+
<x-icons.puzzle class="mr-2 -ml-1 size-4" />
16+
Plugins
1917
</a>
2018
<a href="{{ route('customer.plugins.index') }}" class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
2119
<x-icons.puzzle class="mr-2 -ml-1 size-4" />
2220
Plugins
2321
</a>
2422
<a href="{{ route('customer.billing-portal') }}" class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
25-
Manage Subscription
23+
Manage Your Subscription
2624
</a>
2725
</div>
2826
</div>
2927
</div>
3028
</header>
3129

32-
{{-- Banners --}}
33-
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 mb-6">
34-
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
35-
@if(auth()->user()->hasActualLicense())
36-
<x-discounts-banner :inline="true" />
37-
@endif
38-
<livewire:wall-of-love-banner :inline="true" />
39-
</div>
40-
</div>
30+
{{-- Wall of Love Callout for Early Adopters --}}
31+
<livewire:wall-of-love-banner />
32+
33+
<x-discounts-banner />
4134

4235
{{-- Content --}}
4336
<div class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
44-
{{-- Flash Messages --}}
45-
@if(session()->has('success'))
46-
<div class="bg-green-50 dark:bg-green-900/20 border border-green-200 dark:border-green-700 rounded-lg p-4 mb-6">
47-
<div class="flex items-center">
48-
<svg class="h-5 w-5 text-green-600 dark:text-green-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
49-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
50-
</svg>
51-
<p class="text-sm text-green-700 dark:text-green-300">{{ session('success') }}</p>
52-
</div>
53-
</div>
54-
@endif
55-
56-
@if(session()->has('error'))
57-
<div class="bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-700 rounded-lg p-4 mb-6">
58-
<div class="flex items-center">
59-
<svg class="h-5 w-5 text-red-600 dark:text-red-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
60-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
61-
</svg>
62-
<p class="text-sm text-red-700 dark:text-red-300">{{ session('error') }}</p>
63-
</div>
64-
</div>
65-
@endif
66-
6737
@if($licenses->count() > 0)
6838
<div class="bg-white dark:bg-gray-800 shadow overflow-hidden sm:rounded-md">
6939
<ul class="divide-y divide-gray-200 dark:divide-gray-700">
@@ -159,79 +129,7 @@
159129
@endforeach
160130
</ul>
161131
</div>
162-
@endif
163-
164-
{{-- Assigned Sub-Licenses --}}
165-
@if($assignedSubLicenses->count() > 0)
166-
<div class="mt-8">
167-
<h2 class="text-lg font-medium text-gray-900 dark:text-white mb-4">Assigned Sub-Licenses</h2>
168-
<div class="bg-white dark:bg-gray-800 shadow overflow-hidden sm:rounded-md">
169-
<ul class="divide-y divide-gray-200 dark:divide-gray-700">
170-
@foreach($assignedSubLicenses as $subLicense)
171-
<li>
172-
<div class="px-4 py-4 sm:px-6">
173-
<div class="flex items-center justify-between">
174-
<div class="flex items-center">
175-
<div class="flex-shrink-0">
176-
@if($subLicense->is_suspended)
177-
<div class="w-3 h-3 bg-red-400 rounded-full"></div>
178-
@elseif($subLicense->expires_at && $subLicense->expires_at->isPast())
179-
<div class="w-3 h-3 bg-yellow-400 rounded-full"></div>
180-
@else
181-
<div class="w-3 h-3 bg-green-400 rounded-full"></div>
182-
@endif
183-
</div>
184-
<div class="ml-4">
185-
<div class="flex items-start">
186-
<div class="flex flex-col">
187-
<p class="text-sm font-medium text-blue-600 dark:text-blue-400 truncate">
188-
{{ $subLicense->parentLicense->policy_name ?? 'Sub-License' }}
189-
</p>
190-
<p class="text-xs text-gray-500 dark:text-gray-400">
191-
Sub-license
192-
</p>
193-
</div>
194-
@if($subLicense->is_suspended)
195-
<span class="ml-2 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200">
196-
Suspended
197-
</span>
198-
@elseif($subLicense->expires_at && $subLicense->expires_at->isPast())
199-
<span class="ml-2 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200">
200-
Expired
201-
</span>
202-
@else
203-
<span class="ml-2 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200">
204-
Active
205-
</span>
206-
@endif
207-
</div>
208-
<p class="mt-1 text-sm text-gray-500 dark:text-gray-400 font-mono">
209-
{{ $subLicense->key }}
210-
</p>
211-
</div>
212-
</div>
213-
<div class="flex flex-col items-end">
214-
<p class="text-sm text-gray-900 dark:text-white">
215-
@if($subLicense->expires_at)
216-
Expires {{ $subLicense->expires_at->format('M j, Y') }}
217-
@else
218-
No expiration
219-
@endif
220-
</p>
221-
<p class="text-xs text-gray-500 dark:text-gray-400">
222-
Assigned {{ $subLicense->created_at->format('M j, Y') }}
223-
</p>
224-
</div>
225-
</div>
226-
</div>
227-
</li>
228-
@endforeach
229-
</ul>
230-
</div>
231-
</div>
232-
@endif
233-
234-
@if($licenses->count() === 0 && $assignedSubLicenses->count() === 0)
132+
@else
235133
<div class="text-center">
236134
<div class="bg-white dark:bg-gray-800 shadow sm:rounded-lg p-6">
237135
<h3 class="mt-2 text-sm font-medium text-gray-900 dark:text-white">No licenses found</h3>

routes/web.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use App\Http\Controllers\CustomerSubLicenseController;
99
use App\Http\Controllers\OpenCollectiveWebhookController;
1010
use App\Http\Controllers\PluginDirectoryController;
11+
use App\Http\Controllers\PluginWebhookController;
1112
use App\Http\Controllers\ShowBlogController;
1213
use App\Http\Controllers\ShowDocumentationController;
1314
use Illuminate\Support\Facades\Route;
@@ -57,6 +58,7 @@
5758
Route::view('build-my-app', 'build-my-app')->name('build-my-app');
5859
Route::get('plugins', [PluginDirectoryController::class, 'index'])->name('plugins');
5960
Route::get('plugins/directory', App\Livewire\PluginDirectory::class)->name('plugins.directory');
61+
Route::get('plugins/{plugin}', [PluginDirectoryController::class, 'show'])->name('plugins.show');
6062
Route::view('sponsor', 'sponsoring')->name('sponsoring');
6163
Route::view('vs-react-native-expo', 'vs-react-native-expo')->name('vs-react-native-expo');
6264
Route::view('vs-flutter', 'vs-flutter')->name('vs-flutter');
@@ -225,3 +227,5 @@
225227
});
226228

227229
Route::get('.well-known/assetlinks.json', [ApplinksController::class, 'assetLinks']);
230+
231+
Route::post('webhooks/plugins/{secret}', PluginWebhookController::class)->name('webhooks.plugins');

0 commit comments

Comments
 (0)