You need to register a GitHub App before using this source.
+ @if (!isCloud() || isDev())
+
+
+ @if ($ipv4)
+
+ @endif
+ @if ($ipv6)
+
+ @endif
+ @if ($fqdn)
+
+ @endif
+ @if (config('app.url'))
+
+ @endif
+
- Register Now
+ Register
- @endif
-
-
-
+ @else
+
+ Register Now
+
+ @endif
+
+
+
-
-
- @endif
-
+ const webhookBaseUrl = `${baseUrl}/webhooks`;
+ const path = organization ? `organizations/${organization}/settings/apps/new` : 'settings/apps/new';
+ const default_permissions = {
+ contents: 'read',
+ metadata: 'read',
+ emails: 'read'
+ };
+ if (preview_deployment_permissions) {
+ default_permissions.pull_requests = 'write';
+ }
+ const data = {
+ name,
+ url: baseUrl,
+ hook_attributes: {
+ url: `${webhookBaseUrl}/source/github/events`,
+ active: true,
+ },
+ redirect_url: `${webhookBaseUrl}/source/github/redirect`,
+ callback_urls: [`${baseUrl}/login/github/app`],
+ public: false,
+ request_oauth_on_install: false,
+ setup_url: `${webhookBaseUrl}/source/github/install?source=${uuid}`,
+ setup_on_update: true,
+ default_permissions,
+ default_events: ['pull_request', 'push']
+ };
+ const form = document.createElement('form');
+ form.setAttribute('method', 'post');
+ form.setAttribute('action', `${html_url}/${path}?state=${uuid}`);
+ const input = document.createElement('input');
+ input.setAttribute('id', 'manifest');
+ input.setAttribute('name', 'manifest');
+ input.setAttribute('type', 'hidden');
+ input.setAttribute('value', JSON.stringify(data));
+ form.appendChild(input);
+ document.getElementsByTagName('body')[0].appendChild(form);
+ form.submit();
+ }
+
+ @endif
diff --git a/routes/web.php b/routes/web.php
index 83e119aee..54226ca89 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -20,11 +20,10 @@ use App\Http\Livewire\Server\PrivateKey\Show as PrivateKeyShow;
use App\Http\Livewire\Server\Proxy\Show as ProxyShow;
use App\Http\Livewire\Server\Proxy\Logs as ProxyLogs;
use App\Http\Livewire\Server\Show;
+use App\Http\Livewire\Source\Github\Change as GitHubChange;
use App\Http\Livewire\Subscription\Show as SubscriptionShow;
use App\Http\Livewire\Waitlist\Index as WaitlistIndex;
-use App\Models\GithubApp;
use App\Models\GitlabApp;
-use App\Models\InstanceSettings;
use App\Models\PrivateKey;
use App\Models\Server;
use App\Models\StandaloneDocker;
@@ -178,49 +177,7 @@ Route::middleware(['auth'])->group(function () {
'sources' => $sources,
]);
})->name('source.all');
- Route::get('/source/github/{github_app_uuid}', function (Request $request) {
- $github_app = GithubApp::where('uuid', request()->github_app_uuid)->first();
- if (!$github_app) {
- abort(404);
- }
- $github_app->makeVisible('client_secret')->makeVisible('webhook_secret');
- $settings = InstanceSettings::get();
- $name = Str::of(Str::kebab($github_app->name));
- if ($settings->public_ipv4) {
- $ipv4 = 'http://' . $settings->public_ipv4 . ':' . config('app.port');
- }
- if ($settings->public_ipv6) {
- $ipv6 = 'http://' . $settings->public_ipv6 . ':' . config('app.port');
- }
- if ($github_app->installation_id && session('from')) {
- $source_id = data_get(session('from'), 'source_id');
- if (!$source_id || $github_app->id !== $source_id) {
- session()->forget('from');
- } else {
- $parameters = data_get(session('from'), 'parameters');
- $back = data_get(session('from'), 'back');
- $environment_name = data_get($parameters, 'environment_name');
- $project_uuid = data_get($parameters, 'project_uuid');
- $type = data_get($parameters, 'type');
- $destination = data_get($parameters, 'destination');
- session()->forget('from');
- return redirect()->route($back, [
- 'environment_name' => $environment_name,
- 'project_uuid' => $project_uuid,
- 'type' => $type,
- 'destination' => $destination,
- ]);
- }
- }
- return view('source.github.show', [
- 'github_app' => $github_app,
- 'name' => $name,
- 'ipv4' => $ipv4 ?? null,
- 'ipv6' => $ipv6 ?? null,
- 'fqdn' => $settings->fqdn,
- ]);
- })->name('source.github.show');
-
+ Route::get('/source/github/{github_app_uuid}', GitHubChange::class)->name('source.github.show');
Route::get('/source/gitlab/{gitlab_app_uuid}', function (Request $request) {
$gitlab_app = GitlabApp::where('uuid', request()->gitlab_app_uuid)->first();
return view('source.gitlab.show', [
diff --git a/versions.json b/versions.json
index 4ebbef973..cff2caaf6 100644
--- a/versions.json
+++ b/versions.json
@@ -4,7 +4,7 @@
"version": "3.12.36"
},
"v4": {
- "version": "4.0.0-beta.111"
+ "version": "4.0.0-beta.112"
}
}
}