Skip to content

feat(user): implémenter ParseUser — inscription, connexion et déconnexion #20

@Ulrich75

Description

@Ulrich75

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

  • sign_up()POST /users JSON, peuple session_token et object_id
  • log_in()POST /login en form-encoded
  • log_out()POST /logout avec X-Parse-Session-Token
  • request_password_reset() fonctionne
  • ParseUsernameTakenError (202) et ParseEmailTakenError (203) levées correctement
  • Versions _sync disponibles
  • Tests mockés avec respx
  • mypy, black, ruff passent

Ressources

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0 · critiqueBloquant — à traiter immédiatementfeatureNouvelle fonctionnalité à développerintermediateRequiert de l'expérience Python / asyncmodule · userParseUser — authentification et sessions

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions