예제 #1
0
파일: login.py 프로젝트: google/jarvan
def register_token(req):
  """Register new login token.

  Args:
    req: flask request

  Returns:
    object with logged user data
  """
  user = do_login(req.args.get("token"))
  if user["logged"]:
    # save to DB
    n = 256
    found = 1
    while found==1:
      user["hash"] = "".join(random.choices(string.ascii_uppercase +
                                          string.digits, k=n))
      found = db.res_int("select 1 from main_sessions where hash={hash}", { "hash": user["hash"] })

    user_id = "0"
    # get user id
    db.query("UPDATE main_users set status=3 "
             "where email={email} "
             "and status=1 " 
             "and valid_until_date<curdate() ",
             {"email": user["email"] } )

    user_id = db.res("SELECT id from main_users where email={email} and status=1", { "email" :user["email"] })

    auto_create = True

    if (not user_id) and auto_create:
      if user["email"].split("@")[1]!="google.com":
        return {"user": False} 
      #error
      #return {"user": False}
      # creeate new user if needed
      db.query("INSERT into main_users set email={email}, short_name={short_name}, full_name={full_name},"
               "status=1, valid_until_date='2100-01-01'",
              { "email": user["email"], "short_name": user["name"], "full_name": user["full"] })
      user_id = db.res("SELECT id from main_users where email={email}", { "email": user["email"] })

    roles = []
    # save session
    if user_id:
      db.query("INSERT into main_sessions set user_ip={user_ip}, email={email}, name={name}, full_name={full_name}, "
             "created_date=now(), enabled=1, hash={hash}, user_id={user_id}",
             { "user_ip": request.remote_addr, "email": user["email"], "name": user["name"], "full_name": user["full"], "hash": user["hash"],
              "user_id": user_id } )

    user["id"] = user_id

  return {"user": user}
예제 #2
0
파일: j.py 프로젝트: google/jarvan
def get_user_id(req):
    """get current user id.

  Args:
    req: flask request

  Returns:
    String user id
  """
    h = req.values.get("hash")

    user_id = db.res(
        "SELECT user_id from sessions where enabled=1 and hash=%s", (h))
    if not user_id:
        user_id = None
    user_id = "57"
    return user_id
예제 #3
0
파일: login.py 프로젝트: google/jarvan
def validate_token(req):
  """Register new login token.

  Args:
    req: flask request

  Returns:
    object with logged user data
  """
  user_id = db.res(
    "select user_id "
    "from main_sessions "
    "where hash = {hash} and user_ip = {user_ip} and enabled = 1",
    {"hash": req.values.get("t"), "user_ip": request.remote_addr } )

  roles = []
  
  return { "user": { "id":user_id, "roles":roles }} 
예제 #4
0
파일: j.py 프로젝트: google/jarvan
def get_email():
    email = db.res("select email from main_sessions where hash=%s",
                   (get_param("x-token")))
    return email