Harden login and make personal-best records self-correct
Login: add an in-memory per-IP throttle (8 failed attempts -> 15-min lockout, 429 + Retry-After), raise the change-password minimum to 8 with a 72-char cap, and apply the same minimum on the StartOS Set Login Password action. Records: add a record_floor column for manually-pinned bests plus recomputeRecord(); the live record is now the direction-aware best of the best logged value and the floor, recomputed on entry edit/delete so it can drop again (never below the floor). Settings exposes the floor as an override and shows the live best as a placeholder. Bump package 0.1.6:0 -> 0.1.7:0 and the service-worker cache to v7.
This commit is contained in:
@@ -8,12 +8,13 @@ const inputSpec = InputSpec.of({
|
||||
password: Value.text({
|
||||
name: i18n('Password'),
|
||||
description: i18n(
|
||||
'The password Gunner types on the login screen (at least 4 characters)',
|
||||
'The password Gunner types on the login screen (at least 8 characters)',
|
||||
),
|
||||
required: true,
|
||||
default: null,
|
||||
masked: true,
|
||||
minLength: 4,
|
||||
minLength: 8,
|
||||
maxLength: 72,
|
||||
}),
|
||||
})
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ const dict = {
|
||||
'Set Login Password': 6,
|
||||
'Set the password Gunner uses to log in to Premier Gunner': 7,
|
||||
'Password': 8,
|
||||
'The password Gunner types on the login screen (at least 4 characters)': 9,
|
||||
'The password Gunner types on the login screen (at least 8 characters)': 9,
|
||||
} as const
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,7 +11,7 @@ export default {
|
||||
6: 'Establecer contraseña de acceso',
|
||||
7: 'Establece la contraseña que Gunner usa para iniciar sesión en Premier Gunner',
|
||||
8: 'Contraseña',
|
||||
9: 'La contraseña que Gunner escribe en la pantalla de inicio de sesión (al menos 4 caracteres)',
|
||||
9: 'La contraseña que Gunner escribe en la pantalla de inicio de sesión (al menos 8 caracteres)',
|
||||
},
|
||||
de_DE: {
|
||||
0: 'Starte Premier Gunner!',
|
||||
@@ -23,7 +23,7 @@ export default {
|
||||
6: 'Anmeldepasswort festlegen',
|
||||
7: 'Lege das Passwort fest, mit dem Gunner sich bei Premier Gunner anmeldet',
|
||||
8: 'Passwort',
|
||||
9: 'Das Passwort, das Gunner auf dem Anmeldebildschirm eingibt (mindestens 4 Zeichen)',
|
||||
9: 'Das Passwort, das Gunner auf dem Anmeldebildschirm eingibt (mindestens 8 Zeichen)',
|
||||
},
|
||||
pl_PL: {
|
||||
0: 'Uruchamianie Premier Gunner!',
|
||||
@@ -35,7 +35,7 @@ export default {
|
||||
6: 'Ustaw hasło logowania',
|
||||
7: 'Ustaw hasło, którego Gunner używa do logowania w Premier Gunner',
|
||||
8: 'Hasło',
|
||||
9: 'Hasło, które Gunner wpisuje na ekranie logowania (co najmniej 4 znaki)',
|
||||
9: 'Hasło, które Gunner wpisuje na ekranie logowania (co najmniej 8 znaków)',
|
||||
},
|
||||
fr_FR: {
|
||||
0: 'Démarrage de Premier Gunner !',
|
||||
@@ -47,6 +47,6 @@ export default {
|
||||
6: 'Définir le mot de passe de connexion',
|
||||
7: 'Définissez le mot de passe que Gunner utilise pour se connecter à Premier Gunner',
|
||||
8: 'Mot de passe',
|
||||
9: "Le mot de passe que Gunner saisit sur l'écran de connexion (au moins 4 caractères)",
|
||||
9: "Le mot de passe que Gunner saisit sur l'écran de connexion (au moins 8 caractères)",
|
||||
},
|
||||
} satisfies Record<string, LangDict>
|
||||
|
||||
@@ -2,13 +2,13 @@ import { IMPOSSIBLE, utils, VersionInfo } from '@start9labs/start-sdk'
|
||||
import { store } from '../fileModels/store'
|
||||
|
||||
export const current = VersionInfo.of({
|
||||
version: '0.1.6:0',
|
||||
version: '0.1.7:0',
|
||||
releaseNotes: {
|
||||
en_US: 'Full category management in Settings: rename categories and metrics, change units & type, add or remove metrics, and archive or permanently delete categories.',
|
||||
es_ES: 'Gestión completa de categorías en Ajustes: renombra categorías y métricas, cambia unidades y tipo, añade o elimina métricas, y archiva o elimina categorías permanentemente.',
|
||||
de_DE: 'Vollständige Kategorienverwaltung in den Einstellungen: Kategorien und Metriken umbenennen, Einheiten & Typ ändern, Metriken hinzufügen/entfernen sowie Kategorien archivieren oder endgültig löschen.',
|
||||
pl_PL: 'Pełne zarządzanie kategoriami w Ustawieniach: zmiana nazw kategorii i metryk, zmiana jednostek i typu, dodawanie/usuwanie metryk oraz archiwizacja lub trwałe usuwanie kategorii.',
|
||||
fr_FR: "Gestion complète des catégories dans les Réglages : renommer catégories et métriques, changer unités et type, ajouter ou supprimer des métriques, et archiver ou supprimer définitivement des catégories.",
|
||||
en_US: 'Security hardening — login attempts are now rate-limited and the minimum password length was raised. Personal-best records now correct themselves when the session that set them is edited down or deleted, while any best you set by hand is kept.',
|
||||
es_ES: 'Refuerzo de seguridad: los intentos de inicio de sesión ahora tienen límite de frecuencia y se aumentó la longitud mínima de la contraseña. Los récords personales se corrigen al editar a la baja o eliminar la sesión que los estableció, conservando cualquier récord fijado manualmente.',
|
||||
de_DE: 'Sicherheitsverbesserungen: Anmeldeversuche sind jetzt ratenbegrenzt und die Mindestlänge des Passworts wurde erhöht. Persönliche Bestwerte korrigieren sich selbst, wenn die zugehörige Sitzung nach unten bearbeitet oder gelöscht wird, während manuell gesetzte Bestwerte erhalten bleiben.',
|
||||
pl_PL: 'Wzmocnienie bezpieczeństwa: próby logowania są teraz ograniczane, a minimalna długość hasła została zwiększona. Rekordy osobiste same się korygują po obniżeniu lub usunięciu sesji, która je ustanowiła, zachowując rekordy ustawione ręcznie.',
|
||||
fr_FR: "Renforcement de la sécurité : les tentatives de connexion sont désormais limitées et la longueur minimale du mot de passe a été augmentée. Les records personnels se corrigent lorsqu'on réduit ou supprime la séance qui les a établis, tout en conservant les records définis manuellement.",
|
||||
},
|
||||
migrations: {
|
||||
up: async ({ effects }) => {
|
||||
|
||||
Reference in New Issue
Block a user