new funcionality

This commit is contained in:
2026-07-27 17:20:02 +02:00
parent c2b5291a74
commit c5ce8a7a36
101 changed files with 6889 additions and 176 deletions

View File

@@ -6,8 +6,10 @@ const en: MessageSchema = {
clients: 'OAuth Clients',
tokens: 'Personal Access Tokens',
authorizedApps: 'Authorized Apps',
security: 'Security',
users: 'Users',
analytics: 'Analytics',
auditLog: 'Audit log',
apiDocs: 'API Docs',
logout: 'Sign out',
},
@@ -32,6 +34,34 @@ const en: MessageSchema = {
noAccount: "Don't have an account?",
signUp: 'Sign up',
invalidCredentials: 'Invalid credentials.',
twoFactorTitle: 'Two-factor verification',
twoFactorSubtitle: 'Enter the code from your authenticator app (or a recovery code).',
twoFactorCode: 'Code',
twoFactorSubmit: 'Verify',
invalidTwoFactorCode: 'Invalid code.',
backToLogin: 'Back to sign in',
forgotPassword: 'Forgot your password?',
},
forgotPassword: {
title: 'Reset password',
subtitle: "Enter your email and we'll send you a link to choose a new password.",
email: 'Email',
submit: 'Send link',
submitting: 'Sending…',
sent: "If an account exists with that email, we've sent a link to reset the password. Check your inbox.",
backToLogin: 'Back to sign in',
},
resetPassword: {
title: 'Choose a new password',
subtitle: "Almost done — confirm the new password for your account.",
password: 'New password',
passwordConfirm: 'Confirm password',
submit: 'Reset password',
submitting: 'Resetting…',
success: 'Your password has been reset. You can sign in with the new one now — we closed your active sessions for security.',
goToLogin: 'Go to sign in',
invalidLink: 'This link is invalid or has expired. Request a new one.',
missingParams: 'This link is missing information. Request a new one from "Forgot your password?".',
},
register: {
title: 'Create account',
@@ -58,6 +88,8 @@ const en: MessageSchema = {
tokensDesc: 'Generate tokens for direct API access, like API keys.',
appsTitle: 'Authorized Apps',
appsDesc: "Third-party apps you've granted access to your account.",
securityTitle: 'Security',
securityDesc: 'Enable two-factor authentication (2FA) for your account.',
usersTitle: 'Users',
usersDesc: 'Create, edit role/status and delete accounts (admins only).',
analyticsTitle: 'Analytics',
@@ -85,6 +117,32 @@ const en: MessageSchema = {
revokeConfirm: 'Revoke client "{name}"? Its tokens will stop working.',
clientIdShort: 'client_id',
redirectLabel: 'redirect',
webhooksTitle: 'Webhooks',
hideWebhooks: 'Hide webhooks',
webhooksDesc: 'Outgoing notifications to your app when something relevant happens — no polling needed.',
webhookSecretWarning: 'Save this secret now, it cannot be shown again. Use it to verify the HMAC-SHA256 signature in the X-Webhook-Signature header.',
webhookSecretLabel: 'secret:',
webhookPaused: 'paused',
lastDelivery: 'last delivery',
pending: 'pending',
pause: 'Pause',
resume: 'Resume',
viewHistory: 'View history',
hideHistory: 'Hide history',
noDeliveries: 'No deliveries for this webhook yet.',
attempts: 'attempts: {count}',
retryDelivery: 'Retry',
retrying: 'Retrying…',
noWebhooks: "You haven't registered any webhooks for this app yet.",
webhookUrl: 'Webhook URL',
addWebhook: 'Add webhook',
webhookDeleteConfirm: 'Delete the webhook "{url}"?',
eventTokenRevoked: 'Token revoked',
eventUserDeactivated: 'User deactivated',
rotateSecret: 'Rotate secret',
rotateSecretConfirm: 'Rotate the secret for "{name}"? The current secret will keep working for 48 more hours so integrations that haven\'t updated yet don\'t break.',
rotateSecretFailed: 'Could not rotate the secret.',
previousSecretStillValid: 'The previous secret stays valid until {date}.',
},
tokens: {
title: 'Personal Access Tokens',
@@ -169,6 +227,14 @@ const en: MessageSchema = {
reject: 'Reject',
rejectConfirm: 'Reject the registration for "{name}"? It will go to the trash and can be restored later.',
rejectFailed: 'Could not reject the registration.',
sessionsTitle: 'Active sessions',
sessionsDesc: 'Active OAuth tokens for this user — apps with access to their account right now.',
noSessions: 'No active sessions.',
sessionUnknownClient: '(deleted app)',
revokeSession: 'Revoke',
revokeSessionConfirm: 'Revoke the session for "{name}"? That app will lose access.',
revokeAllSessions: 'Revoke all',
revokeAllSessionsConfirm: 'Revoke all active sessions for "{name}"? All their OAuth tokens will be revoked.',
},
analytics: {
title: 'Analytics',
@@ -176,6 +242,7 @@ const en: MessageSchema = {
last7: 'Last 7 days',
last30: 'Last 30 days',
last90: 'Last 90 days',
exportPdf: 'Export PDF',
totalUsers: 'Total users',
activeSessions: 'Active sessions',
activeSessionsHint: 'valid OAuth tokens',
@@ -203,6 +270,86 @@ const en: MessageSchema = {
tooltipAppLabel: 'Apps (OAuth):',
tooltipSessionLabel: 'Admin panel:',
barAriaLabel: '{date}: {oauth} app logins, {session} to admin panel',
loginFailureRate: 'Login failure rate',
loginFailureRateHint: '{count} failed in the last 7 days',
oauthApprovalRate: 'OAuth approval rate',
oauthApprovalRateHint: '{approved}/{attempted} in this period',
funnelTitle: 'OAuth authorization funnel',
funnelEmpty: 'No authorization attempts in this period yet.',
colClient: 'Client',
colAttempted: 'Attempts',
colApproved: 'Approved',
colDenied: 'Denied',
colApprovalRate: 'Approval',
activeTokensByClient: 'Active tokens by client',
noActiveTokens: 'No active tokens right now.',
scopeUsageTitle: 'Scope usage',
noScopeUsage: 'No scopes granted in this period yet.',
},
auditLog: {
title: 'Audit log',
subtitle: 'Permission changes, user and OAuth client create/delete events.',
allSubjects: 'All subjects',
subjectUser: 'Users',
subjectClient: 'OAuth clients',
allActions: 'All actions',
empty: 'No events recorded yet.',
colWhen: 'When',
colActor: 'Who',
colAction: 'Action',
colSubject: 'Subject',
colDetails: 'Details',
colIp: 'IP',
systemActor: '(system)',
fieldChanged: '{field} changed',
prevPage: 'Previous',
nextPage: 'Next',
pageInfo: 'Page {page} of {lastPage} — {total} events',
actions: {
userCreated: 'User created',
userUpdated: 'User updated',
userDeleted: 'User deleted',
userRestored: 'User restored',
userForceDeleted: 'User permanently deleted',
userApproved: 'User approved',
appRoleAssigned: 'App role assigned',
appRoleRevoked: 'App role revoked',
clientCreated: 'OAuth client created',
clientRevoked: 'OAuth client revoked',
twoFactorEnabled: '2FA enabled',
twoFactorDisabled: '2FA disabled',
twoFactorRecoveryRegenerated: 'Recovery codes regenerated',
sessionRevoked: 'Session revoked',
sessionsRevokedAll: 'All sessions revoked',
webhookCreated: 'Webhook created',
webhookDeleted: 'Webhook deleted',
secretRotated: 'Secret rotated',
passwordReset: 'Password reset',
},
},
security: {
title: 'Security',
subtitle: 'Two-factor authentication (2FA) for your account.',
enabled: '2FA enabled',
enabledDesc: 'Your account asks for a code from your authenticator app every time you sign in.',
disabled: '2FA disabled',
disabledDesc: 'Add an extra layer of security: a code from your phone in addition to your password.',
enable: 'Enable 2FA',
disable: 'Disable',
disableConfirm: 'Confirm disable',
regenerateCodes: 'Regenerate recovery codes',
confirmPassword: 'Confirm your password',
confirm: 'Confirm',
setupTitle: 'Scan the QR code',
setupDesc: 'Use Google Authenticator, Authy, or any TOTP-compatible app.',
manualEntry: "Can't scan? Enter this code manually:",
enterCode: '6-digit code',
invalidCode: 'Invalid code. Try again.',
invalidPassword: 'Incorrect password.',
setupFailed: 'Could not start 2FA setup.',
qrAlt: 'QR code to set up 2FA',
recoveryCodesTitle: 'Save these recovery codes',
recoveryCodesWarning: "Each one works once. Use them if you lose access to your authenticator app. They won't be shown again.",
},
};