Comments (3)
done!, pip install django-graphql-social-auth >= 0.1.2
from django-graphql-social-auth.
I'm currently working around this with the following small local hack (modification marked with comment):
class GraphQLSocialAuthResultIsNotUser(exceptions.GraphQLSocialAuthError):
"""
The social auth pipeline result is not a user object.
"""
def __init__(self, result):
super().__init__(result)
self.result = result
def psa(f):
@wraps(f)
def wrapper(cls, root, info, provider, access_token, **kwargs):
strategy = load_strategy(info.context)
try:
backend = load_backend(strategy, provider, redirect_uri=None)
except MissingBackend:
raise exceptions.GraphQLSocialAuthError(_('Provider not found'))
user = backend.do_auth(access_token)
if user is None:
raise exceptions.GraphQLSocialAuthError(_('Invalid token'))
# BEGIN local modification
# Raise non-user result values as GraphQLSocialAuthResultIsNotUser.
# (Type-checking code referenced from `social_core.actions.do_complete` for consistency.)
user_model = strategy.storage.user.user_model()
if user and not isinstance(user, user_model):
raise GraphQLSocialAuthResultIsNotUser(user)
# END local modification
if not issubclass(cls, mixins.JSONWebTokenMixin):
login(info.context, user)
social = user.social_auth.get(provider=provider)
return f(cls, root, info, social, **kwargs)
return wrapper
My application then uses a SocialAuth
subclass to extend mutate
to catch GraphQLSocialAuthResultIsNotUser
and handle the redirect by returning it as part of the mutation result.
Would something like the above approach be workable for including into the library? It lets applications catch and handle GraphQLSocialAuthResultIsNotUser
in their own appropriate way, while for applications that don't the behaviour won't be different than before, except that the raised exception should be clearer and easier to understand than the current AttributeError
.
from django-graphql-social-auth.
@pjdelport Hi and thanks!,
I understand the problem and I think your approach is right.
I would prefer to use the generic exception, see the PR #8.
from django-graphql-social-auth.
Related Issues (20)
- How to trigger authentication with React frontend? HOT 5
- How to do customization in case of using SocialAuthJWT? HOT 3
- Question: How to use an idToken rather than an accessToken? HOT 2
- allauth? Any type of integration supported / possible?
- Is there example of making query with received JWT token?
- AssertionError at /graph/
- Error in the authentication with twitter HOT 2
- Use pipeline and support partial HOT 4
- Social user creation override other user account information HOT 1
- Setting a custom redirect_uri HOT 4
- Oauth requests from the backend server
- Option to set cookie HOT 2
- when I add class Arguments: the original arguments disappeared? HOT 1
- django social auth don't associate new users correctly HOT 3
- How do I get the refreshToken with this library HOT 1
- How can we create a username insensitive check for social login
- add a way to skip user verification
- limit only specific domain email addresses
- cannot import ugettext_lazy HOT 3
- Is this package supported? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from django-graphql-social-auth.