#include "ServiceProvider.h"
#include "SessionCache.h"
#include "attribute/Attribute.h"
+#include "attribute/filtering/AttributeFilter.h"
+#include "attribute/filtering/BasicFilteringContext.h"
#include "attribute/resolver/AttributeExtractor.h"
#include "attribute/resolver/AttributeResolver.h"
#include "attribute/resolver/ResolutionContext.h"
for_each(m_SAML1Designators.begin(), m_SAML1Designators.end(), xmltooling::cleanup<AttributeDesignator>());
for_each(m_SAML2Designators.begin(), m_SAML2Designators.end(), xmltooling::cleanup<saml2::Attribute>());
}
+
+ Lockable* lock() {return this;}
+ void unlock() {}
ResolutionContext* createResolutionContext(
const Application& application,
return new QueryContext(application,session);
}
- Lockable* lock() {return this;}
- void unlock() {}
-
void resolveAttributes(ResolutionContext& ctx) const;
private:
Locker extlocker(extractor);
extractor->extractAttributes(ctx.getApplication(), AA, *newtoken, ctx.getResolvedAttributes());
}
+
+ AttributeFilter* filter = ctx.getApplication().getAttributeFilter();
+ if (filter) {
+ BasicFilteringContext fc(ctx.getApplication(), AA);
+ Locker filtlocker(filter);
+ filter->filterAttributes(fc, ctx.getResolvedAttributes());
+ }
}
catch (exception& ex) {
m_log.error("caught exception extracting/filtering attributes from query result: %s", ex.what());
+ for_each(ctx.getResolvedAttributes().begin(), ctx.getResolvedAttributes().end(), cleanup_pair<string,shibsp::Attribute>());
+ ctx.getResolvedAttributes().clear();
}
return true;
Locker extlocker(extractor);
extractor->extractAttributes(ctx.getApplication(), AA, *newtoken, ctx.getResolvedAttributes());
}
+
+ AttributeFilter* filter = ctx.getApplication().getAttributeFilter();
+ if (filter) {
+ BasicFilteringContext fc(ctx.getApplication(), AA);
+ Locker filtlocker(filter);
+ filter->filterAttributes(fc, ctx.getResolvedAttributes());
+ }
}
catch (exception& ex) {
m_log.error("caught exception extracting/filtering attributes from query result: %s", ex.what());
+ for_each(ctx.getResolvedAttributes().begin(), ctx.getResolvedAttributes().end(), cleanup_pair<string,shibsp::Attribute>());
+ ctx.getResolvedAttributes().clear();
}
return true;