mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-01 05:56:16 +00:00
global storage-providers, notification channels and server providers (#247)
This commit is contained in:
@ -29,7 +29,7 @@ public function store(Server $server, Request $request): HtmxResponse
|
||||
{
|
||||
$this->authorize('manage', $server);
|
||||
|
||||
/** @var \App\Models\SshKey $key */
|
||||
/** @var SshKey $key */
|
||||
$key = app(CreateSshKey::class)->create(
|
||||
$request->user(),
|
||||
$request->input()
|
||||
|
@ -35,7 +35,9 @@ public function create(Request $request): View
|
||||
$this->authorize('create', [Server::class, $user->currentProject]);
|
||||
|
||||
$provider = $request->query('provider', old('provider', \App\Enums\ServerProvider::CUSTOM));
|
||||
$serverProviders = ServerProvider::query()->where('provider', $provider)->get();
|
||||
$serverProviders = ServerProvider::getByProjectId(auth()->user()->current_project_id)
|
||||
->where('provider', $provider)
|
||||
->get();
|
||||
|
||||
return view('servers.create', [
|
||||
'serverProviders' => $serverProviders,
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Actions\NotificationChannels\AddChannel;
|
||||
use App\Actions\NotificationChannels\EditChannel;
|
||||
use App\Facades\Toast;
|
||||
use App\Helpers\HtmxResponse;
|
||||
use App\Http\Controllers\Controller;
|
||||
@ -13,11 +14,17 @@
|
||||
|
||||
class NotificationChannelController extends Controller
|
||||
{
|
||||
public function index(): View
|
||||
public function index(Request $request): View
|
||||
{
|
||||
return view('settings.notification-channels.index', [
|
||||
'channels' => NotificationChannel::query()->latest()->get(),
|
||||
]);
|
||||
$data = [
|
||||
'channels' => NotificationChannel::getByProjectId(auth()->user()->current_project_id)->get(),
|
||||
];
|
||||
|
||||
if ($request->has('edit')) {
|
||||
$data['editChannel'] = NotificationChannel::find($request->input('edit'));
|
||||
}
|
||||
|
||||
return view('settings.notification-channels.index', $data);
|
||||
}
|
||||
|
||||
public function add(Request $request): HtmxResponse
|
||||
@ -32,6 +39,19 @@ public function add(Request $request): HtmxResponse
|
||||
return htmx()->redirect(route('settings.notification-channels'));
|
||||
}
|
||||
|
||||
public function update(NotificationChannel $notificationChannel, Request $request): HtmxResponse
|
||||
{
|
||||
app(EditChannel::class)->edit(
|
||||
$notificationChannel,
|
||||
$request->user(),
|
||||
$request->input(),
|
||||
);
|
||||
|
||||
Toast::success('Channel updated.');
|
||||
|
||||
return htmx()->redirect(route('settings.notification-channels'));
|
||||
}
|
||||
|
||||
public function delete(int $id): RedirectResponse
|
||||
{
|
||||
$channel = NotificationChannel::query()->findOrFail($id);
|
||||
|
@ -68,7 +68,7 @@ public function delete(Project $project): RedirectResponse
|
||||
return back();
|
||||
}
|
||||
|
||||
public function switch($projectId): RedirectResponse
|
||||
public function switch(Request $request, $projectId): RedirectResponse
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
@ -81,6 +81,11 @@ public function switch($projectId): RedirectResponse
|
||||
$user->current_project_id = $project->id;
|
||||
$user->save();
|
||||
|
||||
// check if the referer is settings/*
|
||||
if (str_contains($request->headers->get('referer'), 'settings')) {
|
||||
return redirect()->to($request->headers->get('referer'));
|
||||
}
|
||||
|
||||
return redirect()->route('servers');
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Actions\ServerProvider\CreateServerProvider;
|
||||
use App\Actions\ServerProvider\DeleteServerProvider;
|
||||
use App\Actions\ServerProvider\EditServerProvider;
|
||||
use App\Facades\Toast;
|
||||
use App\Helpers\HtmxResponse;
|
||||
use App\Http\Controllers\Controller;
|
||||
@ -14,11 +15,17 @@
|
||||
|
||||
class ServerProviderController extends Controller
|
||||
{
|
||||
public function index(): View
|
||||
public function index(Request $request): View
|
||||
{
|
||||
return view('settings.server-providers.index', [
|
||||
'providers' => auth()->user()->serverProviders,
|
||||
]);
|
||||
$data = [
|
||||
'providers' => ServerProvider::getByProjectId(auth()->user()->current_project_id)->get(),
|
||||
];
|
||||
|
||||
if ($request->has('edit')) {
|
||||
$data['editProvider'] = ServerProvider::find($request->input('edit'));
|
||||
}
|
||||
|
||||
return view('settings.server-providers.index', $data);
|
||||
}
|
||||
|
||||
public function connect(Request $request): HtmxResponse
|
||||
@ -33,6 +40,19 @@ public function connect(Request $request): HtmxResponse
|
||||
return htmx()->redirect(route('settings.server-providers'));
|
||||
}
|
||||
|
||||
public function update(ServerProvider $serverProvider, Request $request): HtmxResponse
|
||||
{
|
||||
app(EditServerProvider::class)->edit(
|
||||
$serverProvider,
|
||||
$request->user(),
|
||||
$request->input(),
|
||||
);
|
||||
|
||||
Toast::success('Provider updated.');
|
||||
|
||||
return htmx()->redirect(route('settings.server-providers'));
|
||||
}
|
||||
|
||||
public function delete(ServerProvider $serverProvider): RedirectResponse
|
||||
{
|
||||
try {
|
||||
|
@ -18,7 +18,7 @@ class SourceControlController extends Controller
|
||||
public function index(Request $request): View
|
||||
{
|
||||
$data = [
|
||||
'sourceControls' => SourceControl::getByCurrentProject(),
|
||||
'sourceControls' => SourceControl::getByProjectId(auth()->user()->current_project_id)->get(),
|
||||
];
|
||||
|
||||
if ($request->has('edit')) {
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
use App\Actions\StorageProvider\CreateStorageProvider;
|
||||
use App\Actions\StorageProvider\DeleteStorageProvider;
|
||||
use App\Actions\StorageProvider\EditStorageProvider;
|
||||
use App\Facades\Toast;
|
||||
use App\Helpers\HtmxResponse;
|
||||
use App\Http\Controllers\Controller;
|
||||
@ -14,11 +15,17 @@
|
||||
|
||||
class StorageProviderController extends Controller
|
||||
{
|
||||
public function index(): View
|
||||
public function index(Request $request): View
|
||||
{
|
||||
return view('settings.storage-providers.index', [
|
||||
'providers' => auth()->user()->storageProviders,
|
||||
]);
|
||||
$data = [
|
||||
'providers' => StorageProvider::getByProjectId(auth()->user()->current_project_id)->get(),
|
||||
];
|
||||
|
||||
if ($request->has('edit')) {
|
||||
$data['editProvider'] = StorageProvider::find($request->input('edit'));
|
||||
}
|
||||
|
||||
return view('settings.storage-providers.index', $data);
|
||||
}
|
||||
|
||||
public function connect(Request $request): HtmxResponse
|
||||
@ -33,6 +40,19 @@ public function connect(Request $request): HtmxResponse
|
||||
return htmx()->redirect(route('settings.storage-providers'));
|
||||
}
|
||||
|
||||
public function update(StorageProvider $storageProvider, Request $request): HtmxResponse
|
||||
{
|
||||
app(EditStorageProvider::class)->edit(
|
||||
$storageProvider,
|
||||
$request->user(),
|
||||
$request->input(),
|
||||
);
|
||||
|
||||
Toast::success('Provider updated.');
|
||||
|
||||
return htmx()->redirect(route('settings.storage-providers'));
|
||||
}
|
||||
|
||||
public function delete(StorageProvider $storageProvider): RedirectResponse
|
||||
{
|
||||
try {
|
||||
|
Reference in New Issue
Block a user