mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-07-03 11:04:20 +00:00
4813a2fe00
Store API tokens as SHA-256 hashes instead of plaintext and return the token value only in the create response. List no longer exposes the token, and the UI drops the Show/Copy buttons in favor of a one-time reveal modal at creation. Match hashes the presented bearer token before the constant-time compare, and a migration hashes any pre-existing plaintext rows in place so existing tokens keep authenticating. Docs and translations updated.
96 lines
1.5 KiB
CSS
96 lines
1.5 KiB
CSS
.api-token-section {
|
|
padding: 8px 20px 16px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
}
|
|
|
|
.api-token-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.api-token-hint {
|
|
margin: 0;
|
|
font-size: 12.5px;
|
|
opacity: 0.7;
|
|
flex: 1;
|
|
min-width: 200px;
|
|
}
|
|
|
|
.api-token-row {
|
|
border: 1px solid var(--ant-color-border-secondary);
|
|
border-radius: 8px;
|
|
padding: 10px 12px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
transition: opacity 0.15s;
|
|
}
|
|
|
|
.api-token-row.disabled {
|
|
opacity: 0.55;
|
|
}
|
|
|
|
.api-token-row-head {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.api-token-name-wrap {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2px;
|
|
}
|
|
|
|
.api-token-name {
|
|
font-weight: 600;
|
|
font-size: 13.5px;
|
|
}
|
|
|
|
.api-token-created {
|
|
font-size: 11px;
|
|
opacity: 0.55;
|
|
}
|
|
|
|
.api-token-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.api-token-value-wrap {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.api-token-value {
|
|
flex: 1;
|
|
min-width: 0;
|
|
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
font-size: 12.5px;
|
|
padding: 4px 8px;
|
|
background: var(--ant-color-fill-tertiary);
|
|
border-radius: 4px;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.api-token-created-notice {
|
|
margin: 0 0 12px;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.security-actions {
|
|
padding: 12px 0;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|