blob: a7c47dc5578d9acd9b6590ab828bfd199b0e7229 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
from typing import Any, Dict
from django.apps import AppConfig
class HomeConfig(AppConfig):
"""Django AppConfig for the home app."""
name = 'pydis_site.apps.home'
signal_listener = None
def ready(self) -> None:
"""Run when the app has been loaded and is ready to serve requests."""
from pydis_site.apps.home.signals import SignalListener
self.signal_listener = SignalListener()
self.patch_allauth()
def patch_allauth(self) -> None:
"""Monkey-patches Allauth classes so we never collect email addresses."""
# Imported here because we can't import it before our apps are loaded up
from allauth.socialaccount.providers.base import Provider
def extract_extra_data(_: Provider, data: Dict[str, Any]) -> Dict[str, Any]:
"""
Extracts extra data for a SocialAccount provided by Allauth.
This is our version of this function that strips the email address from incoming extra
data. We do this so that we never have to store it.
This is monkey-patched because most OAuth providers - or at least the ones we care
about - all use the function from the base Provider class. This means we don't have
to make a new Django app for each one we want to work with.
"""
data["email"] = ""
return data
Provider.extract_extra_data = extract_extra_data
|