ruslan
a10f2c240a
Force white color on consent label span
2026-05-28 09:49:37 +00:00
ruslan
823b28983c
Set consent label text color to white
2026-05-28 09:48:08 +00:00
ruslan
984f8c324f
Improve consent checkbox text visibility
2026-05-28 09:47:14 +00:00
ruslan
e88e33e7e8
Add privacy policy page and consent checkbox to both modals (152-FZ compliance)
2026-05-28 09:44:17 +00:00
ruslan
8ab7df12a1
Replace logo.png with new version, rename МОНТ→MONT everywhere
2026-05-27 17:39:16 +00:00
ruslan
dd7288beaf
Add SVG favicon 120x120 with MONT branding, add SVG link to all templates
2026-05-18 07:19:50 +00:00
ruslan
5c06440e4d
Add Yandex Webmaster verification file
2026-05-15 13:02:42 +00:00
ruslan
3d531238d7
SEO: meta tags, OG, JSON-LD, robots.txt, sitemap, keywords in content
2026-05-15 12:50:55 +00:00
ruslan
4b2618191d
Add Telegram config vars to config.py
2026-05-14 08:19:56 +00:00
ruslan
a4b69b0018
Fix real IP: trust upstream forwardedHeaders in Traefik, use X-Forwarded-For[0]
2026-05-14 07:41:51 +00:00
ruslan
73c7d006c7
Fix _get_real_ip: use X-Real-IP from NPM instead of X-Forwarded-For
2026-05-14 07:33:49 +00:00
ruslan
1aa9db8e2a
Add real IP + geo location to Telegram notifications
2026-05-14 07:27:23 +00:00
ruslan
4b5b9906a8
Remove access modal subtitle
2026-05-14 07:00:42 +00:00
ruslan
d65b7a0d35
Fix submit forms: use getElementById instead of stale closures, fix texts
2026-05-14 06:52:20 +00:00
ruslan
a60279ae3e
Fix JS syntax errors in modal success buttons (broken single quotes)
2026-05-14 06:45:16 +00:00
ruslan
b36b3f6325
Add contact modal, success messages, form reset on open
2026-05-14 06:42:09 +00:00
ruslan
ba8f3cf753
Validate all modal fields at once with per-field highlighting
2026-05-14 06:34:29 +00:00
ruslan
eb05bcac53
Add email and phone validation to request-access modal
2026-05-14 06:29:37 +00:00
ruslan
beb2781123
Fix request-access: add Telegram env to compose, fix log_event calls
2026-05-14 06:28:58 +00:00
ruslan
a0b1754ddb
Rename modal title to Запрос на доступ
2026-05-14 06:25:04 +00:00
ruslan
ce39573618
Fix login-request-btn width after a→button change
2026-05-14 06:24:11 +00:00
ruslan
f740420a77
Add request access modal on login page with Telegram notification
...
- Modal form: name, company, email, phone (required), manager (optional), product checkboxes
- Products loaded from DB via GET /api/public/services-by-category (public route)
- POST /api/request-access sends styled Telegram message with divider and emojis
- Dark-themed modal matching login page design
- CSS: overlay, card, fields, checkbox list, error, footer buttons
2026-05-14 06:22:39 +00:00
ruslan
3e640fbe15
revert: restore CSS to working state before logo column experiments
2026-05-12 13:29:08 +00:00
ruslan
eda342cf43
fix: logo in own grid column, content never overlaps
2026-05-12 13:27:09 +00:00
ruslan
e8d1515f89
fix: reserve space for fixed page-logo, prevent content overlap
2026-05-12 13:24:05 +00:00
ruslan
4f52ae8566
style: add gap between avatar and username in header
2026-05-12 13:20:47 +00:00
ruslan
30ce37b906
fix: remove first_name/last_name from all models except User
2026-05-12 13:01:29 +00:00
ruslan
4268b19a37
fix: remove first_name/last_name from Service model (was added by mistake)
2026-05-12 12:59:38 +00:00
ruslan
6aa40eb5c2
feat: add first_name/last_name to users, avatar in header, neutral dashboard bg
2026-05-12 12:51:47 +00:00
ruslan
dedf4aea77
dashboard: replace informal welcome text with product name
2026-05-12 12:44:44 +00:00
ruslan
fff7ecdce2
login: left panel 1/4, distrib button, text tweaks, dashboard light theme polish
2026-05-12 12:42:12 +00:00
ruslan
666093f1c6
login: logo only in top-left corner, left panel 1/3 right panel 2/3
2026-05-11 08:54:25 +00:00
ruslan
020793a3e2
redesign: stylish two-column login page (dark navy split layout)
2026-05-11 08:50:02 +00:00
ruslan
55da535f44
feat: project description block on login page
2026-05-11 08:43:50 +00:00
ruslan
d7716fa569
design: stylish request-access button on login page
2026-05-08 13:05:02 +00:00
ruslan
116ffba42d
feat: add Yandex Metrika counter (id=109119977) to all pages
2026-05-08 13:03:46 +00:00
ruslan
b9f1e375d3
feat: request access button on login page (mailto rgalyaviev)
2026-05-08 12:59:15 +00:00
ruslan
1dc5a0eb34
fix: replace favicon with correct local file
2026-05-07 07:26:15 +00:00
ruslan
983065ac9f
fix: use favicon.png instead of svg
2026-05-07 07:23:56 +00:00
ruslan
7e94ddaf8d
fix: rdp target field readonly, host/port/domain/sec oninput rebuilds target
2026-05-06 11:43:26 +00:00
ruslan
a137729704
design: username left in header, white elegant font
2026-05-04 13:35:32 +00:00
ruslan
bbe1e27582
design: logo fixed left below header
2026-05-04 13:33:55 +00:00
ruslan
16c06ac166
design: move logo below header strip, scrolls with page
2026-05-04 13:32:43 +00:00
ruslan
535d71709e
fix: dark header background, original logo color
2026-05-04 13:08:24 +00:00
ruslan
045b21c514
design: dark minimal header
2026-05-04 13:06:29 +00:00
ruslan
bff5ffac1c
perf: compress logo and favicon (1.7MB -> 7KB / 610B)
2026-05-04 06:32:16 +00:00
ruslan
3d8ccd30b6
fix: add hash_password to auth imports in main.py
2026-05-01 16:47:48 +00:00
ruslan
dc90569631
fix: call connect_rdp_slot on session reuse
...
Previously connect_rdp_slot was only called when creating a new session.
If the API container restarted, existing sessions had should_be_connected=false
and xfreerdp never started. Now connect is triggered on every /go/<slug> visit
when an RDP session already exists.
2026-05-01 16:11:30 +00:00
ruslan
38dc206f5a
fix: add missing user_is_valid import from auth in main.py
2026-05-01 12:56:19 +00:00
ruslan
fb4af8cfe6
fix: add missing import secrets in main.py
2026-05-01 12:55:02 +00:00