Example #1
0
def get(context, request, username=None):
    """Plone users route
    """
    # Don't allow anonymous users to query a user other than themselves
    if api.is_anonymous():
        username = "******"

    # query all users if no username was given
    if username is None:
        users = api.get_users()
    elif username == "current":
        users = [api.get_current_user()]
    else:
        users = [api.get_user(username)]

    # Prepare batch
    size = req.get_batch_size()
    start = req.get_batch_start()
    batch = api.make_batch(users, size, start)

    # get the user info for the user ids in the current batch
    users = map(get_user_info, batch.get_batch())

    return {
        "pagesize": batch.get_pagesize(),
        "next": batch.make_next_url(),
        "previous": batch.make_prev_url(),
        "page": batch.get_pagenumber(),
        "pages": batch.get_numpages(),
        "count": batch.get_sequence_length(),
        "items": users,
    }
Example #2
0
def get(context, request, username=None):
    """Plone users route
    """
    # Don't allow anonymous users to query a user other than themselves
    if api.is_anonymous():
        username = "******"

    # query all users if no username was given
    if username is None:
        users = api.get_users()
    elif username == "current":
        users = [api.get_current_user()]
    else:
        users = [api.get_user(username)]

    # Prepare batch
    size = req.get_batch_size()
    start = req.get_batch_start()
    batch = api.make_batch(users, size, start)

    # get the user info for the user ids in the current batch
    users = map(get_user_info, batch.get_batch())

    return {
        "pagesize": batch.get_pagesize(),
        "next": batch.make_next_url(),
        "previous": batch.make_prev_url(),
        "page": batch.get_pagenumber(),
        "pages": batch.get_numpages(),
        "count": batch.get_sequence_length(),
        "items": users,
    }
Example #3
0
def get_user_info(user):
    """Get the user information
    """
    user = api.get_user(user)
    current = api.get_current_user()

    if api.is_anonymous():
        return {
            "username":
            current.getUserName(),
            "authenticated":
            False,
            "roles":
            current.getRoles(),
            "api_url":
            api.url_for("plone.jsonapi.routes.users", username="******"),
        }

    # nothing to do
    if user is None:
        logger.warn("No user found for {}".format(user))
        return None

    # plone user
    pu = user.getUser()

    info = {
        "username":
        user.getUserName(),
        "roles":
        user.getRoles(),
        "groups":
        pu.getGroups(),
        "authenticated":
        current == user,
        "api_url":
        api.url_for("plone.jsonapi.routes.users", username=user.getId()),
    }

    for k, v in api.get_user_properties(user).items():
        if api.is_date(v):
            v = api.to_iso_date(v)
        if not api.is_json_serializable(v):
            logger.warn(
                "User property '{}' is not JSON serializable".format(k))
            continue
        info[k] = v

    return info
Example #4
0
def get_user_info(user):
    """Get the user information
    """
    user = api.get_user(user)
    current = api.get_current_user()

    if api.is_anonymous():
        return {
            "username": current.getUserName(),
            "authenticated": False,
            "roles": current.getRoles(),
            "api_url": api.url_for("plone.jsonapi.routes.users", username="******"),
        }

    # nothing to do
    if user is None:
        logger.warn("No user found for {}".format(user))
        return None

    # plone user
    pu = user.getUser()

    info = {
        "username": user.getUserName(),
        "roles": user.getRoles(),
        "groups": pu.getGroups(),
        "authenticated": current == user,
        "api_url": api.url_for("plone.jsonapi.routes.users", username=user.getId()),
    }

    for k, v in api.get_user_properties(user).items():
        if api.is_date(v):
            v = api.to_iso_date(v)
        if not api.is_json_serializable(v):
            logger.warn("User property '{}' is not JSON serializable".format(k))
            continue
        info[k] = v

    return info
 def test_get_current_user(self):
     user = api.get_current_user()
     self.assertEqual(user.id, TEST_USER_ID)
Example #6
0
 def test_get_current_user(self):
     user = api.get_current_user()
     self.assertEqual(user.id, TEST_USER_ID)