Repository: syncope Updated Branches: refs/heads/master 36cc7725f -> 80248d5bd
Fixed SYNCOPE-708 Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/89b54dad Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/89b54dad Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/89b54dad Branch: refs/heads/master Commit: 89b54dad90942a9cf3a83bc9ccc7a19c14c4b914 Parents: 6852628 Author: massi <[email protected]> Authored: Wed Oct 14 11:41:39 2015 +0200 Committer: massi <[email protected]> Committed: Wed Oct 14 11:41:39 2015 +0200 ---------------------------------------------------------------------- .../syncope/common/lib/types/Entitlement.java | 4 +++ .../apache/syncope/core/logic/LoggerLogic.java | 26 ++++++++++++++++++++ .../rest/cxf/service/LoggerServiceImpl.java | 16 ++++++------ .../fit/core/reference/ConfigurationITCase.java | 1 - .../fit/core/reference/LoggerITCase.java | 16 ++++++++++++ 5 files changed, 55 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/89b54dad/common/lib/src/main/java/org/apache/syncope/common/lib/types/Entitlement.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/types/Entitlement.java b/common/lib/src/main/java/org/apache/syncope/common/lib/types/Entitlement.java index 406b805..20b8347 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/types/Entitlement.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/types/Entitlement.java @@ -222,6 +222,8 @@ public final class Entitlement { public static final String REPORT_EXECUTE = "REPORT_EXECUTE"; + public static final String LOG_READ = "LOG_READ"; + public static final String LOG_LIST = "LOG_LIST"; public static final String LOG_SET_LEVEL = "LOG_SET_LEVEL"; @@ -230,6 +232,8 @@ public final class Entitlement { public static final String AUDIT_LIST = "AUDIT_LIST"; + public static final String AUDIT_READ = "AUDIT_READ"; + public static final String AUDIT_ENABLE = "AUDIT_ENABLE"; public static final String AUDIT_DISABLE = "AUDIT_DISABLE"; http://git-wip-us.apache.org/repos/asf/syncope/blob/89b54dad/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java index d7a4dd7..30e7374 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java @@ -134,6 +134,32 @@ public class LoggerLogic extends AbstractTransactionalLogic<LoggerTO> { throw sce; } + @PreAuthorize("hasRole('" + Entitlement.LOG_READ + "') and authentication.details.domain == " + + "T(org.apache.syncope.common.lib.SyncopeConstants).MASTER_DOMAIN") + @Transactional(readOnly = true) + public LoggerTO readLog(final String name) { + for (final LoggerTO logger : listLogs()) { + if (logger.getKey().equals(name)) { + return logger; + } + } + throw new NotFoundException("Logger " + name); + } + + @PreAuthorize("hasRole('" + Entitlement.AUDIT_READ + "')") + @Transactional(readOnly = true) + public LoggerTO readAudit(final String name) { + for (final AuditLoggerName logger : listAudits()) { + if (logger.toLoggerName().equals(name)) { + final LoggerTO loggerTO = new LoggerTO(); + loggerTO.setKey(logger.toLoggerName()); + loggerTO.setLevel(LoggerLevel.DEBUG); + return loggerTO; + } + } + throw new NotFoundException("Logger " + name); + } + private LoggerTO setLevel(final String name, final Level level, final LoggerType expectedType) { Logger syncopeLogger = loggerDAO.find(name); if (syncopeLogger == null) { http://git-wip-us.apache.org/repos/asf/syncope/blob/89b54dad/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java index 4379754..32ae12c 100644 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java +++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java @@ -21,7 +21,6 @@ package org.apache.syncope.core.rest.cxf.service; import java.text.ParseException; import java.util.List; import javax.ws.rs.BadRequestException; -import javax.ws.rs.NotFoundException; import org.apache.syncope.common.lib.to.EventCategoryTO; import org.apache.syncope.common.lib.to.LoggerTO; import org.apache.syncope.common.lib.types.AuditLoggerName; @@ -76,13 +75,16 @@ public class LoggerServiceImpl extends AbstractServiceImpl implements LoggerServ @Override public LoggerTO read(final LoggerType type, final String name) { - List<LoggerTO> logger = list(type); - for (LoggerTO l : logger) { - if (l.getKey().equals(name)) { - return l; - } + switch (type) { + case LOG: + return logic.readLog(name); + + case AUDIT: + return logic.readAudit(name); + + default: + throw new BadRequestException(); } - throw new NotFoundException(); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/89b54dad/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConfigurationITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConfigurationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConfigurationITCase.java index 4635be5..68761cd 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConfigurationITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConfigurationITCase.java @@ -85,7 +85,6 @@ public class ConfigurationITCase extends AbstractITCase { actual = configurationService.get(tokenLength.getSchema()); assertEquals(actual, tokenLength); - } @Test http://git-wip-us.apache.org/repos/asf/syncope/blob/89b54dad/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java index fb93618..6655342 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/LoggerITCase.java @@ -22,9 +22,13 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; import java.text.ParseException; import java.util.List; +import javax.ws.rs.core.Response; +import javax.xml.ws.WebServiceException; +import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.EventCategoryTO; import org.apache.syncope.common.lib.to.LoggerTO; import org.apache.syncope.common.lib.types.AnyTypeKind; @@ -211,4 +215,16 @@ public class LoggerITCase extends AbstractITCase { } assertTrue(found); } + + @Test + public void issueSYNCOPE708() { + try { + loggerService.read(LoggerType.LOG, "notExists"); + fail("Read a not exists logger, it should go in exception"); + } catch (final WebServiceException ex) { + fail("Exception is WebServiceException but it should be SyncopeClientException"); + } catch (final SyncopeClientException ex) { + assertEquals(Response.Status.NOT_FOUND, ex.getType().getResponseStatus()); + } + } }
