fix: glitchtip things
This commit is contained in:
parent
92f513d514
commit
a9b5cd6c31
@ -2,13 +2,13 @@ import type { FastifyReply, FastifyRequest } from 'fastify';
|
|||||||
import fs from 'fs/promises';
|
import fs from 'fs/promises';
|
||||||
import yaml from 'js-yaml';
|
import yaml from 'js-yaml';
|
||||||
import bcrypt from 'bcryptjs';
|
import bcrypt from 'bcryptjs';
|
||||||
import { prisma, uniqueName, asyncExecShell, getServiceImage, getServiceFromDB, getContainerUsage,isDomainConfigured, saveUpdateableFields, fixType, decrypt, encrypt, getServiceMainPort, createDirectories, ComposeFile, makeLabelForServices, getFreePublicPort, getDomain, errorHandler, generatePassword, isDev, stopTcpHttpProxy, executeDockerCmd, checkDomainsIsValidInDNS, persistentVolumes, asyncSleep, isARM, defaultComposeConfiguration, checkExposedPort } from '../../../../lib/common';
|
import { prisma, uniqueName, asyncExecShell, getServiceImage, getServiceFromDB, getContainerUsage, isDomainConfigured, saveUpdateableFields, fixType, decrypt, encrypt, getServiceMainPort, createDirectories, ComposeFile, makeLabelForServices, getFreePublicPort, getDomain, errorHandler, generatePassword, isDev, stopTcpHttpProxy, executeDockerCmd, checkDomainsIsValidInDNS, persistentVolumes, asyncSleep, isARM, defaultComposeConfiguration, checkExposedPort } from '../../../../lib/common';
|
||||||
import { day } from '../../../../lib/dayjs';
|
import { day } from '../../../../lib/dayjs';
|
||||||
import { checkContainer, isContainerExited, removeContainer } from '../../../../lib/docker';
|
import { checkContainer, isContainerExited, removeContainer } from '../../../../lib/docker';
|
||||||
import cuid from 'cuid';
|
import cuid from 'cuid';
|
||||||
|
|
||||||
import type { OnlyId } from '../../../../types';
|
import type { OnlyId } from '../../../../types';
|
||||||
import type { ActivateWordpressFtp, CheckService, CheckServiceDomain, DeleteServiceSecret, DeleteServiceStorage, GetServiceLogs, SaveService, SaveServiceDestination, SaveServiceSecret, SaveServiceSettings, SaveServiceStorage, SaveServiceType, SaveServiceVersion, ServiceStartStop, SetWordpressSettings } from './types';
|
import type { ActivateWordpressFtp, CheckService, CheckServiceDomain, DeleteServiceSecret, DeleteServiceStorage, GetServiceLogs, SaveService, SaveServiceDestination, SaveServiceSecret, SaveServiceSettings, SaveServiceStorage, SaveServiceType, SaveServiceVersion, ServiceStartStop, SetGlitchTipSettings, SetWordpressSettings } from './types';
|
||||||
import { defaultServiceConfigurations } from '../../../../lib/services';
|
import { defaultServiceConfigurations } from '../../../../lib/services';
|
||||||
import { supportedServiceTypesAndVersions } from '../../../../lib/services/supportedVersions';
|
import { supportedServiceTypesAndVersions } from '../../../../lib/services/supportedVersions';
|
||||||
import { configureServiceType, removeService } from '../../../../lib/services/common';
|
import { configureServiceType, removeService } from '../../../../lib/services/common';
|
||||||
@ -269,7 +269,6 @@ export async function saveService(request: FastifyRequest<SaveService>, reply: F
|
|||||||
if (exposePort) exposePort = Number(exposePort);
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
type = fixType(type)
|
type = fixType(type)
|
||||||
|
|
||||||
const update = saveUpdateableFields(type, request.body[type])
|
const update = saveUpdateableFields(type, request.body[type])
|
||||||
const data = {
|
const data = {
|
||||||
fqdn,
|
fqdn,
|
||||||
@ -400,17 +399,33 @@ export async function deleteServiceStorage(request: FastifyRequest<DeleteService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function setSettingsService(request: FastifyRequest<ServiceStartStop & SetWordpressSettings>, reply: FastifyReply) {
|
export async function setSettingsService(request: FastifyRequest<ServiceStartStop & SetWordpressSettings & SetGlitchTipSettings>, reply: FastifyReply) {
|
||||||
try {
|
try {
|
||||||
const { type } = request.params
|
const { type } = request.params
|
||||||
if (type === 'wordpress') {
|
if (type === 'wordpress') {
|
||||||
return await setWordpressSettings(request, reply)
|
return await setWordpressSettings(request, reply)
|
||||||
}
|
}
|
||||||
|
if (type === 'glitchtip') {
|
||||||
|
return await setGlitchTipSettings(request, reply)
|
||||||
|
}
|
||||||
throw `Service type ${type} not supported.`
|
throw `Service type ${type} not supported.`
|
||||||
} catch ({ status, message }) {
|
} catch ({ status, message }) {
|
||||||
return errorHandler({ status, message })
|
return errorHandler({ status, message })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
async function setGlitchTipSettings(request: FastifyRequest<SetGlitchTipSettings>, reply: FastifyReply) {
|
||||||
|
try {
|
||||||
|
const { id } = request.params
|
||||||
|
const { enableOpenUserRegistration, emailSmtpUseSsl, emailSmtpUseTls } = request.body
|
||||||
|
await prisma.glitchTip.update({
|
||||||
|
where: { serviceId: id },
|
||||||
|
data: { enableOpenUserRegistration, emailSmtpUseSsl, emailSmtpUseTls }
|
||||||
|
});
|
||||||
|
return reply.code(201).send()
|
||||||
|
} catch ({ status, message }) {
|
||||||
|
return errorHandler({ status, message })
|
||||||
|
}
|
||||||
|
}
|
||||||
async function setWordpressSettings(request: FastifyRequest<ServiceStartStop & SetWordpressSettings>, reply: FastifyReply) {
|
async function setWordpressSettings(request: FastifyRequest<ServiceStartStop & SetWordpressSettings>, reply: FastifyReply) {
|
||||||
try {
|
try {
|
||||||
const { id } = request.params
|
const { id } = request.params
|
||||||
|
@ -29,7 +29,7 @@ import {
|
|||||||
} from './handlers';
|
} from './handlers';
|
||||||
|
|
||||||
import type { OnlyId } from '../../../../types';
|
import type { OnlyId } from '../../../../types';
|
||||||
import type { ActivateWordpressFtp, CheckService, CheckServiceDomain, DeleteServiceSecret, DeleteServiceStorage, GetServiceLogs, SaveService, SaveServiceDestination, SaveServiceSecret, SaveServiceSettings, SaveServiceStorage, SaveServiceType, SaveServiceVersion, ServiceStartStop, SetWordpressSettings } from './types';
|
import type { ActivateWordpressFtp, CheckService, CheckServiceDomain, DeleteServiceSecret, DeleteServiceStorage, GetServiceLogs, SaveService, SaveServiceDestination, SaveServiceSecret, SaveServiceSettings, SaveServiceStorage, SaveServiceType, SaveServiceVersion, ServiceStartStop, SetGlitchTipSettings, SetWordpressSettings } from './types';
|
||||||
import { startService, stopService } from '../../../../lib/services/handlers';
|
import { startService, stopService } from '../../../../lib/services/handlers';
|
||||||
|
|
||||||
const root: FastifyPluginAsync = async (fastify): Promise<void> => {
|
const root: FastifyPluginAsync = async (fastify): Promise<void> => {
|
||||||
@ -71,7 +71,7 @@ const root: FastifyPluginAsync = async (fastify): Promise<void> => {
|
|||||||
|
|
||||||
fastify.post<ServiceStartStop>('/:id/:type/start', async (request) => await startService(request));
|
fastify.post<ServiceStartStop>('/:id/:type/start', async (request) => await startService(request));
|
||||||
fastify.post<ServiceStartStop>('/:id/:type/stop', async (request) => await stopService(request));
|
fastify.post<ServiceStartStop>('/:id/:type/stop', async (request) => await stopService(request));
|
||||||
fastify.post<ServiceStartStop & SetWordpressSettings>('/:id/:type/settings', async (request, reply) => await setSettingsService(request, reply));
|
fastify.post<ServiceStartStop & SetWordpressSettings & SetGlitchTipSettings>('/:id/:type/settings', async (request, reply) => await setSettingsService(request, reply));
|
||||||
|
|
||||||
fastify.post<OnlyId>('/:id/plausibleanalytics/activate', async (request, reply) => await activatePlausibleUsers(request, reply));
|
fastify.post<OnlyId>('/:id/plausibleanalytics/activate', async (request, reply) => await activatePlausibleUsers(request, reply));
|
||||||
fastify.post<OnlyId>('/:id/plausibleanalytics/cleanup', async (request, reply) => await cleanupPlausibleLogs(request, reply));
|
fastify.post<OnlyId>('/:id/plausibleanalytics/cleanup', async (request, reply) => await cleanupPlausibleLogs(request, reply));
|
||||||
|
@ -89,6 +89,12 @@ export interface ActivateWordpressFtp extends OnlyId {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface SetGlitchTipSettings extends OnlyId {
|
||||||
|
Body: {
|
||||||
|
enableOpenUserRegistration: boolean,
|
||||||
|
emailSmtpUseSsl: boolean,
|
||||||
|
emailSmtpUseTls: boolean
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<svg
|
<svg
|
||||||
viewBox="0 0 127 74"
|
viewBox="0 0 127 74"
|
||||||
class={isAbsolute ? 'w-10 h-10 absolute top-0 left-0 -m-5' : 'w-8 h-8mx-auto'}
|
class={isAbsolute ? 'w-10 h-10 absolute top-0 left-0 -m-5' : 'w-8 h-8 mx-auto'}
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
><path
|
><path
|
||||||
d="M.825 73.993l23.244-59.47A21.85 21.85 0 0144.42.625h14.014L35.19 60.096a21.85 21.85 0 01-20.352 13.897H.825z"
|
d="M.825 73.993l23.244-59.47A21.85 21.85 0 0144.42.625h14.014L35.19 60.096a21.85 21.85 0 01-20.352 13.897H.825z"
|
||||||
|
@ -1,17 +1,51 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import CopyPasswordField from '$lib/components/CopyPasswordField.svelte';
|
import CopyPasswordField from '$lib/components/CopyPasswordField.svelte';
|
||||||
import Explainer from '$lib/components/Explainer.svelte';
|
import { addToast, status } from '$lib/store';
|
||||||
import Setting from '$lib/components/Setting.svelte';
|
import Setting from '$lib/components/Setting.svelte';
|
||||||
import { t } from '$lib/translations';
|
import { t } from '$lib/translations';
|
||||||
|
import { post } from '$lib/api';
|
||||||
|
import { page } from '$app/stores';
|
||||||
|
import { errorNotification } from '$lib/common';
|
||||||
export let service: any;
|
export let service: any;
|
||||||
function toggleEmailSmtpUseTls() {
|
|
||||||
service.glitchTip.emailSmtpUseTls = !service.glitchTip.emailSmtpUseTls;
|
const { id } = $page.params;
|
||||||
}
|
let loading = false;
|
||||||
function toggleEmailSmtpUseSsl() {
|
|
||||||
service.glitchTip.emailSmtpUseSsl = !service.glitchTip.emailSmtpUseSsl;
|
async function changeSettings(name: any) {
|
||||||
}
|
if (loading || $status.service.isRunning) return;
|
||||||
function toggleEnableOpenUserRegistration() {
|
|
||||||
service.glitchTip.enableOpenUserRegistration = !service.glitchTip.enableOpenUserRegistration;
|
let enableOpenUserRegistration = service.glitchTip.enableOpenUserRegistration;
|
||||||
|
let emailSmtpUseSsl = service.glitchTip.emailSmtpUseSsl;
|
||||||
|
let emailSmtpUseTls = service.glitchTip.emailSmtpUseTls;
|
||||||
|
|
||||||
|
loading = true;
|
||||||
|
if (name === 'enableOpenUserRegistration') {
|
||||||
|
enableOpenUserRegistration = !enableOpenUserRegistration;
|
||||||
|
}
|
||||||
|
if (name === 'emailSmtpUseSsl') {
|
||||||
|
emailSmtpUseSsl = !emailSmtpUseSsl;
|
||||||
|
}
|
||||||
|
if (name === 'emailSmtpUseTls') {
|
||||||
|
emailSmtpUseTls = !emailSmtpUseTls;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
await post(`/services/${id}/glitchtip/settings`, {
|
||||||
|
enableOpenUserRegistration,
|
||||||
|
emailSmtpUseSsl,
|
||||||
|
emailSmtpUseTls
|
||||||
|
});
|
||||||
|
service.glitchTip.emailSmtpUseTls = emailSmtpUseTls;
|
||||||
|
service.glitchTip.emailSmtpUseSsl = emailSmtpUseSsl;
|
||||||
|
service.glitchTip.enableOpenUserRegistration = enableOpenUserRegistration;
|
||||||
|
return addToast({
|
||||||
|
message: 'Settings updated.',
|
||||||
|
type: 'success',
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
return errorNotification(error);
|
||||||
|
} finally {
|
||||||
|
loading = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -19,76 +53,33 @@
|
|||||||
<div class="title">GlitchTip</div>
|
<div class="title">GlitchTip</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex space-x-1 py-2 font-bold">
|
|
||||||
<div class="subtitle">Settings</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
<Setting
|
<Setting
|
||||||
|
bind:setting={service.glitchTip.enableOpenUserRegistration}
|
||||||
|
{loading}
|
||||||
|
disabled={$status.service.isRunning}
|
||||||
|
on:click={() => changeSettings('enableOpenUserRegistration')}
|
||||||
|
title="Enable Open User Registration"
|
||||||
|
description={''}
|
||||||
|
/>
|
||||||
|
<!-- <Setting
|
||||||
bind:setting={service.glitchTip.enableOpenUserRegistration}
|
bind:setting={service.glitchTip.enableOpenUserRegistration}
|
||||||
on:click={toggleEnableOpenUserRegistration}
|
on:click={toggleEnableOpenUserRegistration}
|
||||||
title={'Enable Open User Registration'}
|
title={'Enable Open User Registration'}
|
||||||
description={''}
|
description={''}
|
||||||
/>
|
/> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex space-x-1 py-2 font-bold">
|
<div class="flex space-x-1 py-2 font-bold">
|
||||||
<div class="subtitle">Email settings</div>
|
<div class="subtitle">Email settings</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
|
||||||
<label for="defaultEmailFrom" class="text-base font-bold text-stone-100">Default Email From</label
|
|
||||||
>
|
|
||||||
<CopyPasswordField
|
|
||||||
required
|
|
||||||
name="defaultEmailFrom"
|
|
||||||
id="defaultEmailFrom"
|
|
||||||
value={service.glitchTip.defaultEmailFrom}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
|
||||||
<label for="emailSmtpHost" class="text-base font-bold text-stone-100">SMTP Host</label>
|
|
||||||
<CopyPasswordField
|
|
||||||
name="emailSmtpHost"
|
|
||||||
id="emailSmtpHost"
|
|
||||||
value={service.glitchTip.emailSmtpHost}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
|
||||||
<label for="emailSmtpPort" class="text-base font-bold text-stone-100">SMTP Port</label>
|
|
||||||
<CopyPasswordField
|
|
||||||
name="emailSmtpPort"
|
|
||||||
id="emailSmtpPort"
|
|
||||||
value={service.glitchTip.emailSmtpPort}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
|
||||||
<label for="emailSmtpUser" class="text-base font-bold text-stone-100">SMTP User</label>
|
|
||||||
<CopyPasswordField
|
|
||||||
name="emailSmtpUser"
|
|
||||||
id="emailSmtpUser"
|
|
||||||
value={service.glitchTip.emailSmtpUser}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
|
||||||
<label for="emailSmtpPassword" class="text-base font-bold text-stone-100">SMTP Password</label>
|
|
||||||
<CopyPasswordField
|
|
||||||
name="emailSmtpPassword"
|
|
||||||
id="emailSmtpPassword"
|
|
||||||
value={service.glitchTip.emailSmtpPassword}
|
|
||||||
isPasswordField
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
<Setting
|
<Setting
|
||||||
bind:setting={service.glitchTip.emailSmtpUseTls}
|
bind:setting={service.glitchTip.emailSmtpUseTls}
|
||||||
on:click={toggleEmailSmtpUseTls}
|
{loading}
|
||||||
title={'SMTP Use TLS'}
|
disabled={$status.service.isRunning}
|
||||||
|
on:click={() => changeSettings('emailSmtpUseTls')}
|
||||||
|
title="Use TLS for SMTP"
|
||||||
description={''}
|
description={''}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -96,32 +87,84 @@
|
|||||||
<div class="grid grid-cols-2 items-center px-10">
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
<Setting
|
<Setting
|
||||||
bind:setting={service.glitchTip.emailSmtpUseSsl}
|
bind:setting={service.glitchTip.emailSmtpUseSsl}
|
||||||
on:click={toggleEmailSmtpUseSsl}
|
{loading}
|
||||||
title={'SMTP Use SSL'}
|
disabled={$status.service.isRunning}
|
||||||
|
on:click={() => changeSettings('emailSmtpUseSsl')}
|
||||||
|
title="Use SSL for SMTP"
|
||||||
description={''}
|
description={''}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
<label for="emailBackend" class="text-base font-bold text-stone-100">Email Backend</label>
|
<label for="defaultEmailFrom">Default Email From</label>
|
||||||
<CopyPasswordField name="emailBackend" id="emailBackend" value={service.glitchTip.emailBackend} />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
|
||||||
<label for="mailgunApiKey" class="text-base font-bold text-stone-100">Mailgun API Key</label>
|
|
||||||
<CopyPasswordField
|
<CopyPasswordField
|
||||||
name="mailgunApiKey"
|
required
|
||||||
id="mailgunApiKey"
|
name="defaultEmailFrom"
|
||||||
value={service.glitchTip.mailgunApiKey}
|
id="defaultEmailFrom"
|
||||||
|
bind:value={service.glitchTip.defaultEmailFrom}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
<label for="sendgridApiKey" class="text-base font-bold text-stone-100">SendGrid API Key</label>
|
<label for="emailSmtpHost">SMTP Host</label>
|
||||||
|
<CopyPasswordField
|
||||||
|
name="emailSmtpHost"
|
||||||
|
id="emailSmtpHost"
|
||||||
|
bind:value={service.glitchTip.emailSmtpHost}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
|
<label for="emailSmtpPort">SMTP Port</label>
|
||||||
|
<CopyPasswordField
|
||||||
|
name="emailSmtpPort"
|
||||||
|
id="emailSmtpPort"
|
||||||
|
bind:value={service.glitchTip.emailSmtpPort}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
|
<label for="emailSmtpUser">SMTP User</label>
|
||||||
|
<CopyPasswordField
|
||||||
|
name="emailSmtpUser"
|
||||||
|
id="emailSmtpUser"
|
||||||
|
bind:value={service.glitchTip.emailSmtpUser}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
|
<label for="emailSmtpPassword">SMTP Password</label>
|
||||||
|
<CopyPasswordField
|
||||||
|
name="emailSmtpPassword"
|
||||||
|
id="emailSmtpPassword"
|
||||||
|
bind:value={service.glitchTip.emailSmtpPassword}
|
||||||
|
isPasswordField
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
|
<label for="emailBackend">Email Backend</label>
|
||||||
|
<CopyPasswordField
|
||||||
|
name="emailBackend"
|
||||||
|
id="emailBackend"
|
||||||
|
bind:value={service.glitchTip.emailBackend}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
|
<label for="mailgunApiKey">Mailgun API Key</label>
|
||||||
|
<CopyPasswordField
|
||||||
|
name="mailgunApiKey"
|
||||||
|
id="mailgunApiKey"
|
||||||
|
bind:value={service.glitchTip.mailgunApiKey}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
|
<label for="sendgridApiKey">SendGrid API Key</label>
|
||||||
<CopyPasswordField
|
<CopyPasswordField
|
||||||
name="sendgridApiKey"
|
name="sendgridApiKey"
|
||||||
id="sendgridApiKey"
|
id="sendgridApiKey"
|
||||||
value={service.glitchTip.sendgridApiKey}
|
bind:value={service.glitchTip.sendgridApiKey}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -130,35 +173,31 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
<label for="defaultEmail" class="text-base font-bold text-stone-100">{$t('forms.email')}</label>
|
<label for="defaultEmail">{$t('forms.email')}</label>
|
||||||
<CopyPasswordField
|
<CopyPasswordField
|
||||||
name="defaultEmail"
|
name="defaultEmail"
|
||||||
id="defaultEmail"
|
id="defaultEmail"
|
||||||
value={service.glitchTip.defaultEmail}
|
bind:value={service.glitchTip.defaultEmail}
|
||||||
readonly
|
readonly
|
||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
<label for="defaultUsername" class="text-base font-bold text-stone-100"
|
<label for="defaultUsername">{$t('forms.username')}</label>
|
||||||
>{$t('forms.username')}</label
|
|
||||||
>
|
|
||||||
<CopyPasswordField
|
<CopyPasswordField
|
||||||
name="defaultUsername"
|
name="defaultUsername"
|
||||||
id="defaultUsername"
|
id="defaultUsername"
|
||||||
value={service.glitchTip.defaultUsername}
|
bind:value={service.glitchTip.defaultUsername}
|
||||||
readonly
|
readonly
|
||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
<label for="defaultPassword" class="text-base font-bold text-stone-100"
|
<label for="defaultPassword">{$t('forms.password')}</label>
|
||||||
>{$t('forms.password')}</label
|
|
||||||
>
|
|
||||||
<CopyPasswordField
|
<CopyPasswordField
|
||||||
name="defaultPassword"
|
name="defaultPassword"
|
||||||
id="defaultPassword"
|
id="defaultPassword"
|
||||||
value={service.glitchTip.defaultPassword}
|
bind:value={service.glitchTip.defaultPassword}
|
||||||
readonly
|
readonly
|
||||||
disabled
|
disabled
|
||||||
isPasswordField
|
isPasswordField
|
||||||
@ -170,38 +209,32 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
<label for="postgresqlUser" class="text-base font-bold text-stone-100"
|
<label for="postgresqlUser">{$t('forms.username')}</label>
|
||||||
>{$t('forms.username')}</label
|
|
||||||
>
|
|
||||||
<CopyPasswordField
|
<CopyPasswordField
|
||||||
name="postgresqlUser"
|
name="postgresqlUser"
|
||||||
id="postgresqlUser"
|
id="postgresqlUser"
|
||||||
value={service.glitchTip.postgresqlUser}
|
bind:value={service.glitchTip.postgresqlUser}
|
||||||
readonly
|
readonly
|
||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
<label for="postgresqlPassword" class="text-base font-bold text-stone-100"
|
<label for="postgresqlPassword">{$t('forms.password')}</label>
|
||||||
>{$t('forms.password')}</label
|
|
||||||
>
|
|
||||||
<CopyPasswordField
|
<CopyPasswordField
|
||||||
id="postgresqlPassword"
|
id="postgresqlPassword"
|
||||||
isPasswordField
|
isPasswordField
|
||||||
readonly
|
readonly
|
||||||
disabled
|
disabled
|
||||||
name="postgresqlPassword"
|
name="postgresqlPassword"
|
||||||
value={service.glitchTip.postgresqlPassword}
|
bind:value={service.glitchTip.postgresqlPassword}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid grid-cols-2 items-center px-10">
|
<div class="grid grid-cols-2 items-center px-10">
|
||||||
<label for="postgresqlDatabase" class="text-base font-bold text-stone-100"
|
<label for="postgresqlDatabase">{$t('index.database')}</label>
|
||||||
>{$t('index.database')}</label
|
|
||||||
>
|
|
||||||
<CopyPasswordField
|
<CopyPasswordField
|
||||||
name="postgresqlDatabase"
|
name="postgresqlDatabase"
|
||||||
id="postgresqlDatabase"
|
id="postgresqlDatabase"
|
||||||
value={service.glitchTip.postgresqlDatabase}
|
bind:value={service.glitchTip.postgresqlDatabase}
|
||||||
readonly
|
readonly
|
||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
|
Loading…
Reference in New Issue
Block a user