mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-01 14:06:15 +00:00
add custom path to site env (#629)
This commit is contained in:
@ -17,12 +17,15 @@ public function update(Site $site, array $input): void
|
||||
{
|
||||
Validator::make($input, [
|
||||
'env' => ['required', 'string'],
|
||||
'path' => ['required', 'string'],
|
||||
])->validate();
|
||||
|
||||
$site->server->os()->write(
|
||||
$site->path.'/.env',
|
||||
$input['path'],
|
||||
trim((string) $input['env']),
|
||||
$site->user,
|
||||
);
|
||||
|
||||
$site->jsonUpdate('type_data', 'env_path', $input['path']);
|
||||
}
|
||||
}
|
||||
|
@ -55,12 +55,17 @@ public function share(Request $request): array
|
||||
|
||||
$data = [];
|
||||
if ($request->route('server')) {
|
||||
$data['server'] = ServerResource::make($request->route('server'));
|
||||
/** @var Server $server */
|
||||
$server = $request->route('server');
|
||||
if ($user && $user->can('view', $server) && $user->current_project_id !== $server->project_id) {
|
||||
$user->current_project_id = $server->project_id;
|
||||
$user->save();
|
||||
}
|
||||
|
||||
$data['server'] = ServerResource::make($server);
|
||||
|
||||
// sites
|
||||
$sites = [];
|
||||
/** @var Server $server */
|
||||
$server = $request->route('server');
|
||||
if ($user && $user->can('viewAny', [Site::class, $server])) {
|
||||
$sites = SiteResource::collection($server->sites);
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ export function AppHeader() {
|
||||
<ProjectSwitch />
|
||||
<SlashIcon className="size-3" />
|
||||
<ServerSwitch />
|
||||
{page.props.server && (
|
||||
{page.props.server && page.props.server.services['webserver'] && (
|
||||
<>
|
||||
<SlashIcon className="size-3" />
|
||||
<SiteSwitch />
|
||||
|
@ -11,14 +11,17 @@ import { LoaderCircleIcon } from 'lucide-react';
|
||||
import { registerDotEnvLanguage } from '@/lib/editor';
|
||||
import { Site } from '@/types/site';
|
||||
import { useAppearance } from '@/hooks/use-appearance';
|
||||
import { Input } from '@/components/ui/input';
|
||||
|
||||
export default function Env({ site, children }: { site: Site; children: ReactNode }) {
|
||||
const { getActualAppearance } = useAppearance();
|
||||
const [open, setOpen] = useState(false);
|
||||
const form = useForm<{
|
||||
env: string;
|
||||
path: string;
|
||||
}>({
|
||||
env: '',
|
||||
path: site.type_data.env_path || `${site.path}/.env`,
|
||||
});
|
||||
|
||||
const submit = (e: FormEvent) => {
|
||||
@ -55,7 +58,15 @@ export default function Env({ site, children }: { site: Site; children: ReactNod
|
||||
<SheetTrigger asChild>{children}</SheetTrigger>
|
||||
<SheetContent className="sm:max-w-5xl">
|
||||
<SheetHeader>
|
||||
<SheetTitle>Edit .env</SheetTitle>
|
||||
<SheetTitle>
|
||||
<Input
|
||||
name="path"
|
||||
value={form.data.path}
|
||||
onChange={(e) => form.setData('path', e.target.value)}
|
||||
autoFocus={false}
|
||||
className="max-w-[80%]"
|
||||
/>
|
||||
</SheetTitle>
|
||||
<SheetDescription className="sr-only">Edit .env file</SheetDescription>
|
||||
</SheetHeader>
|
||||
<Form id="update-env-form" className="h-full" onSubmit={submit}>
|
||||
|
1
resources/js/types/site.d.ts
vendored
1
resources/js/types/site.d.ts
vendored
@ -9,6 +9,7 @@ export interface Site {
|
||||
type: string;
|
||||
type_data: {
|
||||
method?: 'round-robin' | 'least-connections' | 'ip-hash';
|
||||
env_path?: string;
|
||||
[key: string]: unknown;
|
||||
};
|
||||
domain: string;
|
||||
|
@ -381,6 +381,7 @@ public function test_update_env(): void
|
||||
'site' => $site,
|
||||
]), [
|
||||
'env' => $envContent,
|
||||
'path' => '/home/vito/some-path/.env',
|
||||
])
|
||||
->assertSuccessful()
|
||||
->assertJsonFragment([
|
||||
|
@ -147,8 +147,13 @@ public function test_update_env_file(): void
|
||||
'site' => $this->site,
|
||||
]), [
|
||||
'env' => 'APP_ENV="production"',
|
||||
'path' => '/home/vito/some-path/.env',
|
||||
])
|
||||
->assertSessionDoesntHaveErrors();
|
||||
|
||||
$this->site->refresh();
|
||||
|
||||
$this->assertEquals('/home/vito/some-path/.env', data_get($this->site->type_data, 'env_path'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user