|
421 | 421 | " if not skip: skip = [redir_path,error_path,login_path]\n",
|
422 | 422 | " store_attr()\n",
|
423 | 423 | " def before(req, session):\n",
|
424 |
| - " token = session.pop('token', None)\n", |
425 | 424 | " auth = req.scope['auth'] = session.get('auth')\n",
|
426 |
| - " if not auth: return RedirectResponse(self.login_path, status_code=303)\n", |
427 |
| - "\n", |
| 425 | + " if not auth: return self.redir_login(session)\n", |
| 426 | + " res = self.check_invalid(req, session, auth)\n", |
| 427 | + " if res: return res\n", |
428 | 428 | " app.before.append(Beforeware(before, skip=skip))\n",
|
429 | 429 | "\n",
|
430 | 430 | " @app.get(redir_path)\n",
|
|
433 | 433 | " scheme = 'http' if url_match(req.url,self.http_patterns) or not self.https else 'https'\n",
|
434 | 434 | " base_url = f\"{scheme}://{req.url.netloc}\"\n",
|
435 | 435 | " info = AttrDictDefault(cli.retr_info(code, base_url+redir_path))\n",
|
436 |
| - " if not self._chk_auth(req, info, session): return RedirectResponse(self.login_path, status_code=303)\n", |
437 |
| - " return self.login(info, state, session=session)\n", |
| 436 | + " ident = info.get(self.cli.id_key)\n", |
| 437 | + " if not ident: return self.redir_login(session)\n", |
| 438 | + " res = self.get_auth(info, ident, session, state)\n", |
| 439 | + " if not res: return self.redir_login(session)\n", |
| 440 | + " req.scope['auth'] = session['auth'] = ident\n", |
| 441 | + " return res\n", |
438 | 442 | "\n",
|
439 | 443 | " @app.get(logout_path)\n",
|
440 | 444 | " def logout(session):\n",
|
441 | 445 | " session.pop('auth', None)\n",
|
442 | 446 | " return self.logout(session)\n",
|
443 | 447 | "\n",
|
| 448 | + " def redir_login(self, session): return RedirectResponse(self.login_path, status_code=303)\n", |
444 | 449 | " def redir_url(self, req):\n",
|
445 | 450 | " scheme = 'http' if url_match(req.url,self.http_patterns) or not self.https else 'https'\n",
|
446 | 451 | " return redir_url(req, self.redir_path, scheme)\n",
|
447 | 452 | "\n",
|
448 | 453 | " def login_link(self, req, scope=None, state=None): return self.cli.login_link(self.redir_url(req), scope=scope, state=state)\n",
|
449 |
| - "\n", |
450 |
| - " def login(self, info, state, session): raise NotImplementedError()\n", |
451 |
| - " def logout(self, session): return RedirectResponse(self.login_path, status_code=303)\n", |
452 |
| - " def chk_auth(self, info, ident, session): raise NotImplementedError()\n", |
453 |
| - " def _chk_auth(self, req, info, session):\n", |
454 |
| - " ident = info.get(self.cli.id_key)\n", |
455 |
| - " if not ident and self.chk_auth(info, ident, session): return print('failed', info)\n", |
456 |
| - " req.scope['auth'] = session['auth'] = ident\n", |
457 |
| - " return True" |
| 454 | + " def check_invalid(self, req, session, auth): return False\n", |
| 455 | + " def logout(self, session): return self.redir_login(session)\n", |
| 456 | + " def get_auth(self, info, ident, session, state): raise NotImplementedError()" |
458 | 457 | ]
|
459 | 458 | },
|
460 | 459 | {
|
|
0 commit comments