This commit is contained in:
Andras Bacsai
2023-06-16 15:01:58 +02:00
parent 66af4d98ce
commit b948457115
14 changed files with 167 additions and 42 deletions

View File

@@ -6,6 +6,7 @@ use App\Http\Livewire\Server\PrivateKey;
use App\Models\Environment;
use App\Models\Project;
use App\Models\Server;
use App\Models\Team;
class MagicController extends Controller
{
@@ -53,4 +54,16 @@ class MagicController extends Controller
'environment_name' => $environment->name,
]);
}
public function newTeam()
{
$team = Team::create(
[
'name' => request()->query('name') ?? generate_random_name(),
'personal_team' => false,
],
);
auth()->user()->teams()->attach($team, ['role' => 'admin']);
session(['currentTeam' => $team]);
return redirect(request()->header('Referer'));
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace App\Http\Livewire\Team;
use App\Models\Team;
use Livewire\Component;
class Create extends Component
{
public string $name = '';
public string|null $description = null;
protected $rules = [
'name' => 'required|min:3|max:255',
'description' => 'nullable|min:3|max:255',
];
protected $validationAttributes = [
'name' => 'name',
'description' => 'description',
];
public function submit()
{
$this->validate();
try {
$team = Team::create([
'name' => $this->name,
'description' => $this->description,
'personal_team' => false,
]);
auth()->user()->teams()->attach($team, ['role' => 'admin']);
session(['currentTeam' => $team]);
return redirect()->route('team.show');
} catch (\Throwable $th) {
return general_error_handler($th, $this);
}
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace App\Http\Livewire\Team;
use App\Models\Team;
use Livewire\Component;
use Masmerise\Toaster\Toaster;
class Form extends Component
{
public Team $team;
protected $rules = [
'team.name' => 'required|min:3|max:255',
'team.description' => 'nullable|min:3|max:255',
];
protected $validationAttributes = [
'team.name' => 'name',
'team.description' => 'description',
];
public function mount()
{
$this->team = session('currentTeam');
}
public function submit()
{
$this->validate();
try {
$this->team->save();
session(['currentTeam' => $this->team]);
$this->emit('reloadWindow');
} catch (\Throwable $th) {
return general_error_handler($th, $this);
}
}
}

View File

@@ -20,6 +20,7 @@ class Team extends Model implements SendsDiscord, SendsEmail
protected $fillable = [
'id',
'name',
'description',
'personal_team',
'extra_attributes',
];