fix: should note delete personal teams

This commit is contained in:
Andras Bacsai 2024-03-05 09:19:15 +01:00
parent f3a279be26
commit 2ffc3f497b
7 changed files with 76 additions and 50 deletions

View File

@ -12,6 +12,10 @@ class DecideWhatToDoWithUser
{
public function handle(Request $request, Closure $next): Response
{
if (auth()?->user()?->teams?->count() === 0) {
$currentTeam = auth()->user()?->recreate_personal_team();
refreshSession($currentTeam);
}
if(auth()?->user()?->currentTeam()){
refreshSession(auth()->user()->currentTeam());
}

View File

@ -45,6 +45,7 @@ class Logs extends Component
}
public function mount()
{
try {
$this->containers = collect();
$this->servers = collect();
$this->parameters = get_route_parameters();
@ -100,6 +101,9 @@ class Logs extends Component
$this->servers = $this->servers->push($this->resource->server);
}
}
} catch (\Exception $e) {
return handleError($e, $this);
}
}
public function render()

View File

@ -144,7 +144,6 @@ class Team extends Model implements SendsDiscord, SendsEmail
$sources = collect([]);
$github_apps = $this->hasMany(GithubApp::class)->whereisPublic(false)->get();
$gitlab_apps = $this->hasMany(GitlabApp::class)->whereisPublic(false)->get();
// $bitbucket_apps = $this->hasMany(BitbucketApp::class)->get();
$sources = $sources->merge($github_apps)->merge($gitlab_apps);
return $sources;
}

View File

@ -26,6 +26,7 @@ class TeamInvitation extends Model
return true;
} else {
$this->delete();
return false;
}
}
}

View File

@ -50,6 +50,21 @@ class User extends Authenticatable implements SendsEmail
$user->teams()->attach($new_team, ['role' => 'owner']);
});
}
public function recreate_personal_team()
{
$team = [
'name' => $this->name . "'s Team",
'personal_team' => true,
'show_boarding' => true
];
if ($this->id === 0) {
$team['id'] = 0;
$team['name'] = 'Root Team';
}
$new_team = Team::create($team);
$this->teams()->attach($new_team, ['role' => 'owner']);
return $new_team;
}
public function createToken(string $name, array $abilities = ['*'], DateTimeInterface $expiresAt = null)
{
$plainTextToken = sprintf(

View File

@ -8,14 +8,12 @@ use App\Actions\Fortify\UpdateUserPassword;
use App\Actions\Fortify\UpdateUserProfileInformation;
use App\Models\InstanceSettings;
use App\Models\User;
use App\Models\Waitlist;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\ServiceProvider;
use Laravel\Fortify\Contracts\RegisterResponse;
use Laravel\Fortify\Features;
use Laravel\Fortify\Fortify;
class FortifyServiceProvider extends ServiceProvider
@ -76,7 +74,11 @@ class FortifyServiceProvider extends ServiceProvider
) {
$user->updated_at = now();
$user->save();
session(['currentTeam' => $user->currentTeam = $user->teams->firstWhere('personal_team', true)]);
$user->currentTeam = $user->teams->firstWhere('personal_team', true);
if (!$user->currentTeam) {
$user->currentTeam = $user->recreate_personal_team();
}
session(['currentTeam' => $user->currentTeam]);
return $user;
}
});

View File

@ -20,10 +20,11 @@
<h4 class="pb-4">Delete Team</h4>
@if (session('currentTeam.id') === 0)
<div>This is the default team. You can't delete it.</div>
@elseif(auth()->user()->teams()->get()->count() === 1)
<div>You can't delete your last team.</div>
@elseif(auth()->user()->teams()->get()->count() === 1 || auth()->user()->currentTeam()->personal_team)
<div>You can't delete your last / personal team.</div>
@elseif(currentTeam()->subscription && currentTeam()->subscription?->lemon_status !== 'cancelled')
<div>Please cancel your subscription <a class="text-white underline" href="{{route('subscription.show')}}">here</a> before delete this team.</div>
<div>Please cancel your subscription <a class="text-white underline"
href="{{ route('subscription.show') }}">here</a> before delete this team.</div>
@else
@if (currentTeam()->isEmpty())
<div class="pb-4">This will delete your team. Beware! There is no coming back!</div>