def __authing_login(provider): try: # https://docs.authing.cn/authing/social-login/web/github # code: 错误或成功代码,200 为成功,非 200 为失败 # message: 成功或错误信息 # data: userInfo,若 code 为非 200 不返回此参数 code = request.args.get('code') message = request.args.get('message') if (code != "200"): log.info("Login with authing:%s failed with code: %s, message: %s " % (provider, code, message)) return __login_failed(provider) data = request.args.get('data') user_info = json.loads(data) user_name = user_info["username"] log.info("Login with authing:%s successfully. Sending user info `%s` to hackathon server." % (provider, user_name)) remote_user = login_manager_helper.authing(user_info) login_user(remote_user) token = user_info["token"] session["token"] = token if session.get("return_url") is not None: resp = make_response(redirect(session["return_url"])) session["return_url"] = None else: resp = make_response(redirect(url_for("index"))) resp.set_cookie('token', token) return resp except Exception as ex: log.error(ex) return __login_failed(provider)
def logout(self, token): try: requests.delete(self.login_url, headers={"token": token}) except Exception as e: log.error(e) session.pop("token", "") logout_user()
def load_user(self, id): try: req = requests.get(self.login_url, {"id": id}) login_user = User(json.loads(req.content)) return login_user except Exception as e: log.error(e) return None
def db_logout(self, admin): try: self.db.update_object(admin, online=0) self.db.commit() return True except Exception as e: log.error(e) return False
def __remote_login(self, data): try: req = requests.post(self.login_url, json=data, headers=self.headers) resp = req.json() if "error" in resp: log.debug("login failed: %r" % resp) return None else: login_user = User(resp["user"]) token = resp["token"] return {"user": login_user, "token": token["token"]} except Exception as e: log.error(e) return None
def __remote_login(self, data): try: req = requests.post(self.login_url, json=data, headers=self.headers) resp = req.json() if "error" in resp: log.debug("login failed: %r" % resp) return None else: login_user = User(resp["user"]) token = resp["token"] return { "user": login_user, "token": token["token"] } except Exception as e: log.error(e) return None
def authing(self, user_info): try: req = requests.post(self.authing_url, json=user_info, headers=self.headers) resp = req.json() if resp: # if login isn't successful, it will return None login_user = User(resp) log.debug("Login successfully %s" % login_user.get_user_id()) return login_user else: log.debug("login failed: %r" % resp) return None except Exception as e: log.error(e) return None
def __remote_login(self, data): try: req = requests.post(self.login_url, json=data, headers=self.headers) resp = req.json() if resp: # if login isn't successful, it will return None login_user = User(resp["user"]) token = resp["token"] log.debug("Login successfully %s" % login_user.get_user_id()) return {"user": login_user, "token": token["token"]} else: log.debug("login failed: %r" % resp) return None except Exception as e: log.error(e) return None
def __login(provider): code = request.args.get("code") try: admin_with_token = login_providers[provider].login({"code": code}) if admin_with_token is None: return __login_failed(provider) log.info("login successfully:" + repr(admin_with_token)) token = admin_with_token["token"].token login_user(admin_with_token["admin"]) session["token"] = token if session.get("return_url") is not None: resp = make_response(redirect(session["return_url"])) session["return_url"] = None else: resp = make_response(redirect(url_for("index"))) resp.set_cookie("token", token) return resp except Exception as ex: log.error(ex) return __login_failed(provider)
def __login(provider): try: user_with_token = login_manager_helper.login(provider) if user_with_token is None: return __login_failed(provider) log.info("login successfully:" + repr(user_with_token)) token = user_with_token["token"] login_user(user_with_token["user"]) session["token"] = token if session.get("return_url") is not None: resp = make_response(redirect(session["return_url"])) session["return_url"] = None else: resp = make_response(redirect(url_for("index"))) resp.set_cookie("token", token) return resp except Exception as ex: log.error(ex) return __login_failed(provider)
def __login(provider): try: user_with_token = login_manager_helper.login(provider) if user_with_token is None: return __login_failed(provider) log.info("login successfully:" + repr(user_with_token)) token = user_with_token["token"] login_user(user_with_token["user"]) session["token"] = token if session.get("return_url") is not None: resp = make_response(redirect(session["return_url"])) session["return_url"] = None else: resp = make_response(redirect(url_for("index"))) resp.set_cookie('token', token) return resp except Exception as ex: log.error(ex) return __login_failed(provider)
def __login(provider): code = request.args.get('code') try: admin_with_token = login_providers[provider].login({"code": code}) if admin_with_token is None: return __login_failed(provider) log.info("login successfully:" + repr(admin_with_token)) token = admin_with_token["token"].token login_user(admin_with_token["admin"]) session["token"] = token if session.get("return_url") is not None: resp = make_response(redirect(session["return_url"])) session["return_url"] = None else: resp = make_response(redirect(url_for("index"))) resp.set_cookie('token', token) return resp except Exception as ex: log.error(ex) return __login_failed(provider)
def log_error(self, msg, *args, **kwargs): if self.quiet == False: log.error(msg, *args, **kwargs)