fix(pres_mgmt): decouple email access link buttons from require_agree flags

Presenter email button: removed dependency on require__presenter_agree,
fixed auth gate that blocked trusted staff (presenter_is_authed includes
trusted_access, so !presenter_is_authed always hid the button from staff).
New condition: show when email feature is on AND person has email AND
(staff OR presenter not yet authed).

Session POC email button: removed dependency on require__session_agree.
Staff need to send sign-in links regardless of whether an agreement form
is in use. Added confirm dialog and descriptive title attribute. Updated
copy-link btn_title for consistency.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-06-15 14:43:41 -04:00
parent 04ae723309
commit 6ab4166da0
2 changed files with 13 additions and 8 deletions

View File

@@ -262,7 +262,7 @@ let presenter_is_authed = $derived(
></MyClipboard> ></MyClipboard>
{/if} {/if}
{#if pres_mgmt_loc.current.require__presenter_agree && pres_mgmt_loc.current.show__email_access_link && $lq__event_presenter_obj?.person_primary_email && ($ae_loc.public_access || !events_auth_loc.current.auth__person?.id)} {#if pres_mgmt_loc.current.show__email_access_link && $lq__event_presenter_obj?.person_primary_email && ($ae_loc.trusted_access || !presenter_is_authed)}
<button <button
type="button" type="button"
onclick={() => { onclick={() => {

View File

@@ -196,6 +196,7 @@ $effect(() => {
async function send_poc_email_link() { async function send_poc_email_link() {
const sess = $lq__event_session_obj; const sess = $lq__event_session_obj;
if (!sess?.poc_person_primary_email || !sess?.poc_person_id || !sess?.poc_person_passcode) return; if (!sess?.poc_person_primary_email || !sess?.poc_person_id || !sess?.poc_person_passcode) return;
if (!confirm(`Send sign-in link to ${sess.poc_person_full_name} (${sess.poc_person_primary_email})?`)) return;
poc_email_status = 'sending'; poc_email_status = 'sending';
try { try {
await events_func.email_sign_in__event_session({ await events_func.email_sign_in__event_session({
@@ -463,26 +464,30 @@ async function send_poc_email_link() {
<MyClipboard <MyClipboard
value={poc_sign_in_url} value={poc_sign_in_url}
btn_class="btn btn-sm preset-tonal-surface text-xs" btn_class="btn btn-sm preset-tonal-surface text-xs"
btn_title="Copy the {pres_mgmt_loc.current.label__session_poc_name} sign-in link to the clipboard"
hide_icon={false} hide_icon={false}
hide_text={false}> hide_text={false}>
<Link size="1em" class="mr-1" /> <Link size="1em" class="" />
Copy Link Copy Link
</MyClipboard> </MyClipboard>
{/if} {/if}
<!-- Email POC sign-in link — shown when session agreement is required, <!-- Email POC sign-in link — shown when email feature is enabled and
email feature is enabled, and the POC has an email on file. --> the POC has an email on file. Decoupled from require__session_agree:
{#if pres_mgmt_loc.current.require__session_agree && pres_mgmt_loc.current.show__email_access_link && $lq__event_session_obj?.poc_person_primary_email} staff need to send sign-in links whether or not an agreement form is
required. -->
{#if pres_mgmt_loc.current.show__email_access_link && $lq__event_session_obj?.poc_person_primary_email}
<button <button
type="button" type="button"
disabled={poc_email_status === 'sending'} disabled={poc_email_status === 'sending'}
onclick={send_poc_email_link} onclick={send_poc_email_link}
class="btn btn-sm transition-colors duration-200" title="Email the sign-in link to {pres_mgmt_loc.current.label__session_poc_name}: {$lq__event_session_obj?.poc_person_full_name} ({$lq__event_session_obj?.poc_person_primary_email})"
class:preset-tonal-surface={poc_email_status === 'idle'} class="btn btn-sm preset-outlined-secondary-300-700 transition-all duration-200"
class:preset-tonal-secondary={poc_email_status === 'idle'}
class:preset-tonal-warning={poc_email_status === 'sending'} class:preset-tonal-warning={poc_email_status === 'sending'}
class:preset-tonal-success={poc_email_status === 'sent'} class:preset-tonal-success={poc_email_status === 'sent'}
class:preset-tonal-error={poc_email_status === 'error'}> class:preset-tonal-error={poc_email_status === 'error'}>
<Mail size="1em" class="mr-1" /> <Mail size="1em" class="" />
{#if poc_email_status === 'sending'} {#if poc_email_status === 'sending'}
Sending… Sending…
{:else if poc_email_status === 'sent'} {:else if poc_email_status === 'sent'}