diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminUi.java b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminUi.java index a85c9d740..81f13055a 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/AdminUi.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/AdminUi.java @@ -26,9 +26,7 @@ import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import freemarker.template.TemplateExceptionHandler; -import org.libreccm.core.CoreConstants; -import org.libreccm.security.AuthorizationRequired; -import org.libreccm.security.RequiresPrivilege; +import org.libreccm.security.Shiro; import java.io.IOException; import java.io.StringWriter; @@ -44,9 +42,11 @@ import javax.ws.rs.NotFoundException; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; +import javax.ws.rs.RedirectionException; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriBuilder; /** * @@ -62,6 +62,9 @@ public class AdminUi { @Inject private ServletContext servletContext; + @Inject + private Shiro shiro; + private Configuration configuration; @PostConstruct @@ -89,8 +92,8 @@ public class AdminUi { @GET @Path("/") @Produces(MediaType.TEXT_HTML) - @AuthorizationRequired - @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) +// @AuthorizationRequired +// @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) public String getDashboard() { return getApp("dashboard"); } @@ -98,9 +101,21 @@ public class AdminUi { @GET @Path("/{appName}") @Produces(MediaType.TEXT_HTML) - @AuthorizationRequired - @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) +// @AuthorizationRequired +// @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) public String getApp(@PathParam("appName") final String appName) { + if (!shiro.getUser().isPresent() + || !shiro.getSubject().isAuthenticated()) { + final UriBuilder uriBuilder = UriBuilder.fromUri("/ccm/register"); + uriBuilder.queryParam( + "return_url", + String.format("%s/@admin", servletContext.getContextPath()) + ); + throw new RedirectionException( + Response.Status.TEMPORARY_REDIRECT, uriBuilder.build() + ); + } + final AdminUiApp app = adminUiApps .getAdminUiApp(appName) .orElseThrow( @@ -125,6 +140,7 @@ public class AdminUi { final Map data = new HashMap<>(); data.put("adminUiApps", adminUiApps.getAdminUiApps()); data.put("activeApp", app); + data.put("currentUser", shiro.getUser().get()); final StringWriter writer = new StringWriter(); try { diff --git a/ccm-core/src/main/resources/org/libreccm/ui/admin.properties b/ccm-core/src/main/resources/org/libreccm/ui/admin.properties index 9778dafd5..d9f1be638 100644 --- a/ccm-core/src/main/resources/org/libreccm/ui/admin.properties +++ b/ccm-core/src/main/resources/org/libreccm/ui/admin.properties @@ -14,6 +14,7 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA - +dashboard.label=Dashboard +dashboard.description=Dashboard systeminformation.label=System Information systeminformation.description=Shows several system properties \ No newline at end of file diff --git a/ccm-core/src/main/resources/org/libreccm/ui/admin_de.properties b/ccm-core/src/main/resources/org/libreccm/ui/admin_de.properties index 7172f9cdc..6c70ce824 100644 --- a/ccm-core/src/main/resources/org/libreccm/ui/admin_de.properties +++ b/ccm-core/src/main/resources/org/libreccm/ui/admin_de.properties @@ -16,4 +16,6 @@ # MA 02110-1301 USA systeminformation.label=System Informationen -systeminformation.description=Zeigt verschiedene Eigenschaften des Systems \ No newline at end of file +systeminformation.description=Zeigt verschiedene Eigenschaften des Systems +dashboard.label=\u00dcbersicht +dashboard.description=\u00dcbersicht diff --git a/ccm-core/src/main/resources/templates/admin-ui/admin-ui.html.ftl b/ccm-core/src/main/resources/templates/admin-ui/admin-ui.html.ftl index 2466e9e08..edbe119b8 100644 --- a/ccm-core/src/main/resources/templates/admin-ui/admin-ui.html.ftl +++ b/ccm-core/src/main/resources/templates/admin-ui/admin-ui.html.ftl @@ -5,9 +5,55 @@

Admin UI

+

+ Current user ${currentUser.name} +