Contexte
ParseUser hérite de ParseObject et ajoute les opérations d'authentification.
⚠️ Dépend de #1 (ParseClient).
⚠️ Point critique : l'endpoint /login attend un body application/x-www-form-urlencoded, pas du JSON. Utilisez le paramètre data= de _http.py au lieu de json=. C'est le piège classique.
Endpoints REST Parse
| Méthode |
Endpoint |
Format body |
sign_up() |
POST /users |
JSON |
log_in() |
POST /login |
FORM-ENCODED ⚠️ |
log_out() |
POST /logout |
— (header token) |
request_password_reset() |
POST /requestPasswordReset |
JSON |
API Python attendue
from parse_sdk import ParseUser
user = ParseUser()
user.username = "alice"
user.password = "s3cr3t!"
user.email = "alice@example.com"
await user.sign_up()
print(user.session_token)
user = await ParseUser.log_in("alice", "s3cr3t!")
await ParseUser.log_out()
await ParseUser.request_password_reset("alice@example.com")
Fichiers à créer / modifier
- Créer
src/parse_sdk/user.py
- Modifier
src/parse_sdk/__init__.py → ajouter ParseUser
- Créer
tests/unit/test_user_auth.py
Points techniques
ParseUser hérite de ParseObject avec class_name = "_User"
username, password, email : propriétés @property
log_in() est une @classmethod qui retourne une instance ParseUser
- Après
log_in(), appeler get_client().set_session_token(token)
- Après
log_out(), appeler get_client().clear_session_token()
Critères d'acceptation
Ressources
Contexte
ParseUserhérite deParseObjectet ajoute les opérations d'authentification.Endpoints REST Parse
sign_up()POST /userslog_in()POST /loginlog_out()POST /logoutrequest_password_reset()POST /requestPasswordResetAPI Python attendue
Fichiers à créer / modifier
src/parse_sdk/user.pysrc/parse_sdk/__init__.py→ ajouterParseUsertests/unit/test_user_auth.pyPoints techniques
ParseUserhérite deParseObjectavecclass_name = "_User"username,password,email: propriétés@propertylog_in()est une@classmethodqui retourne une instanceParseUserlog_in(), appelerget_client().set_session_token(token)log_out(), appelerget_client().clear_session_token()Critères d'acceptation
sign_up()→POST /usersJSON, peuplesession_tokenetobject_idlog_in()→POST /loginen form-encodedlog_out()→POST /logoutavecX-Parse-Session-Tokenrequest_password_reset()fonctionneParseUsernameTakenError(202) etParseEmailTakenError(203) levées correctement_syncdisponiblesrespxmypy,black,ruffpassentRessources
src/parse_sdk/exceptions.py→ParseUsernameTakenError,ParseEmailTakenError