def index(): join_channel = request.args.get("channel") if join_channel: g.user["last_selected_channel"] = join_channel add_user_to_channel(g.user, join_channel) channels = g.user["channels"] last_selected_channel = g.user["last_selected_channel"] username = g.user["email"].split("@")[0] right_sidebar_closed = (request.args.get("rightSidebar") or request.cookies.get("rightSidebar")) == "closed" left_sidebar_closed = (request.args.get("leftSidebar") or request.cookies.get("leftSidebar")) == "closed" context = { "username": username, "email": g.user["email"], "channels": channels, "last_selected_channel": last_selected_channel, "right_sidebar_closed": right_sidebar_closed, "left_sidebar_closed": left_sidebar_closed, "preferences": get_user_preferences(g.user), "imgur_client_id": current_app.config["IMGUR_CLIENT_ID"], "collapse_time_window": current_app.config["COLLAPSED_MESSAGE_TIME_WINDOW"], "name": current_app.config["APP_NAME"], "websocket_keep_alive_interval": current_app.config["WEBSOCKET_KEEP_ALIVE_INTERVAL"], } if current_app.config["REWRITE_MAIN_TEMPLATE"]: write_main_template() headers = { "Cache-Control": "no-store", } return (render_square_bracket_template("index.htmljinja", { "initial": context }), 200, headers)
def oauth_callback(provider): if g.authed is True: return redirect(url_for('frontend.index')) oauth = OAuthSignIn.get_provider(provider) username, email = oauth.callback() if email is None: flash('Authentication failed.') return redirect(url_for('frontend.index')) user = None session["email"] = email user = get_user(email=email) if user is not None: g.user = user else: default_channels = current_app.config["DEFAULT_CHANNELS"] gravatar_url = "//www.gravatar.com/avatar/" + md5(email.lower()).hexdigest() + "?" gravatar_url += urllib.urlencode({ 's':str(18) }) user_object = { "openid": "authed", "name": username, "email": email, "gravatar": gravatar_url, "last_selected_channel": default_channels[0], "channels": default_channels, "api_key": str(uuid.uuid4()), "secret": str(uuid.uuid4()), } db.users.save(user_object) for channel in default_channels: add_user_to_channel(user_object, channel) send_join_channel(channel, user_object, push_socket) g.user = user_object return redirect(url_for('frontend.index'))
def create_or_login(resp): user = None session["email"] = resp.email user = get_user(email=resp.email) if user is not None: g.user = user else: default_channels = current_app.config["DEFAULT_CHANNELS"] gravatar_url = "//www.gravatar.com/avatar/" + md5(resp.email.lower()).hexdigest() + "?" gravatar_url += urllib.urlencode({ 's':str(18) }) user_object = { "openid": resp.identity_url, "name": resp.fullname or resp.nickname, "email": resp.email, "gravatar": gravatar_url, "last_selected_channel": default_channels[0], "channels": default_channels, "api_key": str(uuid.uuid4()), "secret": str(uuid.uuid4()), } db.users.save(user_object) for channel in default_channels: add_user_to_channel(user_object, channel) send_join_channel(channel, user_object, push_socket) g.user = user_object return redirect(oid.get_next_url())
def create_or_login(resp): user = None session["email"] = resp.email user = db.users.find_one({"email": resp.email}) if user is not None: g.user = user else: default_channels = current_app.config["DEFAULT_CHANNELS"] gravatar_url = "http://www.gravatar.com/avatar/" + md5( resp.email.lower()).hexdigest() + "?" gravatar_url += urllib.urlencode({'s': str(18)}) user_object = { "openid": resp.identity_url, "name": resp.fullname or resp.nickname, "email": resp.email, "gravatar": gravatar_url, "last_selected_channel": default_channels[0], "channels": default_channels, "api_key": str(uuid.uuid4()), "secret": str(uuid.uuid4()), } db.users.save(user_object) push_socket = zmq_context.socket(zmq.PUSH) push_socket.connect(current_app.config["PUSH_ADDRESS"]) for channel in default_channels: add_user_to_channel(user_object, channel) send_join_channel(channel, user_object, push_socket) push_socket.close() g.user = user_object flash(u'Successfully logged in') return redirect(oid.get_next_url())
def index(): join_channel = request.args.get("channel") if join_channel: g.user["last_selected_channel"] = join_channel add_user_to_channel(g.user, join_channel) channels = g.user["channels"] last_selected_channel = g.user["last_selected_channel"] username = g.user["email"].split("@")[0] right_sidebar_closed = (request.args.get("rightSidebar") or request.cookies.get("rightSidebar")) == "closed" left_sidebar_closed = (request.args.get("leftSidebar") or request.cookies.get("leftSidebar")) == "closed" context = { "username": username, "email": g.user["email"], "channels": channels, "last_selected_channel": last_selected_channel, "right_sidebar_closed": right_sidebar_closed, "left_sidebar_closed": left_sidebar_closed, "preferences": get_user_preferences(g.user), } if current_app.config["REWRITE_MAIN_TEMPLATE"]: write_main_template() return render_square_bracket_template("index.htmljinja", context)
def create_or_login(resp): user = None session["email"] = resp.email user = get_user(email=resp.email) if user is not None: g.user = user else: default_channels = current_app.config["DEFAULT_CHANNELS"] gravatar_url = "//www.gravatar.com/avatar/" + md5( resp.email.lower()).hexdigest() + "?" gravatar_url += urllib.urlencode({'s': str(18)}) user_object = { "openid": resp.identity_url, "name": resp.fullname or resp.nickname, "email": resp.email, "gravatar": gravatar_url, "last_selected_channel": default_channels[0], "channels": default_channels, "api_key": str(uuid.uuid4()), "secret": str(uuid.uuid4()), } db.users.save(user_object) for channel in default_channels: add_user_to_channel(user_object, channel) send_join_channel(channel, user_object, push_socket) g.user = user_object return redirect(oid.get_next_url())
def create_or_login(resp): user = None session["email"] = resp.email user = db.users.find_one({ "email" : resp.email }) if user is not None: g.user = user else: default_channels = current_app.config["DEFAULT_CHANNELS"] gravatar_url = "http://www.gravatar.com/avatar/" + md5(resp.email.lower()).hexdigest() + "?" gravatar_url += urllib.urlencode({ 's':str(18) }) user_object = { "openid": resp.identity_url, "name": resp.fullname or resp.nickname, "email": resp.email, "gravatar": gravatar_url, "last_selected_channel": default_channels[0], "channels": default_channels, "api_key": str(uuid.uuid4()), "secret": str(uuid.uuid4()), } db.users.save(user_object) push_socket = zmq_context.socket(zmq.PUSH) push_socket.connect(current_app.config["PUSH_ADDRESS"]) for channel in default_channels: add_user_to_channel(user_object, channel) send_join_channel(channel, user_object, push_socket) push_socket.close() g.user = user_object flash(u'Successfully logged in') return redirect(oid.get_next_url())
def index(): join_channel = request.args.get("channel") if join_channel: g.user["last_selected_channel"] = join_channel add_user_to_channel(g.user, join_channel) channels = g.user["channels"] last_selected_channel = g.user["last_selected_channel"] username = g.user["email"].split("@")[0] right_sidebar_closed = (request.args.get("rightSidebar") or request.cookies.get("rightSidebar")) == "closed" left_sidebar_closed = (request.args.get("leftSidebar") or request.cookies.get("leftSidebar")) == "closed" context = { "username": username, "email": g.user["email"], "channels": channels, "last_selected_channel": last_selected_channel, "right_sidebar_closed": right_sidebar_closed, "left_sidebar_closed": left_sidebar_closed, "preferences": get_user_preferences(g.user), } if current_app.config["REWRITE_MAIN_TEMPLATE"]: write_main_template() headers = { "Cache-Control": "no-store", } return (render_square_bracket_template("index.htmljinja", context), 200, headers)
def handle_join_channel(channel, subscribe_socket, push_socket, client_id): add_user_to_channel(g.user, channel) set_user_channel_status(g.user, channel, "active") channel_id = zmq_channel_key(channel) send_join_channel(channel, g.user, push_socket) # subscribe to events happening on this channel subscribe_socket.setsockopt(zmq.SUBSCRIBE, channel_id) join_channel_event = { "action": "join_channel", "data": { "channel": channel, "user": { "email": g.user["email"], "gravatar": g.user["gravatar"], "name": g.user["name"], "username": g.user["email"].split("@")[0], "status": "active", }, }, } # alert channel subscribers to new user packed_join_channel = json.dumps(join_channel_event) push_socket.send(" ".join([channel_id, packed_join_channel])) # alert the user's other open clients of the change self_join_channel_event = { "action": "self_join_channel", "data": { "client_id": client_id, "channel": channel, "channel_id": channel_id, }, } packed_self_join_channel = json.dumps(self_join_channel_event) push_socket.send(" ".join([str(g.user["email"]), packed_self_join_channel]))