示例#1
0
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)
示例#2
0
文件: auth.py 项目: bkad/prat
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'))
示例#3
0
文件: auth.py 项目: gkoo/prat
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())
示例#4
0
文件: auth.py 项目: tobert/oochat
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())
示例#5
0
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)
示例#6
0
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())
示例#7
0
文件: auth.py 项目: tobert/oochat
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())
示例#8
0
文件: frontend.py 项目: stevetan/prat
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)
示例#9
0
文件: eventhub.py 项目: ytamura/prat
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]))
示例#10
0
文件: eventhub.py 项目: bkad/prat
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]))