mirror of
https://github.com/yawaflua/Flask-Discord.git
synced 2025-12-10 04:19:31 +02:00
Caching user object to flask session was bad idea
This commit is contained in:
@@ -24,8 +24,6 @@ class DiscordOAuth2HttpClient(abc.ABC):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
SESSION_KEYS = [
|
SESSION_KEYS = [
|
||||||
"discord_user",
|
|
||||||
|
|
||||||
"discord_oauth2_state",
|
"discord_oauth2_state",
|
||||||
"discord_oauth2_token",
|
"discord_oauth2_token",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -42,19 +42,12 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient):
|
|||||||
session["discord_oauth2_state"] = state
|
session["discord_oauth2_state"] = state
|
||||||
return redirect(authorization_url)
|
return redirect(authorization_url)
|
||||||
|
|
||||||
def callback(self, fetch_user: bool = True):
|
def callback(self):
|
||||||
"""A method which should be always called after completing authorization code grant process
|
"""A method which should be always called after completing authorization code grant process
|
||||||
usually in callback view.
|
usually in callback view.
|
||||||
It fetches the authorization token and saves it flask
|
It fetches the authorization token and saves it flask
|
||||||
`session <http://flask.pocoo.org/docs/1.0/api/#flask.session>`_ object.
|
`session <http://flask.pocoo.org/docs/1.0/api/#flask.session>`_ object.
|
||||||
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
fetch_user : bool, optional
|
|
||||||
If this parameter is set to True, it caches :py:class:`flask_discord.models.User` to flask
|
|
||||||
`session <http://flask.pocoo.org/docs/1.0/api/#flask.session>`_ object with ``discord_user`` key
|
|
||||||
and ``None`` if False. Defaults to True.
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if request.values.get("error"):
|
if request.values.get("error"):
|
||||||
return request.values["error"]
|
return request.values["error"]
|
||||||
@@ -65,10 +58,6 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient):
|
|||||||
authorization_response=request.url
|
authorization_response=request.url
|
||||||
)
|
)
|
||||||
session["discord_oauth2_token"] = token
|
session["discord_oauth2_token"] = token
|
||||||
if fetch_user:
|
|
||||||
session["discord_user"] = self.fetch_user()
|
|
||||||
else:
|
|
||||||
session["discord_user"] = None
|
|
||||||
|
|
||||||
def revoke(self):
|
def revoke(self):
|
||||||
"""This method clears current discord token, state and all session data from flask
|
"""This method clears current discord token, state and all session data from flask
|
||||||
@@ -85,34 +74,14 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient):
|
|||||||
return self._make_session().authorized
|
return self._make_session().authorized
|
||||||
|
|
||||||
def fetch_user(self) -> models.User:
|
def fetch_user(self) -> models.User:
|
||||||
"""This method requests current user data from discord, caches native :py:class:`flask_discord.models.User`
|
"""This method requests for data of current user from discord and returns user object.
|
||||||
to flask `session <http://flask.pocoo.org/docs/1.0/api/#flask.session>`_ object.
|
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
flask_discord.models.User
|
flask_discord.models.User
|
||||||
|
|
||||||
"""
|
"""
|
||||||
session["discord_user"] = models.User(self.get("/users/@me"))
|
return models.User(self.get("/users/@me"))
|
||||||
return session["discord_user"]
|
|
||||||
|
|
||||||
@property
|
|
||||||
def user(self) -> models.User:
|
|
||||||
"""A property which returns cached current :py:class:`flask_discord.models.User` from flask
|
|
||||||
`session <http://flask.pocoo.org/docs/1.0/api/#flask.session>`_ object.
|
|
||||||
|
|
||||||
Note
|
|
||||||
----
|
|
||||||
If user is not present in flask `session <http://flask.pocoo.org/docs/1.0/api/#flask.session>`_
|
|
||||||
object, it requests user data from discord, caches user to session and then returns user object.
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
flask_discord.models.User
|
|
||||||
Cached discord user object form flask `session <http://flask.pocoo.org/docs/1.0/api/#flask.session>`_.
|
|
||||||
|
|
||||||
"""
|
|
||||||
return session.get("discord_user") or self.fetch_user()
|
|
||||||
|
|
||||||
def fetch_connections(self) -> models.UserConnection:
|
def fetch_connections(self) -> models.UserConnection:
|
||||||
"""Requests and returns connections of current user from discord.
|
"""Requests and returns connections of current user from discord.
|
||||||
|
|||||||
Reference in New Issue
Block a user