Skip to content

Feat/parse user signin signup logout#30

Open
Level237 wants to merge 2 commits intodevelopfrom
feat/parseUser-signin-signup-logout
Open

Feat/parse user signin signup logout#30
Level237 wants to merge 2 commits intodevelopfrom
feat/parseUser-signin-signup-logout

Conversation

@Level237
Copy link
Copy Markdown
Collaborator

Résumé

Cette PR implémente la classe ParseUser, qui hérite de ParseObject et fournit les fonctionnalités d'authentification des utilisateurs : inscription, connexion, déconnexion et réinitialisation de mot de passe.

ParseUser est un composant essentiel du SDK car il permet de gérer le cycle de vie des utilisateurs Parse Server. Cette implémentation respecte les spécifications de l'API REST de Parse, notamment le point critique que l'endpoint /login attend des données form-encoded et non JSON.

Issue liée

Closes #20


Type de changement

  • feat — Nouvelle fonctionnalité
  • fix — Correction de bug
  • docs — Documentation uniquement
  • test — Ajout ou modification de tests
  • refactor — Refactoring sans changement de comportement
  • chore — Maintenance, CI/CD, dépendances
  • breaking change — Modifie l'API publique (nécessite un bump majeur)

Changements apportés

Création de src/parse_sdk/user.py avec la classe ParseUser héritant de ParseObject
Implémentation des méthodes d'authentification :
sign_up() — Inscription d'un nouvel utilisateur (POST /users, JSON)
log_in(username, password) — Connexion (POST /login, form-encoded)
log_out() — Déconnexion (POST /logout avec session token)
request_password_reset(email) — Demande de réinitialisation de mot de passe
Ajout des propriétés username, password, email, session_token
Ajout des versions asynchrones : sign_up_async(), log_in_async(), log_out_async(), request_password_reset_async()
Gestion automatique du session token sur le client après login/signup/logout
Modification de src/parse_sdk/object.py : ajout de getitem et setitem pour l'accès dict-style
Modification de src/parse_sdk/_http.py : ajout de la propriété session_token
Modification de src/parse_sdk/exceptions.py : correction de raise_parse_error() pour les exceptions avec signatures spéciales
Ajout de l'export ParseUser dans src/parse_sdk/init.py
Création de tests/unit/test_user_auth.py avec 12 tests unitaires


Comment tester

from parse_sdk import ParseClient, ParseUser, get_client

# Initialiser le client
client = ParseClient(
    app_id="your_app_id",
    rest_key="your_rest_key",
    server_url="https://your-parse-server.com/parse"
)

# Inscription
user = ParseUser()
user.username = "alice"
user.password = "s3cr3t!"
user.email = "alice@example.com"
user.sign_up()
print(f"User created with ID: {user.object_id}")
print(f"Session token: {user.session_token}")

# Connexion
user = ParseUser.log_in("alice", "s3cr3t!")
print(f"Logged in as: {user.username}")

# Déconnexion
ParseUser.log_out()

# Réinitialisation mot de passe
ParseUser.request_password_reset("alice@example.com")

Checklist

Code

  • Mon code respecte les standards du projet (black, ruff, mypy passent en local)
  • J'ai utilisé des type hints sur toutes les fonctions et méthodes publiques
  • Toutes les fonctions/classes publiques ont une docstring Google Style

Tests

  • J'ai ajouté des tests unitaires pour tous mes changements
  • Tous les tests existants passent (pytest)
  • La couverture de code ne régresse pas (pytest --cov)

Documentation

  • J'ai mis à jour la documentation si nécessaire
  • J'ai ajouté des exemples si la fonctionnalité est nouvelle

Git

  • Ma branche est à jour avec develop (pas de conflits)
  • Mes commits suivent la convention type(scope): description
  • Il n'y a pas de commits de debug ou temporaires

@Ulrich75
Copy link
Copy Markdown
Collaborator

Thanks for your contribution 🙌
There are a few conflicts with the main branch. Can you resolve them and then update your PR?
Feel free to ask if you need help.

@Level237
Copy link
Copy Markdown
Collaborator Author

-ok @Ulrich75

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants