KB56 Add login button and status box.
Change-Id: I72658014b2198a1a01ffa02ad4bafcdf9d66ab2b
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/login/LoginResource.java b/src/main/java/eu/mulk/mulkcms2/benki/login/LoginResource.java
new file mode 100644
index 0000000..53fbcf6
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/login/LoginResource.java
@@ -0,0 +1,24 @@
+package eu.mulk.mulkcms2.benki.login;
+
+import io.quarkus.security.Authenticated;
+import java.net.URI;
+import java.net.URISyntaxException;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Response;
+import org.jboss.logging.Logger;
+
+@Path("/login")
+public class LoginResource {
+
+ private static final Logger log = Logger.getLogger(LoginResource.class);
+
+ @GET
+ @Authenticated
+ public Response getRoot(@HeaderParam("referer") @DefaultValue("/posts") String referer)
+ throws URISyntaxException {
+ return Response.seeOther(new URI(referer)).build();
+ }
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/login/LoginStatus.java b/src/main/java/eu/mulk/mulkcms2/benki/login/LoginStatus.java
new file mode 100644
index 0000000..06a184c
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/login/LoginStatus.java
@@ -0,0 +1,23 @@
+package eu.mulk.mulkcms2.benki.login;
+
+import io.quarkus.qute.TemplateData;
+import io.quarkus.security.identity.SecurityIdentity;
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+@Named("LoginStatus")
+@RequestScoped
+@TemplateData
+public class LoginStatus {
+
+ @Inject SecurityIdentity identity;
+
+ public boolean loggedIn() {
+ return !identity.isAnonymous();
+ }
+
+ public String getUserName() {
+ return identity.getPrincipal().getName();
+ }
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
index 2ffcdd5..7b2395d 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
@@ -64,7 +64,7 @@
}
@GET
- @Path("/{pageName}")
+ @Path("{pageName}")
@Produces(TEXT_HTML)
@Authenticated
public TemplateInstance getPage(@PathParam("pageName") String pageName) {
@@ -82,7 +82,7 @@
}
@POST
- @Path("/{pageName}")
+ @Path("{pageName}")
@Authenticated
@Transactional
@Produces(APPLICATION_JSON)
@@ -136,7 +136,7 @@
}
@GET
- @Path("/{pageName}/revisions")
+ @Path("{pageName}/revisions")
@Produces(TEXT_HTML)
@Authenticated
public TemplateInstance getPageRevisions(@PathParam("pageName") String pageName) {
diff --git a/src/main/resources/META-INF/resources/cms2/base.css b/src/main/resources/META-INF/resources/cms2/base.css
index bad03b6..06873d5 100644
--- a/src/main/resources/META-INF/resources/cms2/base.css
+++ b/src/main/resources/META-INF/resources/cms2/base.css
@@ -125,7 +125,7 @@
z-index: 1;
}
-body > nav > ol > li > a {
+body > nav > ol > li > * {
text-decoration: none;
display: block;
padding: 5px;
@@ -136,10 +136,19 @@
background-color: #f8f8f8;
}
-body > nav li[data-site-section="About"] {
+body > nav li[data-site-section="About"], body > nav li[data-site-section="Login"] {
margin-top: 1em;
}
+.login-text {
+ font-style: italic;
+}
+
+.login-name {
+ font-style: normal;
+ font-family: cursive;
+}
+
body > main {
grid-area: main;
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index a38af40..e966bda 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -28,6 +28,8 @@
%prod.quarkus.hibernate-orm.log.sql = false
# Authentication
+quarkus.http.auth.proactive = true
+
quarkus.oidc.auth-server-url = https://login.benkard.de/auth/realms/master
quarkus.oidc.client-id = mulkcms
quarkus.oidc.application-type = web-app
diff --git a/src/main/resources/templates/tags/navbar.html b/src/main/resources/templates/tags/navbar.html
index a6ba163..0259362 100644
--- a/src/main/resources/templates/tags/navbar.html
+++ b/src/main/resources/templates/tags/navbar.html
@@ -5,5 +5,17 @@
<li class='{#if siteSection == "Bookmarks"}this-page{/} indented' data-site-section="Bookmarks"><a href="/bookmarks">Bookmarks</a></li>
<li class='{#if siteSection == "Lazy Chat"}this-page{/} indented' data-site-section="Lazy Chat"><a href="/lazychat">Lazy Chat</a></li>
<li class='{#if siteSection == "Wiki"}this-page{/}' data-site-section="Wiki"><a href="/wiki/Home">Wiki</a></li>
+
<li class='{#if siteSection == "About"}this-page{/}' data-site-section="About"><a href="/about">Contact Info</a></li>
+
+ {#if inject:LoginStatus.loggedIn}
+ <li class='{#if siteSection == "Login"}this-page{/} login-box logged-in' data-site-section="Login">
+ <div class="login-text">Logged in as: <span class="login-name">{inject:LoginStatus.userName}</span></div>
+ </li>
+ {#else}
+ <li class='{#if siteSection == "Login"}this-page{/} login-box logged-out' data-site-section="Login">
+ <div class="login-text">Not logged in.</div>
+ <a href="/login">Log In</a>
+ </li>
+ {/if}
</ol>