fix #847 move to request scope

This commit is contained in:
Shinsuke Sugaya 2017-01-23 23:31:51 +09:00
parent ed4ed3e734
commit d5e8d60cfc

View file

@ -88,6 +88,7 @@ public class RoleQueryHelper {
public Set<String> build(final SearchRequestType searchRequestType) {
final Set<String> roleSet = new HashSet<>();
final HttpServletRequest request = LaRequestUtil.getOptionalRequest().orElse(null);
final FessConfig fessConfig = ComponentUtil.getFessConfig();
final boolean isApiRequest =
!SearchRequestType.SEARCH.equals(searchRequestType) && !SearchRequestType.ADMIN_SEARCH.equals(searchRequestType);
@ -121,22 +122,25 @@ public class RoleQueryHelper {
if (isApiRequest) {
processAccessToken(request, roleSet);
}
}
final FessConfig fessConfig = ComponentUtil.getFessConfig();
final RequestManager requestManager = ComponentUtil.getRequestManager();
try {
requestManager.findUserBean(FessUserBean.class)
.ifPresent(fessUserBean -> stream(fessUserBean.getPermissions()).of(stream -> stream.forEach(roleSet::add)))
.orElse(() -> {
if (isApiRequest && ComponentUtil.getFessConfig().getApiAccessTokenRequiredAsBoolean()) {
throw new InvalidAccessTokenException("invalid_token", "Access token is requried.");
}
roleSet.addAll(fessConfig.getSearchGuestPermissionList());
});
} catch (final RuntimeException e) {
requestManager.findLoginManager(FessUserBean.class).ifPresent(manager -> manager.logout());
throw e;
final RequestManager requestManager = ComponentUtil.getRequestManager();
try {
requestManager.findUserBean(FessUserBean.class)
.ifPresent(fessUserBean -> stream(fessUserBean.getPermissions()).of(stream -> stream.forEach(roleSet::add)))
.orElse(() -> {
if (isApiRequest && ComponentUtil.getFessConfig().getApiAccessTokenRequiredAsBoolean()) {
throw new InvalidAccessTokenException("invalid_token", "Access token is requried.");
}
roleSet.addAll(fessConfig.getSearchGuestPermissionList());
});
} catch (final RuntimeException e) {
try {
requestManager.findLoginManager(FessUserBean.class).ifPresent(manager -> manager.logout());
} catch (Exception e1) {
// ignore
}
throw e;
}
}
if (defaultRoleList != null) {