def handle_request(self, auth, path, get_vars, post_vars): if path == "login": redirect(self.get_login_url()) elif path == "callback": self._handle_callback(auth, get_vars) else: abort(404)
def _handle_callback(self, auth, get_vars): data = self.callback(get_vars) if not data: abort(401) error = data.get("error") if error: if isinstance(error, str): code, msg = 401, error else: code = error.get("code", 401) msg = error.get("message", "Unknown error") abort(code, msg) if auth.db: # map returned fields into auth_user fields user = {} for key, value in self.maps.items(): value, parts = data, value.split(".") for part in parts: value = value[int(part) if part.isdigit() else part] user[key] = value user["sso_id"] = "%s:%s" % (self.name, user["sso_id"]) if not "username" in user: user["username"] = user["sso_id"] # store or retrieve the user data = auth.get_or_register_user(user) else: # WIP Allow login without DB if not "id" in data: data["id"] = data.get("username") or data.get("email") user_id = data.get("id") auth.store_user_in_session(user_id) redirect(URL("index"))
def handle_request(self, auth, path, get_vars, post_vars): if path == "login": self.next = request.query.get('next') or URL('index') redirect(self.get_login_url()) elif path == "callback": self._handle_callback(auth, get_vars) else: abort(404)
def handle_request(self, auth, path, get_vars, post_vars): if path == "login": auth.session["_next"] = request.query.get("next") or URL("index") redirect(self.get_login_url()) elif path == "callback": self._handle_callback(auth, get_vars) else: abort(404)
def wrapper(): kwargs = self.parse_request(func, **defaults) name = self._hash(func, **dict(kwargs, **self.params)) self.filename = f"{name}{self.EXT}" rec = db.fcache(name=name) commit = False if rec is None: stream = get_stream() if settings.CACHE_NEW: try: newid = db.fcache.insert(name=name, file=db.fcache.file.store( stream, self.filename)) except AttributeError: raise self.time_expire = settings.CACHE_EXPIRE - ( self.now - now()).seconds return stream.read() else: rec = db.fcache[newid] commit = True else: self.time_expire = settings.CACHE_EXPIRE - (self.now - now()).seconds return stream.read() elif (self.now - rec.modified_on).seconds > ( rec.timeout or settings.CACHE_EXPIRE): stream = get_stream() rec.update(file=db.fcache.file.store(stream, self.filename)) commit = True self.time_expire = (rec.timeout or settings.CACHE_EXPIRE) - ( self.now - rec.modified_on).seconds if commit: db.commit() if self.public and not stream_public: _, path_to_img = db.fcache.file.retrieve(rec.file, nameonly=True) rpath = path_to_img[path_to_img.index('static'):] redirect(f'/{app_name}/{rpath}') else: _, stream = db.fcache.file.retrieve(rec.file, nameonly=False) return stream.read()
def _handle_callback(self, auth, get_vars): data = self.callback(get_vars) if not data or 'error' in data: abort(401) if auth.db: # map returned fields into auth_user fields user = {} for key, value in self.maps.items(): value, parts = data, value.split('.') for part in parts: value = value[int(part) if part.isdigit() else part] user[key] = value user['sso_id'] = '%s:%s' % (self.name, user['sso_id']) # store or retrieve the user data = auth.get_or_register_user(user) else: # WIP Allow login without DB if not 'id' in data: data['id'] = data.get('username') or data.get('email') auth.session['user'] = data redirect(URL('index'))
def _handle_callback(self, auth, get_vars): data = self.callback(get_vars) if not data or "error" in data: abort(401) if auth.db: # map returned fields into auth_user fields user = {} for key, value in self.maps.items(): value, parts = data, value.split(".") for part in parts: value = value[int(part) if part.isdigit() else part] user[key] = value user["sso_id"] = "%s:%s" % (self.name, user["sso_id"]) # store or retrieve the user data = auth.get_or_register_user(user) else: # WIP Allow login without DB if not "id" in data: data["id"] = data.get("username") or data.get("email") auth.session["user"] = data redirect(URL("index"))