@@ -66,6 +66,7 @@ def authenticate(self, username=None, password=None):
66
66
# Two regular django views to interact with the login system
67
67
####
68
68
69
+
69
70
# Handle login requests by sending them off to the main site
70
71
def login (request ):
71
72
if 'next' in request .GET :
@@ -79,11 +80,14 @@ def login(request):
79
80
encryptor = AES .new (SHA .new (settings .SECRET_KEY .encode ('ascii' )).digest ()[:16 ], AES .MODE_CBC , iv )
80
81
cipher = encryptor .encrypt (s .encode ('ascii' ) + b' ' * (16 - (len (s ) % 16 ))) # pad to 16 bytes
81
82
82
- return HttpResponseRedirect ("%s?d=%s$%s" % (
83
- settings .PGAUTH_REDIRECT ,
84
- base64 .b64encode (iv , b"-_" ).decode ('utf8' ),
85
- base64 .b64encode (cipher , b"-_" ).decode ('utf8' ),
86
- ))
83
+ return HttpResponseRedirect (
84
+ "%s?d=%s$%s"
85
+ % (
86
+ settings .PGAUTH_REDIRECT ,
87
+ base64 .b64encode (iv , b"-_" ).decode ('utf8' ),
88
+ base64 .b64encode (cipher , b"-_" ).decode ('utf8' ),
89
+ )
90
+ )
87
91
else :
88
92
return HttpResponseRedirect (settings .PGAUTH_REDIRECT )
89
93
@@ -110,9 +114,9 @@ def auth_receive(request):
110
114
111
115
# Set up an AES object and decrypt the data we received
112
116
try :
113
- decryptor = AES .new (base64 . b64decode ( settings . PGAUTH_KEY ),
114
- AES .MODE_CBC ,
115
- base64 . b64decode ( str ( request . GET [ 'i' ]), "-_" ) )
117
+ decryptor = AES .new (
118
+ base64 . b64decode ( settings . PGAUTH_KEY ), AES .MODE_CBC , base64 . b64decode ( str ( request . GET [ 'i' ]), "-_" )
119
+ )
116
120
s = decryptor .decrypt (base64 .b64decode (str (request .GET ['d' ]), "-_" )).rstrip (b' ' ).decode ('utf8' )
117
121
except UnicodeDecodeError :
118
122
return HttpResponse ("Badly encoded data found" , 400 )
@@ -126,7 +130,7 @@ def auth_receive(request):
126
130
return HttpResponse ("Invalid encrypted data received." , status = 400 )
127
131
128
132
# Check the timestamp in the authentication
129
- if ( int (data ['t' ][0 ]) < time .time () - 10 ) :
133
+ if int (data ['t' ][0 ]) < time .time () - 10 :
130
134
return HttpResponse ("Authentication token too old." , status = 400 )
131
135
132
136
# Update the user record (if any)
@@ -153,7 +157,8 @@ def auth_receive(request):
153
157
# somehow fix that live, give a proper error message and
154
158
# have somebody look at it manually.
155
159
if User .objects .filter (email = data ['e' ][0 ]).exists ():
156
- return HttpResponse ("""A user with email %s already exists, but with
160
+ return HttpResponse (
161
+ """A user with email %s already exists, but with
157
162
a different username than %s.
158
163
159
164
This is almost certainly caused by some legacy data in our database.
@@ -162,7 +167,10 @@ def auth_receive(request):
162
167
for you.
163
168
164
169
We apologize for the inconvenience.
165
- """ % (data ['e' ][0 ], data ['u' ][0 ]), content_type = 'text/plain' )
170
+ """
171
+ % (data ['e' ][0 ], data ['u' ][0 ]),
172
+ content_type = 'text/plain' ,
173
+ )
166
174
167
175
if getattr (settings , 'PGAUTH_CREATEUSER_CALLBACK' , None ):
168
176
res = getattr (settings , 'PGAUTH_CREATEUSER_CALLBACK' )(
@@ -176,12 +184,13 @@ def auth_receive(request):
176
184
if res :
177
185
return res
178
186
179
- user = User (username = data ['u' ][0 ],
180
- first_name = data ['f' ][0 ],
181
- last_name = data ['l' ][0 ],
182
- email = data ['e' ][0 ],
183
- password = 'setbypluginnotasha1' ,
184
- )
187
+ user = User (
188
+ username = data ['u' ][0 ],
189
+ first_name = data ['f' ][0 ],
190
+ last_name = data ['l' ][0 ],
191
+ email = data ['e' ][0 ],
192
+ password = 'setbypluginnotasha1' ,
193
+ )
185
194
user .save ()
186
195
187
196
auth_user_created_from_upstream .send (sender = auth_receive , user = user )
@@ -193,17 +202,17 @@ def auth_receive(request):
193
202
django_login (request , user )
194
203
195
204
# Signal that we have information about this user
196
- auth_user_data_received .send (sender = auth_receive , user = user , userdata = {
197
- 'secondaryemails' : data ['se' ][0 ].split (',' ) if 'se' in data else []
198
- } )
205
+ auth_user_data_received .send (
206
+ sender = auth_receive , user = user , userdata = { 'secondaryemails' : data ['se' ][0 ].split (',' ) if 'se' in data else []}
207
+ )
199
208
200
209
# Finally, check of we have a data package that tells us where to
201
210
# redirect the user.
202
211
if 'd' in data :
203
212
(ivs , datas ) = data ['d' ][0 ].split ('$' )
204
- decryptor = AES .new (SHA . new ( settings . SECRET_KEY . encode ( 'ascii' )). digest ()[: 16 ],
205
- AES .MODE_CBC ,
206
- base64 . b64decode ( ivs , b"-_" ) )
213
+ decryptor = AES .new (
214
+ SHA . new ( settings . SECRET_KEY . encode ( 'ascii' )). digest ()[: 16 ], AES .MODE_CBC , base64 . b64decode ( ivs , b"-_" )
215
+ )
207
216
s = decryptor .decrypt (base64 .b64decode (datas , "-_" )).rstrip (b' ' ).decode ('utf8' )
208
217
try :
209
218
rdata = parse_qs (s , strict_parsing = True )
@@ -267,7 +276,8 @@ def _conditionally_update_record(rectype, recordkey, structkey, fieldmap, struct
267
276
for u in pushstruct .get ('users' , []):
268
277
user = _conditionally_update_record (
269
278
User ,
270
- 'username' , 'username' ,
279
+ 'username' ,
280
+ 'username' ,
271
281
{
272
282
'firstname' : 'first_name' ,
273
283
'lastname' : 'last_name' ,
@@ -278,9 +288,20 @@ def _conditionally_update_record(rectype, recordkey, structkey, fieldmap, struct
278
288
279
289
# Signal that we have information about this user (only if it exists)
280
290
if user :
281
- auth_user_data_received .send (sender = auth_api , user = user , userdata = {
282
- k : u [k ] for k in u .keys () if k not in ['firstname' , 'lastname' , 'email' , ]
283
- })
291
+ auth_user_data_received .send (
292
+ sender = auth_api ,
293
+ user = user ,
294
+ userdata = {
295
+ k : u [k ]
296
+ for k in u .keys ()
297
+ if k
298
+ not in [
299
+ 'firstname' ,
300
+ 'lastname' ,
301
+ 'email' ,
302
+ ]
303
+ },
304
+ )
284
305
285
306
return HttpResponse ("OK" , status = 200 )
286
307
@@ -311,9 +332,7 @@ def user_search(searchterm=None, userid=None):
311
332
(ivs , datas ) = r .text .encode ('utf8' ).split (b'&' )
312
333
313
334
# Decryption time
314
- decryptor = AES .new (base64 .b64decode (settings .PGAUTH_KEY ),
315
- AES .MODE_CBC ,
316
- base64 .b64decode (ivs , "-_" ))
335
+ decryptor = AES .new (base64 .b64decode (settings .PGAUTH_KEY ), AES .MODE_CBC , base64 .b64decode (ivs , "-_" ))
317
336
s = decryptor .decrypt (base64 .b64decode (datas , "-_" )).rstrip (b' ' ).decode ('utf8' )
318
337
j = json .loads (s )
319
338
@@ -324,9 +343,11 @@ def user_search(searchterm=None, userid=None):
324
343
def subscribe_to_user_changes (userid ):
325
344
socket .setdefaulttimeout (10 )
326
345
327
- body = json .dumps ({
328
- 'u' : userid ,
329
- })
346
+ body = json .dumps (
347
+ {
348
+ 'u' : userid ,
349
+ }
350
+ )
330
351
331
352
h = hmac .digest (
332
353
base64 .b64decode (settings .PGAUTH_KEY ),
0 commit comments