fix(TALE-29): remove all old ACL_FILE handling
No longer required if the minimum is beta2
This commit is contained in:
parent
d041a62fcd
commit
9801ef453d
@ -12,7 +12,7 @@ import Notice from '~/components/Notice'
|
|||||||
import Spinner from '~/components/Spinner'
|
import Spinner from '~/components/Spinner'
|
||||||
import { toast } from '~/components/Toaster'
|
import { toast } from '~/components/Toaster'
|
||||||
import { cn } from '~/utils/cn'
|
import { cn } from '~/utils/cn'
|
||||||
import { loadAcl, loadContext, patchAcl } from '~/utils/config/headplane'
|
import { loadContext } from '~/utils/config/headplane'
|
||||||
import { HeadscaleError, pull, put } from '~/utils/headscale'
|
import { HeadscaleError, pull, put } from '~/utils/headscale'
|
||||||
import { getSession } from '~/utils/sessions'
|
import { getSession } from '~/utils/sessions'
|
||||||
|
|
||||||
@ -27,7 +27,6 @@ export async function loader({ request }: LoaderFunctionArgs) {
|
|||||||
session.get('hsApiKey')!,
|
session.get('hsApiKey')!,
|
||||||
)
|
)
|
||||||
|
|
||||||
console.log(policy)
|
|
||||||
try {
|
try {
|
||||||
// We have read access, now do we have write access?
|
// We have read access, now do we have write access?
|
||||||
// Attempt to set the policy to what we just got
|
// Attempt to set the policy to what we just got
|
||||||
@ -37,7 +36,6 @@ export async function loader({ request }: LoaderFunctionArgs) {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
hasAclWrite: true,
|
hasAclWrite: true,
|
||||||
isPolicyApi: true,
|
|
||||||
currentAcl: policy,
|
currentAcl: policy,
|
||||||
aclType: 'json',
|
aclType: 'json',
|
||||||
} as const
|
} as const
|
||||||
@ -49,35 +47,15 @@ export async function loader({ request }: LoaderFunctionArgs) {
|
|||||||
if (error.status === 500) {
|
if (error.status === 500) {
|
||||||
return {
|
return {
|
||||||
hasAclWrite: false,
|
hasAclWrite: false,
|
||||||
isPolicyApi: true,
|
|
||||||
currentAcl: policy,
|
currentAcl: policy,
|
||||||
aclType: 'json',
|
aclType: 'json',
|
||||||
} as const
|
} as const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch {}
|
||||||
// Propagate our errors through normal error handling
|
|
||||||
if (!(error instanceof HeadscaleError)) {
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
|
|
||||||
// Not on 0.23-beta1 or later
|
|
||||||
if (error.status === 404) {
|
|
||||||
const { data, type, read, write } = await loadAcl()
|
|
||||||
return {
|
|
||||||
hasAclWrite: write,
|
|
||||||
isPolicyApi: false,
|
|
||||||
currentAcl: read ? data : '',
|
|
||||||
aclType: type,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
hasAclWrite: true,
|
hasAclWrite: true,
|
||||||
isPolicyApi: true,
|
|
||||||
currentAcl: '',
|
currentAcl: '',
|
||||||
aclType: 'json',
|
aclType: 'json',
|
||||||
} as const
|
} as const
|
||||||
@ -91,30 +69,19 @@ export async function action({ request }: ActionFunctionArgs) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await request.json() as { acl: string, api: boolean }
|
const { acl } = await request.json() as { acl: string, api: boolean }
|
||||||
if (data.api) {
|
try {
|
||||||
try {
|
await put('v1/policy', session.get('hsApiKey')!, {
|
||||||
await put('v1/policy', session.get('hsApiKey')!, {
|
policy: acl,
|
||||||
policy: data.acl,
|
})
|
||||||
})
|
|
||||||
|
|
||||||
return json({ success: true })
|
return json({ success: true })
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return json({ success: false }, {
|
|
||||||
status: error instanceof HeadscaleError ? error.status : 500,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const context = await loadContext()
|
|
||||||
if (!context.acl.write) {
|
|
||||||
return json({ success: false }, {
|
return json({ success: false }, {
|
||||||
status: 403,
|
status: error instanceof HeadscaleError ? error.status : 500,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
await patchAcl(data.acl)
|
|
||||||
|
|
||||||
if (context.integration?.onAclChange) {
|
if (context.integration?.onAclChange) {
|
||||||
await context.integration.onAclChange(context.integration.context)
|
await context.integration.onAclChange(context.integration.context)
|
||||||
}
|
}
|
||||||
@ -225,25 +192,13 @@ export default function Page() {
|
|||||||
? undefined
|
? undefined
|
||||||
: (
|
: (
|
||||||
<div className="mb-4">
|
<div className="mb-4">
|
||||||
{data.isPolicyApi
|
<Notice className="w-fit">
|
||||||
? (
|
The ACL policy is read-only. You can view the current policy
|
||||||
<Notice className="w-fit">
|
but you cannot make changes to it.
|
||||||
The ACL policy is read-only. You can view the current policy
|
<br />
|
||||||
but you cannot make changes to it.
|
To resolve this, you need to set the ACL policy mode to
|
||||||
<br />
|
database in your Headscale configuration.
|
||||||
To resolve this, you need to set the ACL policy mode to
|
</Notice>
|
||||||
database in your Headscale configuration.
|
|
||||||
</Notice>
|
|
||||||
)
|
|
||||||
: (
|
|
||||||
<Notice className="w-fit">
|
|
||||||
The ACL policy is read-only. You can view the current policy
|
|
||||||
but you cannot make changes to it.
|
|
||||||
<br />
|
|
||||||
To resolve this, you need to configure a Headplane integration
|
|
||||||
or make the ACL_FILE environment variable available.
|
|
||||||
</Notice>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
@ -357,7 +312,6 @@ export default function Page() {
|
|||||||
setToasted(false)
|
setToasted(false)
|
||||||
fetcher.submit({
|
fetcher.submit({
|
||||||
acl,
|
acl,
|
||||||
api: data.isPolicyApi,
|
|
||||||
}, {
|
}, {
|
||||||
method: 'PATCH',
|
method: 'PATCH',
|
||||||
encType: 'application/json',
|
encType: 'application/json',
|
||||||
|
|||||||
@ -45,7 +45,6 @@ const HeadscaleConfig = z.object({
|
|||||||
disable_check_updates: goBool.default(false),
|
disable_check_updates: goBool.default(false),
|
||||||
ephemeral_node_inactivity_timeout: goDuration.default('120s'),
|
ephemeral_node_inactivity_timeout: goDuration.default('120s'),
|
||||||
randomize_client_port: goBool.default(false),
|
randomize_client_port: goBool.default(false),
|
||||||
acl_policy_path: z.string().optional(),
|
|
||||||
|
|
||||||
acme_email: z.string().optional(),
|
acme_email: z.string().optional(),
|
||||||
acme_url: z.string().optional(),
|
acme_url: z.string().optional(),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user