Ejemplo n.º 1
0
def check_and_set_session(role):
    """
    To check whether the session exists for the specific role
    in redis cache

    If does not exists, redirect the user/admin to respective login pages

    To store the retrieved session in the flask session object
    :param role:
    :type str

    :return:
    """
    if session and "_id" in session:
        session_id = get_session_id(role)
        if redis.get(session_id) is None:
            set_redirect_uri(role)
        else:
            custom_session = get_redis_session_data(session_id)
            print custom_session, "#" * 200
            session["admin"] = custom_session["admin"]
            session["user_id"] = custom_session["user_id"]
            session["email"] = custom_session["email"]
            session['_id'] = custom_session["_id"]
            session["loggedin"] = True
            login_manager.error = False
    else:
        set_redirect_uri(role)
Ejemplo n.º 2
0
def expire_redis_session(role):
    """
    To Remove the session data from the redis database

    Clears the session, if there is no admin/user logged in
    using the particular session id
    :param role: role of the logged_in user
    :type str
    """
    if session and "_id" in session:
        session_id = get_session_id(role)
        admin_session_id, user_session_id = get_session_id(
            admin_role), get_session_id(user_role)
        redis.delete(session_id)
        if redis.get(admin_session_id) is None and redis.get(
                user_session_id) is None:
            session.clear()
Ejemplo n.º 3
0
def get_redis_session_data(session_id):
    """
    To Retrieve the session data from redis database
    :param session_id: Key which is used to query redis database
    :type str

    :return: Session data
    """
    custom_session = pickle.loads(redis.get(session_id))
    update_expiry_time(session_id)
    return custom_session
Ejemplo n.º 4
0
def check_loggedin(role):
    """
    To check whether the user/admin is logged in
    :param role: Role value of the user
    :type  str

    :return:
    """
    if session and "_id" in session:
        session_id = get_session_id(role)
        if redis.get(session_id) is not None:
            return True

    return False
Ejemplo n.º 5
0
def update_expiry_time(key, expires_in=expires_in):
    """
    To track the idle session time-out

    If the user is actively using the session, then
    TTL for redis session data will be updated based on the
    update condition

    :param key: Key to search in redis database
    :type str

    :param expires_in: Time To Live
    :type int
    :return:
    """
    if redis.get(key) is None:
        value = {}
    else:
        value = pickle.loads(redis.get(key))

    redis.set(key,
              pickle.dumps(value),
              ex=redis.ttl(key) + (expires_in - redis.ttl(key)))
Ejemplo n.º 6
0
def set_redis_session(role, force=False):
    """
    To set the session data in the redis database
    :param role: Role value of the user(admin/user)
    :type str

    :return:
    """
    user_session = dict(session)
    session_id = get_session_id(role)
    if force:
        redis.set(name=session_id,
                  value=pickle.dumps(user_session),
                  ex=int(expires_in))
        return True

    redis_session = redis.get(session_id)
    if redis_session is None and not force:
        redis.set(name=session_id,
                  value=pickle.dumps(user_session),
                  ex=int(expires_in))