Comment tu as appelé ton utilisateur ? 6


Je travaillais pour un client dont l’infrastructure m’avait pris quelques jours à prendre en main. Avec l’aide de toute l’équipe et de la patience, victoire, j’avais l’env de prod sur ma machine, et je pouvais faire tourner le produit…

Previouly, on Sam and Max

Je me rends sur la page d’accueil, qui me redirige instantanément sur l’admin du site Django.

Ceci n’avait aucun sens. Je regarde les requêtes HTTP, j’ai une 302 qui sort de nulle part. Je suis authentifié, ma conf nginx est pas déconnante, et dans le routing défini du urls.py, le pattern pour l’admin est le classique http://domain.tld/admin.

Rien de fou.

Alors après m’être arraché les cheveux, je vais voir un techos et lui demande si à tout hasard il a une idée.

- Il me dit “tu as appelé ton user comment ?”

– Oh, j’ai fait un ./manage.py createsuperuser vite fait pour tester en local avec username:admin, password:admin.

– Ben c’est ça, on peut pas créer un user qui s’appelle “admin”.

– Ah ?

– Oui on a un url pattern pour la page du profile utilisateur qui fait:

http://domain.tld/<username>

Quand tu arrives sur /, on redirige dessus automatiquement.

Du coup si tu l’appelles admin, tu as plus accès à ton profile…

And now…

Aujourd’hui, en explorant la base de code, je tombe sur ça:

class RegistrationForm(forms.Form):
 
    _reserved_usernames = [
        'accounts',
        'about',
        'admin',
        'clients',
        'data',
        'forms',
        'maps',
        ... + 50
    ]

J’ai de quoi écrire un bouquin avec le contenu des fichiers que je vois, je sens que ça va me faire quelques articles :)

6 thoughts on “Comment tu as appelé ton utilisateur ?

Leave a comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.