diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fff8b6d..ac65a2e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,7 +18,7 @@ repos: - id: codespell exclude: ^locale/ - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.15.10 + rev: v0.15.12 hooks: - id: ruff-check args: [--fix] diff --git a/CHANGELOG.md b/CHANGELOG.md index f6cfbe0..d159556 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +## `2.4.0` - 2026-05-06 + +#### 🚀 New Features + +- **Added optional `provider` argument to `get_metadata_by_email`** + - Enables explicitly targeting OAuth users by provider when an email user with the same email also exists + - Example: `get_metadata_by_email(email, provider="google")` + +--- + ## `2.3.0` - 2026-04-14 #### 🚀 New Features diff --git a/magic_admin/resources/user.py b/magic_admin/resources/user.py index 2a2c6e0..4357562 100644 --- a/magic_admin/resources/user.py +++ b/magic_admin/resources/user.py @@ -9,12 +9,11 @@ class User(ResourceComponent): v1_user_logout = "/v1/admin/user/logout" v2_user_info = "/v2/admin/user" - def get_metadata_by_email(self, email): - return self.request( - "get", - self.v2_user_info, - params={"type": "email", "value": email}, - ) + def get_metadata_by_email(self, email, provider=None): + params = {"type": "email", "value": email} + if provider: + params["provider"] = provider + return self.request("get", self.v2_user_info, params=params) def get_metadata_by_issuer_and_wallet(self, issuer, wallet_type): return self.request( diff --git a/magic_admin/version.py b/magic_admin/version.py index 707faad..02c476a 100644 --- a/magic_admin/version.py +++ b/magic_admin/version.py @@ -1 +1 @@ -VERSION = "2.3.0" +VERSION = "2.4.0" diff --git a/pyproject.toml b/pyproject.toml index 27e5508..a38c1df 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "magic-admin" -version = "2.3.0" +version = "2.4.0" description = "Magic Python Library" readme = "README.md" authors = [ diff --git a/tests/unit/resources/user_test.py b/tests/unit/resources/user_test.py index 53afb77..b8b52ad 100644 --- a/tests/unit/resources/user_test.py +++ b/tests/unit/resources/user_test.py @@ -71,6 +71,23 @@ def test_get_metadata_by_email(self): params={"type": "email", "value": sentinel.email}, ) + def test_get_metadata_by_email_with_provider(self): + self.user.request = mock.Mock(return_value=self.metadata_no_wallets) + + assert ( + self.user.get_metadata_by_email( + sentinel.email, + provider="google", + ) + == self.metadata_no_wallets + ) + + self.user.request.assert_called_once_with( + "get", + self.user.v2_user_info, + params={"type": "email", "value": sentinel.email, "provider": "google"}, + ) + @pytest.fixture def mock_construct_issuer_with_public_address(self, mocker): return mocker.patch(