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:
@@ -7,6 +7,7 @@ use App\Models\Traits\CachableAttributes;
|
||||
use App\Models\Traits\CachesAttributes;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class Workspace extends Model implements CachableAttributes
|
||||
{
|
||||
@@ -50,7 +51,7 @@ class Workspace extends Model implements CachableAttributes
|
||||
|
||||
public function getMaxFileSizeAttribute()
|
||||
{
|
||||
if (is_null(config('cashier.key'))) {
|
||||
if (!pricing_enabled()) {
|
||||
return self::MAX_FILE_SIZE_PRO;
|
||||
}
|
||||
|
||||
@@ -73,7 +74,7 @@ class Workspace extends Model implements CachableAttributes
|
||||
|
||||
public function getCustomDomainCountLimitAttribute()
|
||||
{
|
||||
if (is_null(config('cashier.key'))) {
|
||||
if (!pricing_enabled()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -95,7 +96,7 @@ class Workspace extends Model implements CachableAttributes
|
||||
|
||||
public function getIsProAttribute()
|
||||
{
|
||||
if (is_null(config('cashier.key'))) {
|
||||
if (!pricing_enabled()) {
|
||||
return true; // If no paid plan so TRUE for ALL
|
||||
}
|
||||
|
||||
@@ -113,7 +114,7 @@ class Workspace extends Model implements CachableAttributes
|
||||
|
||||
public function getIsTrialingAttribute()
|
||||
{
|
||||
if (is_null(config('cashier.key'))) {
|
||||
if (!pricing_enabled()) {
|
||||
return false; // If no paid plan so FALSE for ALL
|
||||
}
|
||||
|
||||
@@ -131,7 +132,7 @@ class Workspace extends Model implements CachableAttributes
|
||||
|
||||
public function getIsEnterpriseAttribute()
|
||||
{
|
||||
if (is_null(config('cashier.key'))) {
|
||||
if (!pricing_enabled()) {
|
||||
return true; // If no paid plan so TRUE for ALL
|
||||
}
|
||||
|
||||
@@ -181,11 +182,21 @@ class Workspace extends Model implements CachableAttributes
|
||||
return $this->belongsToMany(User::class);
|
||||
}
|
||||
|
||||
public function invites()
|
||||
{
|
||||
return $this->hasMany(UserInvite::class);
|
||||
}
|
||||
|
||||
public function owners()
|
||||
{
|
||||
return $this->users()->wherePivot('role', 'admin');
|
||||
}
|
||||
|
||||
public function billingOwners(): Collection
|
||||
{
|
||||
return $this->owners->filter(fn ($owner) => $owner->is_subscribed);
|
||||
}
|
||||
|
||||
public function forms()
|
||||
{
|
||||
return $this->hasMany(Form::class);
|
||||
|
||||
Reference in New Issue
Block a user