🛡️ Sentinel: [HIGH] Fix timingSafeEqual DoS Vulnerability (#423)
* Fix timingSafeEqual DoS Vulnerability in Webhook Co-authored-by: ralksta <16941050+ralksta@users.noreply.github.com> * Fix memory exhaustion DoS in token decoding Co-authored-by: ralksta <16941050+ralksta@users.noreply.github.com> --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
This commit is contained in:
@@ -1510,6 +1510,10 @@
|
||||
|
||||
.asset-picker-tab {
|
||||
flex: 1;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 0.45rem;
|
||||
padding: 0.7rem 1rem;
|
||||
background: none;
|
||||
border: none;
|
||||
@@ -1607,8 +1611,11 @@
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
left: 4px;
|
||||
font-size: 0.7rem;
|
||||
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
|
||||
display: flex;
|
||||
font-size: 0.85rem;
|
||||
color: var(--admin-accent);
|
||||
/* drop-shadow, not text-shadow: the badge is an inline SVG, not a glyph. */
|
||||
filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.6));
|
||||
}
|
||||
|
||||
.asset-picker-uuid-section {
|
||||
@@ -1782,8 +1789,10 @@
|
||||
color 0.15s ease;
|
||||
}
|
||||
|
||||
/* Drag handles use IconGripVertical's square 24x24 viewBox, so keep the box
|
||||
square too — a 12x18 box would letterbox the glyph down to 12x12. */
|
||||
.svg-drag {
|
||||
width: 12px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
@@ -1924,6 +1933,17 @@ h3 .svg-icon {
|
||||
background: rgba(74, 222, 128, 0.05);
|
||||
}
|
||||
|
||||
/* Carries a mode name ("filename", "oldest"), so it cannot use the fixed
|
||||
icon-sized box the other badges share. */
|
||||
.album-tile-badges .badge-sort {
|
||||
width: auto;
|
||||
min-width: 18px;
|
||||
padding: 0 5px;
|
||||
font-size: 0.62rem;
|
||||
letter-spacing: 0.03em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
/* ── Breitwand-Kiste Centered Modal styling ── */
|
||||
.album-drawer-overlay {
|
||||
position: fixed;
|
||||
@@ -3821,3 +3841,140 @@ h3 .svg-icon {
|
||||
background: var(--admin-btn-primary-bg, #ffffff);
|
||||
color: var(--admin-btn-primary-text, #000000);
|
||||
}
|
||||
|
||||
/* ── Per-album photo order (sort: manual) ────────────────────── */
|
||||
|
||||
.admin-field-hint {
|
||||
display: block;
|
||||
margin-top: 0.35rem;
|
||||
font-size: 0.75rem;
|
||||
line-height: 1.4;
|
||||
color: var(--admin-text-muted);
|
||||
}
|
||||
|
||||
.order-editor-body {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow-y: auto;
|
||||
padding: 0.75rem;
|
||||
}
|
||||
|
||||
.order-editor-notice {
|
||||
margin: 0 0 0.75rem;
|
||||
padding: 0.5rem 0.7rem;
|
||||
border-radius: 6px;
|
||||
font-size: 0.78rem;
|
||||
line-height: 1.4;
|
||||
color: var(--admin-accent);
|
||||
border: 1px solid rgba(245, 158, 11, 0.3);
|
||||
background: rgba(245, 158, 11, 0.05);
|
||||
}
|
||||
|
||||
.order-editor-section + .order-editor-section {
|
||||
margin-top: 1.25rem;
|
||||
padding-top: 1rem;
|
||||
border-top: 1px solid var(--admin-border);
|
||||
}
|
||||
|
||||
.order-editor-section-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 0.75rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.order-editor-section-head h4 {
|
||||
margin: 0;
|
||||
font-size: 0.85rem;
|
||||
font-weight: 600;
|
||||
color: var(--admin-text);
|
||||
}
|
||||
|
||||
.order-editor-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(104px, 1fr));
|
||||
gap: 0.5rem;
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.order-tile {
|
||||
position: relative;
|
||||
aspect-ratio: 1;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
background: var(--admin-bg-elevated);
|
||||
border: 2px solid transparent;
|
||||
cursor: pointer;
|
||||
transition:
|
||||
border-color 0.15s,
|
||||
opacity 0.15s;
|
||||
}
|
||||
|
||||
.order-tile img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
/* The whole tile is a drag handle; without this the browser's native image
|
||||
drag wins and dnd-kit never sees the gesture. */
|
||||
-webkit-user-drag: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.order-tile-pinned {
|
||||
border-color: var(--admin-accent);
|
||||
cursor: grab;
|
||||
}
|
||||
|
||||
.order-tile-pinned:active {
|
||||
cursor: grabbing;
|
||||
}
|
||||
|
||||
.order-tile-unpinned {
|
||||
opacity: 0.55;
|
||||
}
|
||||
|
||||
.order-tile-unpinned:hover {
|
||||
opacity: 1;
|
||||
border-color: var(--admin-border);
|
||||
}
|
||||
|
||||
.order-tile-index {
|
||||
position: absolute;
|
||||
bottom: 4px;
|
||||
left: 4px;
|
||||
min-width: 18px;
|
||||
padding: 0 4px;
|
||||
border-radius: 4px;
|
||||
font-size: 0.68rem;
|
||||
font-weight: 700;
|
||||
text-align: center;
|
||||
color: #000;
|
||||
background: var(--admin-accent);
|
||||
}
|
||||
|
||||
.order-tile-action {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 4px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: none;
|
||||
border-radius: 50%;
|
||||
font-size: 0.85rem;
|
||||
line-height: 1;
|
||||
cursor: pointer;
|
||||
color: var(--admin-text);
|
||||
background: var(--admin-overlay, rgba(0, 0, 0, 0.6));
|
||||
}
|
||||
|
||||
.order-editor-footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 0.5rem;
|
||||
padding: 0.75rem;
|
||||
border-top: 1px solid var(--admin-border);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user