From ff5ff7f310b220169e89812dade8a7de460f64d2 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 14 Apr 2023 12:54:29 +0200 Subject: [PATCH] Add root team + localhost (coolify host) in prod seeder --- app/Actions/Fortify/CreateNewUser.php | 38 +++++++++++++++------ app/Http/Controllers/HomeController.php | 7 +++- app/Models/Team.php | 1 + app/Models/User.php | 1 + database/seeders/GithubAppSeeder.php | 2 +- database/seeders/GitlabAppSeeder.php | 2 +- database/seeders/ProductionSeeder.php | 28 +++++++++++++-- database/seeders/ProjectSeeder.php | 2 +- database/seeders/ServerSeeder.php | 8 ++--- database/seeders/StandaloneDockerSeeder.php | 4 +-- database/seeders/SwarmDockerSeeder.php | 4 +-- database/seeders/TeamSeeder.php | 3 +- resources/views/auth/register.blade.php | 4 +-- resources/views/home.blade.php | 6 ++++ 14 files changed, 82 insertions(+), 28 deletions(-) diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php index 01dd464cf..662048a93 100644 --- a/app/Actions/Fortify/CreateNewUser.php +++ b/app/Actions/Fortify/CreateNewUser.php @@ -6,6 +6,7 @@ use App\Models\Team; use App\Models\User; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; use Laravel\Fortify\Contracts\CreatesNewUsers; @@ -33,23 +34,38 @@ class CreateNewUser implements CreatesNewUsers 'password' => $this->passwordRules(), ])->validate(); - $team = Team::create([ - 'name' => explode(' ', $input['name'], 2)[0] . "'s Team", - 'personal_team' => true, - ]); - - $user = User::create([ - 'name' => $input['name'], - 'email' => $input['email'], - 'password' => Hash::make($input['password']), - 'is_root_user' => User::count() == 0 ? true : false, - ]); + if (User::count() == 0) { + // If this is the first user, make them the root user + // Team is already created in the database/seeders/ProductionSeeder.php + $team = Team::find(0); + $user = User::create([ + 'id' => 0, + 'name' => $input['name'], + 'email' => $input['email'], + 'password' => Hash::make($input['password']), + 'is_root_user' => true, + ]); + } else { + $team = Team::create([ + 'name' => explode(' ', $input['name'], 2)[0] . "'s Team", + 'personal_team' => true, + ]); + $user = User::create([ + 'name' => $input['name'], + 'email' => $input['email'], + 'password' => Hash::make($input['password']), + 'is_root_user' => false, + ]); + } + // Add user to team DB::table('team_user')->insert([ 'user_id' => $user->id, 'team_id' => $team->id, 'role' => 'admin', ]); + + // Set session variable session(['currentTeam' => $user->currentTeam = $team]); return $user; } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 7e96700a0..12473ceb9 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -7,6 +7,11 @@ class HomeController extends Controller public function show() { $projects = session('currentTeam')->load(['projects'])->projects; - return view('home', ['projects' => $projects]); + $servers = session('currentTeam')->load(['servers'])->servers; + + return view('home', [ + 'servers' => $servers, + 'projects' => $projects + ]); } } diff --git a/app/Models/Team.php b/app/Models/Team.php index 2128ffca7..e08ea7ad5 100644 --- a/app/Models/Team.php +++ b/app/Models/Team.php @@ -8,6 +8,7 @@ class Team extends BaseModel 'personal_team' => 'boolean', ]; protected $fillable = [ + 'id', 'name', 'personal_team' ]; diff --git a/app/Models/User.php b/app/Models/User.php index 8c47df391..0f1a8a7c2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -19,6 +19,7 @@ class User extends Authenticatable * @var array */ protected $fillable = [ + 'id', 'name', 'email', 'password', diff --git a/database/seeders/GithubAppSeeder.php b/database/seeders/GithubAppSeeder.php index 52a4aa043..d5abe181f 100644 --- a/database/seeders/GithubAppSeeder.php +++ b/database/seeders/GithubAppSeeder.php @@ -15,7 +15,7 @@ class GithubAppSeeder extends Seeder */ public function run(): void { - $root_team = Team::find(1); + $root_team = Team::find(0); $private_key_1 = PrivateKey::find(1); $private_key_2 = PrivateKey::find(2); GithubApp::create([ diff --git a/database/seeders/GitlabAppSeeder.php b/database/seeders/GitlabAppSeeder.php index 92da014a7..77bd5c419 100644 --- a/database/seeders/GitlabAppSeeder.php +++ b/database/seeders/GitlabAppSeeder.php @@ -15,7 +15,7 @@ class GitlabAppSeeder extends Seeder */ public function run(): void { - $root_team = Team::find(1); + $root_team = Team::find(0); $private_key_3 = PrivateKey::find(3); GitlabApp::create([ 'id' => 1, diff --git a/database/seeders/ProductionSeeder.php b/database/seeders/ProductionSeeder.php index 5ffa9fc25..b97448c20 100644 --- a/database/seeders/ProductionSeeder.php +++ b/database/seeders/ProductionSeeder.php @@ -4,6 +4,7 @@ namespace Database\Seeders; use App\Models\PrivateKey; use App\Models\Project; +use App\Models\Server; use App\Models\Team; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Storage; @@ -12,6 +13,7 @@ class ProductionSeeder extends Seeder { public function run(): void { + // Save SSH Keys for the Coolify Host $coolify_key_name = "id.root@host.docker.internal"; $coolify_key = Storage::disk('local')->get("ssh-keys/{$coolify_key_name}"); $coolify_key_in_database = PrivateKey::where('name', 'Coolify Host'); @@ -21,10 +23,32 @@ class ProductionSeeder extends Seeder } if ($coolify_key && !$coolify_key_in_database->exists()) { PrivateKey::create([ - 'name' => 'Coolify Host', - 'description' => 'The private key for the Coolify host machine.', + 'id' => 0, + 'name' => 'localhost\'s key', + 'description' => 'The private key for the Coolify host machine (localhost).', 'private_key' => $coolify_key, ]); } + + // Add first Team if it doesn't exist + if (Team::find(0) == null) { + Team::create([ + 'id' => 0, + 'name' => "Root's Team", + 'personal_team' => true, + ]); + } + // Add Coolify host (localhost) as Server if it doesn't exist + if (Server::find(0) == null) { + Server::create([ + 'id' => 0, + 'name' => "localhost", + 'description' => "This is the local machine", + 'user' => 'root', + 'ip' => "host.docker.internal", + 'team_id' => 0, + 'private_key_id' => 0, + ]); + } } } diff --git a/database/seeders/ProjectSeeder.php b/database/seeders/ProjectSeeder.php index c43a69e5c..d8325b40d 100644 --- a/database/seeders/ProjectSeeder.php +++ b/database/seeders/ProjectSeeder.php @@ -10,7 +10,7 @@ class ProjectSeeder extends Seeder { public function run(): void { - $root_team = Team::find(1); + $root_team = Team::find(0); Project::create([ 'id' => 1, 'name' => "My first project", diff --git a/database/seeders/ServerSeeder.php b/database/seeders/ServerSeeder.php index 10e0484bc..2a2059fda 100644 --- a/database/seeders/ServerSeeder.php +++ b/database/seeders/ServerSeeder.php @@ -14,10 +14,10 @@ class ServerSeeder extends Seeder */ public function run(): void { - $root_team = Team::find(1); + $root_team = Team::find(0); $private_key_1 = PrivateKey::find(1); Server::create([ - 'id' => 1, + 'id' => 0, 'name' => "localhost", 'description' => "This is the local machine", 'user' => 'root', @@ -26,7 +26,7 @@ class ServerSeeder extends Seeder 'private_key_id' => $private_key_1->id, ]); Server::create([ - 'id' => 2, + 'id' => 1, 'name' => "testing-local-docker-container", 'description' => "This is a test docker container", 'ip' => "coolify-testing-host", @@ -34,7 +34,7 @@ class ServerSeeder extends Seeder 'private_key_id' => $private_key_1->id, ]); Server::create([ - 'id' => 3, + 'id' => 2, 'name' => "testing-local-docker-container-2", 'description' => "This is a test docker container", 'ip' => "coolify-testing-host-2", diff --git a/database/seeders/StandaloneDockerSeeder.php b/database/seeders/StandaloneDockerSeeder.php index 77583700f..de303a68b 100644 --- a/database/seeders/StandaloneDockerSeeder.php +++ b/database/seeders/StandaloneDockerSeeder.php @@ -15,11 +15,11 @@ class StandaloneDockerSeeder extends Seeder */ public function run(): void { - $server_1 = Server::find(1); + $server_0 = Server::find(0); StandaloneDocker::create([ 'id' => 1, 'network' => 'coolify', - 'server_id' => $server_1->id, + 'server_id' => $server_0->id, ]); } } diff --git a/database/seeders/SwarmDockerSeeder.php b/database/seeders/SwarmDockerSeeder.php index 6a219f3fd..2d1a87b53 100644 --- a/database/seeders/SwarmDockerSeeder.php +++ b/database/seeders/SwarmDockerSeeder.php @@ -16,10 +16,10 @@ class SwarmDockerSeeder extends Seeder */ public function run(): void { - $server_2 = Server::find(2); + $server_1 = Server::find(1); SwarmDocker::create([ 'id' => 1, - 'server_id' => $server_2->id, + 'server_id' => $server_1->id, ]); } } diff --git a/database/seeders/TeamSeeder.php b/database/seeders/TeamSeeder.php index cedc67924..6921ba902 100644 --- a/database/seeders/TeamSeeder.php +++ b/database/seeders/TeamSeeder.php @@ -15,6 +15,7 @@ class TeamSeeder extends Seeder $normal_user = User::find(2); $root_user_personal_team = Team::create([ + 'id' => 0, 'name' => "Root Team", 'personal_team' => true, ]); @@ -27,7 +28,7 @@ class TeamSeeder extends Seeder 'personal_team' => true, ]); DB::table('team_user')->insert([ - 'team_id' => $root_user_personal_team->id, + 'team_id' => $root_user_personal_team->id, 'user_id' => $root_user->id, 'role' => 'admin', ]); diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index 23ac7abf0..f30506f23 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -1,8 +1,8 @@
@csrf - - + + diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index d0477bc9e..afdea0eb9 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -1,4 +1,10 @@ +

Servers

+ @forelse ($servers as $server) + {{ data_get($server, 'name') }} + @empty +

No projects found.

+ @endforelse

Projects

@forelse ($projects as $project) {{ data_get($project, 'name') }}