Ejemplo n.º 1
0
class CachingUserAPI(object):
    """The public API to secure L{User}-related functionality.

    @param user: The L{User} to perform operations on behalf of.
    """
    def __init__(self):
        self._api = UserAPI(factory=CachingAPIFactory())

    def create(self, values, createPrivateNamespace=None):
        """See L{UserAPI.create}."""
        return self._api.create(values, createPrivateNamespace)

    def delete(self, usernames):
        """See L{UserAPI.delete}."""
        if isgenerator(usernames):
            usernames = list(usernames)
        cache = UserCache()
        for username in usernames:
            cache.clear(username)
        return self._api.delete(usernames)

    def get(self, usernames):
        """See L{UserAPI.get}."""
        return self._api.get(usernames)

    def set(self, values):
        """See L{UserAPI.set}."""
        cache = UserCache()
        for username, password, fullname, email, role in values:
            cache.clear(username)
        return self._api.set(values)
Ejemplo n.º 2
0
class CachingUserAPI(object):
    """The public API to secure L{User}-related functionality.

    @param user: The L{User} to perform operations on behalf of.
    """

    def __init__(self):
        self._api = UserAPI(factory=CachingAPIFactory())

    def create(self, values, createPrivateNamespace=None):
        """See L{UserAPI.create}."""
        return self._api.create(values, createPrivateNamespace)

    def delete(self, usernames):
        """See L{UserAPI.delete}."""
        if isgenerator(usernames):
            usernames = list(usernames)
        cache = UserCache()
        for username in usernames:
            cache.clear(username)
        return self._api.delete(usernames)

    def get(self, usernames):
        """See L{UserAPI.get}."""
        return self._api.get(usernames)

    def set(self, values):
        """See L{UserAPI.set}."""
        cache = UserCache()
        for username, password, fullname, email, role in values:
            cache.clear(username)
        return self._api.set(values)
Ejemplo n.º 3
0
def createUser(username, password, fullname, email, role):
    """Create a new L{User}.

    @param username: A C{unicode} username for the user.
    @param password: A C{unicode} password in plain text for the user. The
        password will be hashed before being stored.
    @param fullname: A C{unicode} name for the user.
    @param email: The C{unicode} email address for the user.
    @param role: The L{Role} for the user.
    @return: A C{list} of C{(objectID, username)} 2-tuples for the new
        L{User}s.
    """
    username = username.lower()
    users = UserAPI()
    result = users.create([(username, password, fullname, email)])
    # Set the role with an update to ensure that the 'fluiddb/users/role' tag
    # value is set correctly.
    users.set([(username, None, None, None, role)])
    try:
        transaction.commit()
    except:
        transaction.abort()
        raise
    return result