A corporation manager and dashboard for EVE Online
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 

37 satır
1.1 KiB

  1. # -*- coding: utf-8 -*-
  2. from flask import g, session, url_for
  3. from itsdangerous import URLSafeSerializer
  4. __all__ = ["AuthManager"]
  5. _SCOPES = ["publicData", "characterAssetsRead"] # ...
  6. class AuthManager:
  7. def __init__(self, config, eve):
  8. self._config = config
  9. self._eve = eve
  10. def _new_session_id(self):
  11. with g.db as conn:
  12. cur = conn.execute("INSERT INTO session DEFAULT VALUES")
  13. return cur.lastrowid
  14. def get_session_id(self):
  15. if "id" not in session:
  16. session["id"] = self._new_session_id()
  17. return session["id"]
  18. def get_state_hash(self):
  19. key = self._config.get("auth.session_key")
  20. serializer = URLSafeSerializer(key)
  21. return serializer.dumps(self.get_session_id())
  22. def make_login_link(self):
  23. cid = self._config.get("auth.client_id")
  24. target = url_for("login", _external=True, _scheme=self._config.scheme)
  25. scopes = _SCOPES
  26. state = self.get_state_hash()
  27. return self._eve.sso.get_authorize_url(cid, target, scopes, state)