super(AuthconnOperationException, self).__init__(message, http_code)
+class AuthconnNotFoundException(AuthconnException):
+ """
+ The operation executed failed because element not found.
+ """
+ def __init__(self, message, http_code=HTTPStatus.NOT_FOUND):
+ super().__init__(message, http_code)
+
+
+class AuthconnConflictException(AuthconnException):
+ """
+ The operation has conflicts.
+ """
+ def __init__(self, message, http_code=HTTPStatus.CONFLICT):
+ super().__init__(message, http_code)
+
+
class Authconn:
"""
Abstract base class for all the Auth backend connector plugins.
"""
self.config = config
- def authenticate_with_user_password(self, user, password):
+ def authenticate(self, user, password, project=None, token=None):
"""
- Authenticate a user using username and password.
+ Authenticate a user using username/password or token, plus project
+ :param user: user: name, id or None
+ :param password: password or None
+ :param project: name, id, or None. If None first found project will be used to get an scope token
+ :param token: previous token to obtain authorization
+ :return: the scoped token info or raises an exception. The token is a dictionary with:
+ _id: token string id,
+ username: username,
+ project_id: scoped_token project_id,
+ project_name: scoped_token project_name,
+ expires: epoch time when it expires,
- :param user: username
- :param password: password
- :return: an unscoped token that grants access to project list
"""
raise AuthconnNotImplementedException("Should have implemented this")
- def authenticate_with_token(self, token, project=None):
- """
- Authenticate a user using a token. Can be used to revalidate the token
- or to get a scoped token.
-
- :param token: a valid token.
- :param project: (optional) project for a scoped token.
- :return: return a revalidated token, scoped if a project was passed or
- the previous token was already scoped.
- """
- raise AuthconnNotImplementedException("Should have implemented this")
+ # def authenticate_with_token(self, token, project=None):
+ # """
+ # Authenticate a user using a token. Can be used to revalidate the token
+ # or to get a scoped token.
+ #
+ # :param token: a valid token.
+ # :param project: (optional) project for a scoped token.
+ # :return: return a revalidated token, scoped if a project was passed or
+ # the previous token was already scoped.
+ # """
+ # raise AuthconnNotImplementedException("Should have implemented this")
def validate_token(self, token):
"""
"""
raise AuthconnNotImplementedException("Should have implemented this")
- def change_password(self, user, new_password):
+ def update_user(self, user, new_name=None, new_password=None):
"""
- Change the user password.
+ Change the user name and/or password.
- :param user: username.
+ :param user: username or user_id
+ :param new_name: new name
:param new_password: new password.
- :raises AuthconnOperationException: if user password change failed.
+ :raises AuthconnOperationException: if change failed.
"""
raise AuthconnNotImplementedException("Should have implemented this")
"""
raise AuthconnNotImplementedException("Should have implemented this")
- def get_user_list(self):
+ def get_user_list(self, filter_q=None):
"""
Get user list.
+ :param filter_q: dictionary to filter user list by name (username is also admited) and/or _id
:return: returns a list of users.
"""
"""
raise AuthconnNotImplementedException("Should have implemented this")
- def get_role_list(self):
+ def get_role_list(self, filter_q=None):
"""
Get all the roles.
+ :param filter_q: dictionary to filter role list by _id and/or name.
:return: list of roles
"""
raise AuthconnNotImplementedException("Should have implemented this")
+ def update_role(self, role, new_name):
+ """
+ Change the name of a role
+ :param role: role name or id to be changed
+ :param new_name: new name
+ :return: None
+ """
+ raise AuthconnNotImplementedException("Should have implemented this")
+
def create_project(self, project):
"""
Create a project.
:param project: project name.
+ :return: the internal id of the created project
:raises AuthconnOperationException: if project creation failed.
"""
raise AuthconnNotImplementedException("Should have implemented this")
"""
raise AuthconnNotImplementedException("Should have implemented this")
- def get_project_list(self):
+ def get_project_list(self, filter_q=None):
"""
Get all the projects.
+ :param filter_q: dictionary to filter project list, by "name" and/or "_id"
:return: list of projects
"""
raise AuthconnNotImplementedException("Should have implemented this")
+ def update_project(self, project_id, new_name):
+ """
+ Change the name of a project
+ :param project_id: project to be changed
+ :param new_name: new name
+ :return: None
+ """
+ raise AuthconnNotImplementedException("Should have implemented this")
+
def assign_role_to_user(self, user, project, role):
"""
Assigning a role to a user in a project.