plugins with the definition of the methods to be implemented.
"""
-__author__ = "Eduardo Sousa <esousa@whitestack.com>"
+__author__ = "Eduardo Sousa <esousa@whitestack.com>, " \
+ "Pedro de la Cruz Ramos <pdelacruzramos@altran.com>"
__date__ = "$27-jul-2018 23:59:59$"
from http import HTTPStatus
-from base_topic import BaseTopic
+from osm_nbi.base_topic import BaseTopic
class AuthException(Exception):
Each Auth backend connector plugin must be a subclass of
Authconn class.
"""
- def __init__(self, config, db, token_cache):
+ def __init__(self, config, db, role_permissions):
"""
Constructor of the Authconn class.
-
- Note: each subclass
-
:param config: configuration dictionary containing all the
necessary configuration parameters.
+ :param db: internal database classs
+ :param role_permissions: read only role permission list
"""
self.config = config
+ self.role_permissions = role_permissions
- def authenticate(self, user, password, project=None, token_info=None):
+ def authenticate(self, credentials, token_info=None):
"""
Authenticate a user using username/password or token_info, 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 credentials: dictionary that contains:
+ username: name, id or None
+ password: password or None
+ project_id: name, id, or None. If None first found project will be used to get an scope token
+ other items are allowed for specific auth backends
:param token_info: previous token_info to obtain authorization
:return: the scoped token info or raises an exception. The token is a dictionary with:
_id: token string id,
:return: returns a list of users.
"""
- def get_user(self, id, fail=True):
- filt = {BaseTopic.id_field("users", id): id}
+ def get_user(self, _id, fail=True):
+ """
+ Get one user
+ :param _id: id or name
+ :param fail: True to raise exception on not found. False to return None on not found
+ :return: dictionary with the user information
+ """
+ filt = {BaseTopic.id_field("users", _id): _id}
users = self.get_user_list(filt)
if not users:
if fail:
"""
raise AuthconnNotImplementedException("Should have implemented this")
- def get_role(self, id, fail=True):
- filt = {BaseTopic.id_field("roles", id): id}
+ def get_role(self, _id, fail=True):
+ """
+ Get one role
+ :param _id: id or name
+ :param fail: True to raise exception on not found. False to return None on not found
+ :return: dictionary with the role information
+ """
+ filt = {BaseTopic.id_field("roles", _id): _id}
roles = self.get_role_list(filt)
if not roles:
if fail:
"""
raise AuthconnNotImplementedException("Should have implemented this")
- def get_project(self, id, fail=True):
- filt = {BaseTopic.id_field("projects", id): id}
+ def get_project(self, _id, fail=True):
+ """
+ Get one project
+ :param _id: id or name
+ :param fail: True to raise exception on not found. False to return None on not found
+ :return: dictionary with the project information
+ """
+ filt = {BaseTopic.id_field("projects", _id): _id}
projs = self.get_project_list(filt)
if not projs:
if fail: