- Email verification (regular, business owner), CLI administration

This commit is contained in:
Ty Clifford
2026-06-18 14:50:48 -04:00
parent 66f93757b6
commit cfd1fba5ab
9 changed files with 778 additions and 28 deletions
+90
View File
@@ -13,6 +13,19 @@ if (isPost()) {
setSetting('registration_enabled',p('registration_enabled','0'));
setSetting('events_require_approval',p('events_require_approval','0'));
setSetting('home_random_interval',p('home_random_interval','2hours') === 'day' ? 'day' : '2hours');
if (array_key_exists('mailgun_domain', $_POST)) {
setSetting('site_base_url', rtrim(ps('site_base_url'), '/'));
setSetting('mailgun_region', p('mailgun_region','us') === 'eu' ? 'eu' : 'us');
setSetting('mailgun_domain', ps('mailgun_domain'));
setSetting('mailgun_from_name', ps('mailgun_from_name') ?: 'Discover Keyser WV');
setSetting('mailgun_from_email', ps('mailgun_from_email'));
setSetting('mailgun_send_mode', p('mailgun_send_mode','html') === 'text' ? 'text' : 'html');
if (p('clear_mailgun_api_key','0') === '1') {
setSetting('mailgun_api_key', '');
} elseif (ps('mailgun_api_key') !== '') {
setSetting('mailgun_api_key', ps('mailgun_api_key'));
}
}
flash('Settings saved!','success');
go('/admin/settings.php');
}
@@ -35,6 +48,13 @@ $siteName = setting('site_name','Discover Keyser WV');
$siteTagline = setting('site_tagline','The Friendliest City in the U.S.A.');
$contactEmail = setting('contact_email','info@discoverkeyser.com');
$homeRandomInterval = setting('home_random_interval','2hours');
$siteBaseUrl = setting('site_base_url','');
$mailgunRegion = setting('mailgun_region','us');
$mailgunDomain = setting('mailgun_domain','');
$mailgunFromName = setting('mailgun_from_name','Discover Keyser WV');
$mailgunFromEmail = setting('mailgun_from_email','');
$mailgunSendMode = setting('mailgun_send_mode','html');
$mailgunHasKey = setting('mailgun_api_key','') !== '';
$me = qone("SELECT * FROM users WHERE id=?",[uid()]);
?>
<?php adminTitle('Site Settings') ?>
@@ -98,6 +118,76 @@ $me = qone("SELECT * FROM users WHERE id=?",[uid()]);
<button type="submit" class="btn btn-primary">Save Settings</button>
</form>
</div>
<div class="ibox" style="border-color:var(--gold-d)">
<div class="ibox-title">✉️ EMAIL VERIFICATION &amp; MAILGUN</div>
<form method="POST"><?=csrfField()?><input type="hidden" name="_act" value="settings">
<input type="hidden" name="site_name" value="<?=e($siteName)?>">
<input type="hidden" name="site_tagline" value="<?=e($siteTagline)?>">
<input type="hidden" name="contact_email" value="<?=e($contactEmail)?>">
<input type="hidden" name="registration_enabled" value="<?=e($regEnabled)?>">
<input type="hidden" name="events_require_approval" value="<?=e($evtApproval)?>">
<input type="hidden" name="home_random_interval" value="<?=e($homeRandomInterval)?>">
<div class="fg">
<label class="flabel">SITE BASE URL</label>
<input type="url" name="site_base_url" class="finput" value="<?=e($siteBaseUrl)?>" placeholder="https://discoverkeyser.com">
<div class="fhint">Used to build verification links. Leave blank to detect the current host.</div>
</div>
<div class="form-row">
<div class="fg">
<label class="flabel">MAILGUN REGION</label>
<select name="mailgun_region" class="fselect">
<option value="us"<?=$mailgunRegion==='us'?' selected':''?>>US API (api.mailgun.net)</option>
<option value="eu"<?=$mailgunRegion==='eu'?' selected':''?>>EU API (api.eu.mailgun.net)</option>
</select>
</div>
<div class="fg">
<label class="flabel">MAILGUN DOMAIN</label>
<input type="text" name="mailgun_domain" class="finput" value="<?=e($mailgunDomain)?>" placeholder="mg.example.com">
</div>
</div>
<div class="form-row">
<div class="fg">
<label class="flabel">FROM NAME</label>
<input type="text" name="mailgun_from_name" class="finput" value="<?=e($mailgunFromName)?>" placeholder="Discover Keyser WV">
</div>
<div class="fg">
<label class="flabel">FROM EMAIL</label>
<input type="email" name="mailgun_from_email" class="finput" value="<?=e($mailgunFromEmail)?>" placeholder="hello@mg.example.com">
</div>
</div>
<div class="fg">
<label class="flabel">MAILGUN API KEY</label>
<input type="password" name="mailgun_api_key" class="finput" value="" placeholder="<?=$mailgunHasKey?'Key saved - leave blank to keep it':'Enter Mailgun API key'?>">
<div class="fhint"><?=$mailgunHasKey?'An API key is saved. Enter a new key to replace it.':'No API key is saved yet.'?></div>
<?php if($mailgunHasKey): ?>
<label style="display:flex;align-items:center;gap:.45rem;margin-top:.55rem;font-size:.85rem;color:var(--text-m);cursor:pointer">
<input type="checkbox" name="clear_mailgun_api_key" value="1"> Clear saved API key
</label>
<?php endif; ?>
</div>
<div class="fg">
<label class="flabel">EMAIL SEND FORMAT</label>
<div style="margin-top:.4rem">
<label style="display:flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.9rem;margin-bottom:.35rem">
<input type="radio" name="mailgun_send_mode" value="html"<?=$mailgunSendMode==='html'?' checked':''?>>
<span>Designed HTML email with text fallback</span>
</label>
<label style="display:flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.9rem">
<input type="radio" name="mailgun_send_mode" value="text"<?=$mailgunSendMode==='text'?' checked':''?>>
<span>Simple text-only email</span>
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Save Email Settings</button>
</form>
</div>
</div>
<!-- Admin password change -->