Авторизация: форма входа, cookie-сессия, защита /api/* (кроме health/login/me/logout)

This commit is contained in:
2026-08-26 00:38:23 +07:00
parent 5dcc4ce1ad
commit d9eccfb4b7
7 changed files with 482 additions and 17 deletions

View File

@@ -988,3 +988,123 @@ textarea:disabled {
font-size: 13px;
color: var(--muted);
}
/* -- Авторизация -------------------------------------------------- */
.topbar-right {
display: flex;
align-items: center;
gap: 12px;
}
.logout-button {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 9px 13px;
border: 1px solid var(--dark);
border-radius: 999px;
color: var(--dark);
background: transparent;
font-size: 12px;
font-weight: 740;
text-decoration: none;
cursor: pointer;
transition:
transform 150ms ease,
background 150ms ease,
color 150ms ease;
}
.logout-button:hover {
background: var(--dark);
color: white;
transform: translateY(-1px);
}
.logout-button:focus-visible {
outline: 3px solid rgba(108, 92, 231, 0.28);
outline-offset: 2px;
}
.auth-overlay {
position: fixed;
inset: 0;
z-index: 1000;
display: grid;
place-items: center;
padding: 16px;
background: rgba(243, 240, 232, 0.82);
backdrop-filter: blur(10px);
}
.auth-card {
width: min(400px, 100%);
padding: 34px 32px;
border: 1px solid rgba(23, 24, 23, 0.08);
border-radius: var(--radius-large);
background: var(--panel);
box-shadow: var(--shadow);
display: grid;
gap: 16px;
}
.auth-eyebrow {
margin: 0;
color: var(--accent-dark);
font-size: 11px;
font-weight: 800;
letter-spacing: 0.15em;
text-transform: uppercase;
}
.auth-card h1 {
margin: 0;
font-size: clamp(26px, 4vw, 34px);
letter-spacing: -0.045em;
}
.auth-lead {
margin: 0;
color: var(--muted);
font-size: 13.5px;
line-height: 1.55;
}
.auth-field {
display: grid;
gap: 8px;
}
.auth-field input {
width: 100%;
padding: 14px 16px;
border: 1px solid var(--line);
border-radius: var(--radius-medium);
background: var(--paper);
color: var(--ink);
outline: none;
transition:
border-color 160ms ease,
box-shadow 160ms ease;
}
.auth-field input:focus {
border-color: var(--accent);
box-shadow: 0 0 0 4px rgba(108, 92, 231, 0.1);
}
.auth-error {
margin: 0;
padding: 10px 12px;
border-radius: var(--radius-small);
color: var(--danger);
background: rgba(184, 67, 67, 0.07);
font-size: 13px;
}
.auth-submit {
width: 100%;
justify-content: center;
min-height: 52px;
}