StaffAuth
Vue d'ensemble
StaffAuth protège les comptes du staff. Lorsqu'un joueur se connecte et possède la permission de staff (security.admin par défaut), il est figé jusqu'à ce qu'il s'authentifie : il ne peut ni se déplacer, ni interagir, ni casser ou poser des blocs, ni ouvrir d'inventaires, ni discuter, ni combattre, ni utiliser d'autres commandes que /staffauth. Un membre du staff sans mot de passe en enregistre un à sa première connexion ; ensuite, il se connecte avec.
Les mots de passe ne sont jamais envoyés comme arguments de commande ni saisis dans le chat. Ils sont saisis dans une boîte de dialogue Paper, ou sur un menu de pavé numérique facultatif, et ne sont stockés que sous forme de hachages BCrypt dans un artefact TypeWriter. Les tentatives échouées sont limitées avec un délai de recharge croissant et peuvent expulser le joueur.
Tout le monde est retenu pendant environ un tick à la connexion, le temps que ses permissions se chargent, silencieusement, afin qu'un backend de permissions lent ne laisse jamais entrer le staff sans vérification. Les joueurs qui ne sont pas du staff sont ensuite libérés ; si les permissions ne sont pas établies dans les 10 secondes, le joueur est expulsé avec une explication.
Fonctionnalités
- Gel à la connexion — le staff non authentifié ne peut ni se déplacer, ni interagir, ni construire, ni lâcher, ni ramasser, ni consommer, ni pêcher, ni subir ou infliger des dégâts, ni discuter, ni exécuter de commandes.
- Enregistrement et connexion — le staff qui se connecte pour la première fois s'enregistre en saisissant deux fois un mot de passe ; les autres se connectent.
- Stockage haché — seuls les hachages BCrypt sont enregistrés, avec un facteur de coût configurable.
- Limites de tentatives — un délai de recharge qui double après chaque échec (jusqu'à 60 secondes) et une expulsion après
maxAttemptséchecs. - Expiration de session — renvoyez éventuellement le staff authentifié vers la connexion après un certain nombre de minutes.
- Dialogue ou pavé numérique — une boîte de dialogue Paper par défaut, plus un menu de pavé numérique facultatif construit à partir d'une disposition GUI.
- Outils d'administration — réinitialisez un mot de passe stocké ou forcez une déconnexion.
- Extension Permissions facultative — attend le chargement des permissions avant de décider qui fait partie du staff.
Installation
- Installez l'extension GUI : la boîte de dialogue de connexion et le menu de pavé numérique sont ouverts par son intermédiaire. Sans elle,
/staffauthrépond que l'interface n'est pas disponible. - Facultatif : installez l'extension BTC Permissions si vos serveurs chargent les permissions depuis une base de données ; StaffAuth la détecte automatiquement.
- Placez le JAR de StaffAuth dans
plugins/Typewriter/extensions/et redémarrez le serveur. - Donnez la permission de staff (
security.admin) aux comptes qui doivent s'authentifier.
Premiers pas
- Dans le panel web TypeWriter, ouvrez une page static et ajoutez un artefact Staff Auth Passwords. Ne changez jamais son
artifactIdpar la suite, sinon les mots de passe stockés sont perdus. - Sur la même page, ajoutez une entrée Staff Auth Config. Vérifiez
staffPermission,adminPermission,maxAttempts,minPasswordLength,bcryptCostet les messages. - Publiez. StaffAuth a besoin des deux entrées : sans la configuration, il ne fait rien, et sans l'artefact le staff est laissé entrer (une erreur est journalisée).
- Connectez-vous avec un compte de test ayant la permission de staff. Vous êtes figé et invité à vous enregistrer : saisissez un mot de passe dans la boîte de dialogue, puis confirmez-le.
- Reconnectez-vous : la boîte de dialogue demande maintenant le mot de passe.
- Facultatif : ajoutez une action Staff Auth Menu pour utiliser le pavé numérique. Voir ci-dessous.
StaffAuth utilise le premier Staff Auth Config et le premier artefact Staff Auth Passwords qu'il trouve. N'en créez pas plusieurs.
Fonctionnement
L'authentification dure jusqu'à ce que le joueur quitte le serveur (l'état n'est conservé qu'en mémoire) ou que l'expiration de session facultative arrive. Tant qu'il est restreint, la seule commande autorisée est /staffauth (et /sa, qui est seulement exemptée du blocage ; elle n'est pas enregistrée comme alias).
Menus
La connexion, /staffauth, login et register ouvrent une boîte de dialogue Paper avec un champ de texte. Lors de l'enregistrement, la boîte de dialogue est affichée une seconde fois pour confirmer le mot de passe. Le texte d'invite provient de guiLoginPrompt, le titre de guiTitle.
L'action Staff Auth Menu ouvre à la place un pavé numérique en inventaire (chiffres uniquement). Déclenchez-la depuis une chaîne d'actions si vous préférez cet aspect. Dans son layoutPool, donnez aux objets un type de bouton pour en faire des touches :
| Type de bouton | Fonction |
|---|---|
DIGIT_0 à DIGIT_9 | Ajoute un chiffre au mot de passe. |
PASSWORD_DISPLAY | Affiche un point par chiffre saisi. |
LOGIN / REGISTER | Valide le mot de passe ; le libellé est Register lorsque le joueur n'a pas encore de mot de passe. |
BACKSPACE | Retire le dernier chiffre. |
CANCEL | Efface la saisie et ferme le menu. |
Le pavé numérique ne peut saisir que des chiffres, et le mot de passe doit toujours respecter minPasswordLength. useGuiWhenAvailable contrôle si une boîte de dialogue est ouverte automatiquement à la connexion.
Configuration
Tout se définit dans les entrées. Dans les champs de message, utilisez {attempts}, {max} et {length} comme placeholders (accolades, pas balises MiniMessage) : {attempts} et {max} dans wrongPasswordMessage, {attempts} dans maxAttemptsKickMessage, {length} (le minimum) et {max} dans passwordTooShortMessage.
Les mots de passe se trouvent dans le fichier d'artefact choisi par artifactId, sous forme de table JSON associant l'UUID d'un joueur à un hachage BCrypt. L'artefact est mis en cache pendant 5 secondes.
Commandes
Le nom de la commande provient du champ commandName de la configuration (staffauth par défaut). Il n'y a pas de permission enregistrée sur la commande de base : tout le monde peut l'exécuter, mais elle n'a d'effet que pour le staff. Les sous-commandes d'administration nécessitent la permission définie dans adminPermission.
| Commande | Description |
|---|---|
/staffauth | Ouvre la boîte de dialogue de connexion ou d'enregistrement. |
/staffauth open, login, register | Identique à la précédente. |
/staffauth logout | Met fin à votre authentification et affiche à nouveau la boîte de dialogue. |
/staffauth status | Affiche votre état, si vous avez la permission de staff, et si la GUI est disponible. |
/staffauth reset <player> | Supprime le mot de passe stocké d'un joueur (nom ou UUID), qui doit s'enregistrer à nouveau. Nécessite adminPermission. |
/staffauth force-logout <player> | Déconnecte un joueur en ligne et lui affiche la boîte de dialogue. Nécessite adminPermission. |
Permissions
Les permissions sont des champs configurables, et non des nœuds fixes.
| Permission | Autorise |
|---|---|
security.admin (staffPermission) | Marque un joueur comme membre du staff : il doit s'authentifier. |
security.staffauth.admin (adminPermission) | /staffauth reset et /staffauth force-logout. |
Entrées
3 entrées, générées depuis la source de l'extension.
Actions1
- Staff Auth MenuStaff Auth Menu
Commandes1
- Staff Auth ConfigStaff Auth Config
Artefacts1
- Staff Auth DataStaff Auth Passwords
Dépannage
Le staff entre sans qu'on lui demande de mot de passe. Vérifiez que la configuration et l'artefact sont tous deux publiés. Sans artefact, StaffAuth laisse entrer le staff et journalise StaffAuth has no artifact entry. Vérifiez aussi que le joueur a bien staffPermission (/staffauth status l'affiche).
Le joueur est expulsé avec un message concernant les permissions. L'extension Permissions n'a pas signalé que les permissions du joueur étaient chargées dans les 10 secondes. Reconnectez-vous ; si le problème persiste, vérifiez le backend de Permissions dans les journaux.
The StaffAuth interface is unavailable. L'extension GUI n'est pas chargée. Installez-la et redémarrez.
Les mots de passe ont disparu. L'artifactId de l'artefact a été modifié ou l'entrée a été recréée. Restaurez l'ancien identifiant. Une valeur stockée qui n'est pas un UUID ou une chaîne BCrypt valide fait échouer le chargement et est journalisée sous la forme StaffAuth artifact could not be loaded ; le joueur reste figé et est informé que son état est illisible.
Enregistrement refusé. Le mot de passe doit comporter entre minPasswordLength (6) et maxPasswordLength (128) caractères et ne contenir ni espaces ni caractères de contrôle. Les deux saisies doivent correspondre.
Un joueur est expulsé après des connexions échouées. Après maxAttempts (5 par défaut) échecs, le joueur est expulsé avec maxAttemptsKickMessage. Définissez maxAttempts sur 0 pour désactiver les expulsions ; le délai de recharge s'applique toujours. /staffauth reset <player> efface un mot de passe oublié.
Extensions associées
- GUI — ouvre la boîte de dialogue de connexion et le menu de pavé numérique.