Avancé
🧠 Fondamentaux
30 XP
0 personnes ont réussi
Système de login simplifie
Tu vas créer un système d'authentification complet. C'est le coeur de tout site avec des comptes utilisateurs.
Écris une classe AuthSystem avec : - inscrire(username, password) : enregistre un nouvel utilisateur. Retourne True si OK, False si le username existe deja. - connecter(username, password) : si les identifiants sont corrects, crée une session et retourne un token. Sinon retourne None. - est_connecte(token) : retourne le username associe au token, ou None si le token est invalide. - deconnecter(token) : supprime la session.
Exemple : a = AuthSystem() a.inscrire('alice', 'pass123') token = a.connecter('alice', 'pass123') a.est_connecte(token) renvoie 'alice' a.deconnecter(token) a.est_connecte(token) renvoie None
Tests (2/4)
Inscription et login
a = AuthSystem()
assert a.inscrire('alice', 'pass123') == True
token = a.connecter('alice', 'pass123')
assert token is not None
assert a.est_connecte(token) == 'alice'
Mauvais mot de passe
a = AuthSystem()
a.inscrire('bob', 'secret')
assert a.connecter('bob', 'wrong') is None
+ 0 tests cachés
Indices (3 disponibles)
Solution officielle
import random
class AuthSystem:
def __init__(self):
self.users = {}
self.sessions = {}
def inscrire(self, username, password):
if username in self.users:
return False
self.users[username] = password
return True
def connecter(self, username, password):
if self.users.get(username) == password:
token = ''.join(random.choice('0123456789abcdef') for _ in range(32))
self.sessions[token] = username
return token
return None
def est_connecte(self, token):
return self.sessions.get(token)
def deconnecter(self, token):
self.sessions.pop(token, None)