diff --git a/backend/auth.py b/backend/auth.py index d923c70..942a3f1 100644 --- a/backend/auth.py +++ b/backend/auth.py @@ -87,7 +87,7 @@ def get_current_user( user_id = int(payload["sub"]) with db() as conn: row = conn.execute( - "SELECT id, email, name, rolle, is_premium, is_moderator, is_banned, ban_reason, is_social_media, notes_ki_enabled, breeder_status, is_founder, is_partner FROM users WHERE id=?", + "SELECT id, email, name, rolle, is_premium, is_moderator, is_banned, ban_reason, is_social_media, notes_ki_enabled, breeder_status, is_founder, is_partner, founder_number FROM users WHERE id=?", (user_id,) ).fetchone() diff --git a/backend/routes/admin.py b/backend/routes/admin.py index 8be436c..09a4127 100644 --- a/backend/routes/admin.py +++ b/backend/routes/admin.py @@ -296,6 +296,7 @@ async def list_users( rows = conn.execute(f""" SELECT u.id, u.name, {_email_col}, u.rolle, u.is_premium, u.is_moderator, u.is_banned, u.ban_reason, + u.is_founder, u.is_partner, u.founder_number, u.created_at, u.last_login, (SELECT COUNT(*) FROM dogs d WHERE d.user_id=u.id) AS dog_count, (SELECT COUNT(*) FROM forum_threads t WHERE t.user_id=u.id AND t.is_deleted=0) AS thread_count, diff --git a/backend/static/js/app.js b/backend/static/js/app.js index bfb29f3..a9732a2 100644 --- a/backend/static/js/app.js +++ b/backend/static/js/app.js @@ -3,7 +3,7 @@ Router, State-Management, Navigation, Initialisierung. ============================================================ */ -const APP_VER = '530'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen +const APP_VER = '531'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen const APP_VERSION = '1.1.1'; // ← semantische Version, wird bei make release gesetzt const IS_STAGING = location.hostname === 'staging.banyaro.app'; diff --git a/backend/static/js/pages/admin.js b/backend/static/js/pages/admin.js index 61ba198..69ed773 100644 --- a/backend/static/js/pages/admin.js +++ b/backend/static/js/pages/admin.js @@ -1969,18 +1969,27 @@ window.Page_admin = (() => { } grantResult.innerHTML = users.map(u => `
${u.name} - ${u.rolle} + + ${u.rolle}${u.is_founder ? ' · ⭐' : ''}${u.is_partner ? ' · 🤝' : ''} +
`).join(''); grantResult.querySelectorAll('.adm-grant-user').forEach(div => { div.addEventListener('click', () => { _grantUserId = parseInt(div.dataset.id); searchInput.value = div.dataset.name; - grantResult.innerHTML = `

✓ ${div.dataset.name} ausgewählt

`; + // Aktuellen Status in Checkboxen setzen + const form = el.querySelector('#adm-partner-grant'); + if (form) { + form.querySelector('[name="is_founder"]').checked = div.dataset.founder === '1'; + form.querySelector('[name="is_partner"]').checked = div.dataset.partner === '1'; + } + grantResult.innerHTML = `

✓ ${div.dataset.name} ausgewählt${div.dataset.founder==='1' ? ' · ⭐ Gründer' : ''}${div.dataset.partner==='1' ? ' · 🤝 Partner' : ''}

`; }); }); } catch(e) { diff --git a/backend/static/sw.js b/backend/static/sw.js index 97d2020..f9233a2 100644 --- a/backend/static/sw.js +++ b/backend/static/sw.js @@ -3,7 +3,7 @@ Offline-Cache + Push Notifications + Tile-Cache ============================================================ */ -const CACHE_VERSION = 'by-v553'; +const CACHE_VERSION = 'by-v554'; const CACHE_STATIC = `${CACHE_VERSION}-static`; const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache