Team functionality (#459)
* add api enpoints for adding, removing, updating user to workspace and leaving workspace * feat: updates client site workspace settings * refactor and add domain setting ui in modal * move workspace user functionality to its own component * adds tests * fix linting * updates select input to FlatSelectInput * moves workspace user role edit to seperated component * move user adding to its own component * adds check to usure users exist before checking is admin * fix loading users * feat: invite user to team functionality * fix token coulmn * fix self host mode changes * tests for user invite * Refactor back-end * Rename variables * Improve some styling elements + refactor workspace settings * More styling * More UI polishing * More UI fixes * PHP linting * Implemented most of the logic for team-functionnality * Fix user avatar URL * WIP remove users on cancellation * Finished pricing for team functionality * Fix tests * Fix linting * Added pricing_enabled helper * Fix pricing_enabled shortcut * Debug CI * Disable pricing when testing --------- Co-authored-by: LL-Etiane <lukongleinyuyetiane@gmail.com> Co-authored-by: Lukong Etiane <83535251+LL-Etiane@users.noreply.github.com> Co-authored-by: Julien Nahum <julien@nahum.net>
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\Webhook;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Jobs\Billing\RemoveWorkspaceGuests;
|
||||
use App\Models\License;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@@ -56,7 +57,8 @@ class AppSumoController extends Controller
|
||||
|
||||
private function handleDeactivateEvent($request)
|
||||
{
|
||||
$this->deactivateLicense($request->license_key);
|
||||
$license = $this->deactivateLicense($request->license_key);
|
||||
RemoveWorkspaceGuests::dispatch($license->user);
|
||||
}
|
||||
|
||||
private function createLicense(array $licenseData): License
|
||||
|
||||
@@ -41,17 +41,17 @@ class StripeController extends WebhookController
|
||||
|
||||
$subscription->type = $subscription->type ?? $data['metadata']['name'] ?? $this->newSubscriptionName($payload);
|
||||
|
||||
$firstItem = $data['items']['data'][0];
|
||||
$mainItem = $this->getMainSubscriptionLineItem($data['items']['data']);
|
||||
$isSinglePrice = count($data['items']['data']) === 1;
|
||||
|
||||
// Price...
|
||||
$subscription->stripe_price = $isSinglePrice ? $firstItem['price']['id'] : null;
|
||||
$subscription->stripe_price = $isSinglePrice ? $mainItem['price']['id'] : null;
|
||||
|
||||
// Type - previously (Name)
|
||||
$subscription->type = $this->getSubscriptionName($data['plan']['product']);
|
||||
$subscription->type = $this->getSubscriptionName($mainItem['price']['product']);
|
||||
|
||||
// Quantity...
|
||||
$subscription->quantity = $isSinglePrice && isset($firstItem['quantity']) ? $firstItem['quantity'] : null;
|
||||
$subscription->quantity = $isSinglePrice && isset($mainItem['quantity']) ? $mainItem['quantity'] : null;
|
||||
|
||||
// Trial ending date...
|
||||
if (isset($data['trial_end'])) {
|
||||
@@ -115,6 +115,13 @@ class StripeController extends WebhookController
|
||||
return $this->successMethod();
|
||||
}
|
||||
|
||||
private function getMainSubscriptionLineItem(array $items)
|
||||
{
|
||||
return collect($items)->first(function ($item) {
|
||||
return in_array($this->getSubscriptionName($item['price']['product']), ['default']);
|
||||
});
|
||||
}
|
||||
|
||||
private function getSubscriptionName(string $stripeProductId)
|
||||
{
|
||||
$config = App::environment() == 'production' ? config('pricing.production') : config('pricing.test');
|
||||
|
||||
Reference in New Issue
Block a user