display address on editing
and minor related tweaks
This commit is contained in:
parent
9ef47b2833
commit
d27b50afa0
3 changed files with 21 additions and 8 deletions
|
@ -17,6 +17,8 @@ import jakarta.enterprise.context.ApplicationScoped;
|
|||
import jakarta.enterprise.inject.Alternative;
|
||||
import jakarta.inject.Inject;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@Alternative
|
||||
@Priority(1)
|
||||
@ApplicationScoped
|
||||
|
@ -26,7 +28,7 @@ public class MyHttpAuthenticationMechanism implements HttpAuthenticationMechanis
|
|||
|
||||
@Override
|
||||
public Uni<SecurityIdentity> authenticate(RoutingContext context, IdentityProviderManager identityProviderManager) { // TODO handle ip accounts
|
||||
return Uni.createFrom().item(() -> {
|
||||
return Uni.createFrom().item((Supplier<SecurityIdentity>) () -> {
|
||||
Cookie cookie = context.request().getCookie("session-token");
|
||||
|
||||
if (cookie != null) {
|
||||
|
@ -36,17 +38,18 @@ public class MyHttpAuthenticationMechanism implements HttpAuthenticationMechanis
|
|||
if (session != null) {
|
||||
Account account = session.getAccount();
|
||||
|
||||
QuarkusSecurityIdentity identity = QuarkusSecurityIdentity.builder()
|
||||
return QuarkusSecurityIdentity.builder()
|
||||
.setPrincipal(new QuarkusPrincipal(account.getName()))
|
||||
.addRoles(account.getRoles())
|
||||
.addAttribute("session", session)
|
||||
.build();
|
||||
|
||||
return (SecurityIdentity) identity;
|
||||
}
|
||||
}
|
||||
|
||||
return (SecurityIdentity) QuarkusSecurityIdentity.builder().setAnonymous(true).build();
|
||||
return QuarkusSecurityIdentity.builder()
|
||||
.setAnonymous(true)
|
||||
.addAttribute("address", context.request().remoteAddress().hostAddress())
|
||||
.build();
|
||||
}).runSubscriptionOn(Infrastructure.getDefaultWorkerPool());
|
||||
}
|
||||
|
||||
|
|
|
@ -8,10 +8,20 @@ import io.quarkus.security.identity.SecurityIdentity;
|
|||
|
||||
@TemplateExtension(namespace = "user")
|
||||
public class AuthExtension {
|
||||
public static boolean loggedIn() {
|
||||
SecurityIdentity identity = getIdentity();
|
||||
return !identity.isAnonymous();
|
||||
}
|
||||
|
||||
public static String name() {
|
||||
SecurityIdentity identity = getIdentity();
|
||||
return identity.isAnonymous() ? identity.getAttribute("address") : identity.getPrincipal().getName();
|
||||
}
|
||||
|
||||
|
||||
private static SecurityIdentity getIdentity() {
|
||||
try (InstanceHandle<CurrentIdentityAssociation> handle = Arc.container().instance(CurrentIdentityAssociation.class)) {
|
||||
SecurityIdentity identity = handle.get().getIdentity();
|
||||
return identity.isAnonymous() ? null : identity.getPrincipal().getName();
|
||||
return handle.get().getIdentity();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
<ul>
|
||||
<li><a href="/edit">Create a page</a></li>
|
||||
{#if user:name == null}
|
||||
{#if !user:loggedIn}
|
||||
<li><a href="/auth">Login or register</a></li>
|
||||
{#else}
|
||||
<li><a href="/auth/logout">Logout ({user:name})</a></li>
|
||||
|
|
Loading…
Reference in a new issue