fix(auth): guard passcode check against missing site_access_code_kv
When the site domain resolves to ghost (not found or missing access key), $ae_loc.site_access_code_kv is undefined, causing a TypeError on .super.length. Add early return if kv is absent and use optional chaining on each access level so the function gracefully returns "no match" on unregistered domains. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -176,12 +176,15 @@ function handle_check_access_type_passcode() {
|
||||
);
|
||||
}
|
||||
|
||||
const kv = $ae_loc?.site_access_code_kv;
|
||||
if (!kv) return false;
|
||||
|
||||
// Reminder: super > manager > administrator > trusted > public > authenticated > anonymous
|
||||
|
||||
if (entered_passcode && entered_passcode.length >= 5) {
|
||||
if (
|
||||
$ae_loc.site_access_code_kv.super.length >= 8 &&
|
||||
$ae_loc.site_access_code_kv.super == entered_passcode
|
||||
kv.super?.length >= 8 &&
|
||||
kv.super == entered_passcode
|
||||
) {
|
||||
console.log('Super passcode matched');
|
||||
|
||||
@@ -189,8 +192,8 @@ function handle_check_access_type_passcode() {
|
||||
|
||||
$ae_loc.access_type = 'super';
|
||||
} else if (
|
||||
$ae_loc.site_access_code_kv.manager.length >= 5 &&
|
||||
$ae_loc.site_access_code_kv.manager == entered_passcode
|
||||
kv.manager?.length >= 5 &&
|
||||
kv.manager == entered_passcode
|
||||
) {
|
||||
console.log('Manager passcode matched');
|
||||
|
||||
@@ -198,8 +201,8 @@ function handle_check_access_type_passcode() {
|
||||
|
||||
$ae_loc.access_type = 'manager';
|
||||
} else if (
|
||||
$ae_loc.site_access_code_kv.administrator.length >= 5 &&
|
||||
$ae_loc.site_access_code_kv.administrator == entered_passcode
|
||||
kv.administrator?.length >= 5 &&
|
||||
kv.administrator == entered_passcode
|
||||
) {
|
||||
console.log('Administrator passcode matched');
|
||||
|
||||
@@ -207,8 +210,8 @@ function handle_check_access_type_passcode() {
|
||||
|
||||
$ae_loc.access_type = 'administrator';
|
||||
} else if (
|
||||
$ae_loc.site_access_code_kv.trusted.length >= 5 &&
|
||||
$ae_loc.site_access_code_kv.trusted == entered_passcode
|
||||
kv.trusted?.length >= 5 &&
|
||||
kv.trusted == entered_passcode
|
||||
) {
|
||||
console.log('Trusted passcode matched');
|
||||
|
||||
@@ -216,8 +219,8 @@ function handle_check_access_type_passcode() {
|
||||
|
||||
$ae_loc.access_type = 'trusted';
|
||||
} else if (
|
||||
$ae_loc.site_access_code_kv.public.length >= 5 &&
|
||||
$ae_loc.site_access_code_kv.public == entered_passcode
|
||||
kv.public?.length >= 5 &&
|
||||
kv.public == entered_passcode
|
||||
) {
|
||||
console.log('Public passcode matched');
|
||||
|
||||
@@ -225,7 +228,7 @@ function handle_check_access_type_passcode() {
|
||||
|
||||
$ae_loc.access_type = 'public';
|
||||
} else if (
|
||||
$ae_loc.site_access_code_kv.authenticated == entered_passcode
|
||||
kv.authenticated == entered_passcode
|
||||
) {
|
||||
console.log('Authenticated passcode matched');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user