class IDMTokenProcessor(object): def __init__(self): if IDM_SUPPORT_ENABLED: self.openstack_manager = OpenstackTokenManager(getattr(settings, 'FIWARE_CLOUD_SERVER', FIWARE_LAB_CLOUD_SERVER)) def process_request(self, request): headers = ['fiware-oauth-token', 'x-fi-ware-oauth-token', 'fiware-openstack-token'] filtered = [header for header in headers if header in request['headers']] if len(filtered) == 0: return for header in filtered: del request['headers'][header] if not IDM_SUPPORT_ENABLED: raise ValidationError(_('IdM support not enabled')) elif request['workspace'] is None: raise ValidationError(_('IdM tokens can only be inyected on Ajax requests coming from authorized widgets')) tenantid = request['headers'].get("fiware-openstack-tenant-id") source = 'user' if 'fiware-oauth-source' in request['headers']: source = request['headers']['fiware-oauth-source'] del request['headers']['fiware-oauth-source'] elif 'x-fi-ware-oauth-source' in request['headers']: source = request['headers']['x-fi-ware-oauth-source'] del request['headers']['x-fi-ware-oauth-source'] if source == 'user': token = get_access_token(request['user'], _('Current user has not an active FIWARE profile')) if 'fiware-openstack-token' in filtered: openstacktoken = self.openstack_manager.get_token(request['user'], tenantid) elif source == 'workspaceowner': token = get_access_token(request['workspace'].creator, _('Workspace owner has not an active FIWARE profile')) if 'fiware-openstack-token' in filtered: openstacktoken = self.openstack_manager.get_token(request['workspace'].creator, tenantid) else: raise ValidationError(_('Invalid FIWARE OAuth token source')) if 'fiware-oauth-token' in filtered or 'x-fi-ware-oauth-token' in filtered: replace_get_parameter(request, ["fiware-oauth-get-parameter", "x-fi-ware-oauth-get-parameter"], token) replace_header_name(request, ["fiware-oauth-header-name", "x-fi-ware-oauth-header-name"], token) replace_body_pattern(request, ["fiware-oauth-body-pattern", "x-fi-ware-oauth-token-body-pattern"], token) if 'fiware-openstack-token' in filtered: replace_get_parameter(request, ["fiware-openstack-get-parameter"], openstacktoken) replace_header_name(request, ["fiware-openstack-header-name"], openstacktoken) replace_body_pattern(request, ["fiware-openstack-body-pattern"], openstacktoken)
def __init__(self): if IDM_SUPPORT_ENABLED: self.openstack_manager = OpenstackTokenManager( getattr(settings, 'FIWARE_CLOUD_SERVER', FIWARE_LAB_CLOUD_SERVER))
def __init__(self): if IDM_SUPPORT_ENABLED: self.openstack_manager = OpenstackTokenManager(getattr(settings, 'FIWARE_CLOUD_SERVER', FIWARE_LAB_CLOUD_SERVER))