· 7 years ago · Apr 04, 2018, 06:08 PM
1from django.contrib.auth import login
2
3def activate_account(request, hash):
4 account = get_account_from_hash(hash)
5 if not account.is_active:
6 account.activate()
7 account.save()
8 user = account.user
9 login(request, user)
10
11user.backend = 'django.contrib.auth.backends.ModelBackend'
12
13class HashModelBackend(object):
14 def authenticate(self, hash=None):
15 user = get_user_from_hash(hash)
16 return user
17
18 def get_user(self, user_id):
19 try:
20 return User.objects.get(pk=user_id)
21 except User.DoesNotExist:
22 return None
23
24AUTHENTICATION_BACKENDS = (
25 'myproject.backends.HashModelBackend',
26 'django.contrib.auth.backends.ModelBackend',
27)
28
29def activate_account(request, hash):
30 user = authenticate(hash=hash)
31 if user:
32 # check if user is_active, and any other checks
33 login(request, user)
34 else:
35 return user_not_found_bad_hash_message
36
37from django.conf import settings
38from django.contrib.auth import login
39
40
41# Django 1.10+
42login(request, user, backend=settings.settings.AUTHENTICATION_BACKENDS[0])
43
44# Django <1.10 - fake the authenticate() call
45user.backend = settings.AUTHENTICATION_BACKENDS[0]
46login(request, user)
47
48from ska import sign_url
49from ska.contrib.django.ska.settings import SECRET_KEY
50
51server_ska_login_url = 'https://server-url.com/ska/login/'
52
53signed_url = sign_url(
54 auth_user = 'test_ska_user_0',
55 secret_key = SECRET_KEY,
56 url = server_ska_login_url
57 extra = {
58 'email': 'john.doe@mail.example.com',
59 'first_name': 'John',
60 'last_name': 'Doe',
61 }
62 )
63
64from django.contrib.auth import get_user_model
65from django.contrib.auth.backends import ModelBackend
66
67class HashModelBackend(ModelBackend):
68
69def authenticate(self, username=None, **kwargs):
70 UserModel = get_user_model()
71 if username is None:
72 username = kwargs.get(UserModel.USERNAME_FIELD)
73 try:
74 user = UserModel._default_manager.get_by_natural_key(username)
75 return user
76 except UserModel.DoesNotExist:
77 return None
78
79AUTHENTICATION_BACKENDS = [
80 'django.contrib.auth.backends.ModelBackend',
81 'yours.HashModelBackend',
82]