Hello Community,
I want to create a user macro which mirrors the task report macro but sets the currently logged in user automatic as parameter, so basically its the taskreport macro but it gets dynamic for each user.
My problem is i habve no access to any user variable.
I created following debug macro:
## User Context Debug Macro
<style>
.debug-section {
margin: 20px 0;
padding: 15px;
border: 2px solid #ddd;
background: #f9f9f9;
}
.debug-section h3 {
margin-top: 0;
color: #205081;
}
.success { color: #14892c; font-weight: bold; }
.fail { color: #d04437; }
.code {
background: #fff;
padding: 5px;
border-left: 3px solid #205081;
font-family: monospace;
margin: 5px 0;
}
</style>
<h2>🔍 Ultimate User Context Debug</h2>
<div class="debug-section">
<h3>1. Request Object ($req)</h3>
<div class="code">$req.remoteUser = <span class="success">$!req.remoteUser</span></div>
<div class="code">$req.getRemoteUser() = <span class="success">$!req.getRemoteUser()</span></div>
<div class="code">$req.userPrincipal = <span class="success">$!req.userPrincipal</span></div>
<div class="code">$req.userPrincipal.name = <span class="success">$!req.userPrincipal.name</span></div>
<div class="code">$req.getAttribute("user") = <span class="success">$!req.getAttribute("user")</span></div>
<div class="code">$req.getAttribute("remoteUser") = <span class="success">$!req.getAttribute("remoteUser")</span></div>
<div class="code">$req.session.getAttribute("seraph_defaultauthenticator_user") = <span class="success">$!req.session.getAttribute("seraph_defaultauthenticator_user")</span></div>
</div>
<div class="debug-section">
<h3>2. Context Object ($context)</h3>
<div class="code">$context.user = <span class="success">$!context.user</span></div>
<div class="code">$context.user.name = <span class="success">$!context.user.name</span></div>
<div class="code">$context.user.fullName = <span class="success">$!context.user.fullName</span></div>
<div class="code">$context.user.key = <span class="success">$!context.user.key</span></div>
<div class="code">$context.user.email = <span class="success">$!context.user.email</span></div>
<div class="code">$context.getUser() = <span class="success">$!context.getUser()</span></div>
<div class="code">$context.remoteUser = <span class="success">$!context.remoteUser</span></div>
</div>
<div class="debug-section">
<h3>3. Action Object ($action)</h3>
<div class="code">$action.remoteUser = <span class="success">$!action.remoteUser</span></div>
<div class="code">$action.getRemoteUser() = <span class="success">$!action.getRemoteUser()</span></div>
<div class="code">$action.remoteUser.name = <span class="success">$!action.remoteUser.name</span></div>
<div class="code">$action.remoteUser.fullName = <span class="success">$!action.remoteUser.fullName</span></div>
<div class="code">$action.remoteUser.key = <span class="success">$!action.remoteUser.key</span></div>
<div class="code">$action.authenticatedUser = <span class="success">$!action.authenticatedUser</span></div>
<div class="code">$action.getAuthenticatedUser() = <span class="success">$!action.getAuthenticatedUser()</span></div>
<div class="code">$action.targetUser = <span class="success">$!action.targetUser</span></div>
</div>
<div class="debug-section">
<h3>4. User Accessor ($userAccessor)</h3>
#set($testUsername = $req.remoteUser)
#if($testUsername)
<div class="code">$userAccessor.getUser($testUsername) = <span class="success">$!userAccessor.getUser($testUsername)</span></div>
<div class="code">$userAccessor.getUserByName($testUsername) = <span class="success">$!userAccessor.getUserByName($testUsername)</span></div>
<div class="code">$userAccessor.getUserByName($testUsername).key = <span class="success">$!userAccessor.getUserByName($testUsername).key</span></div>
<div class="code">$userAccessor.getUserByName($testUsername).fullName = <span class="success">$!userAccessor.getUserByName($testUsername).fullName</span></div>
#else
<div class="fail">Kein Username verfügbar zum Testen</div>
#end
</div>
<div class="debug-section">
<h3>5. User Manager ($userManager)</h3>
#if($testUsername)
<div class="code">$userManager.getUser($testUsername) = <span class="success">$!userManager.getUser($testUsername)</span></div>
<div class="code">$userManager.getRemoteUser() = <span class="success">$!userManager.getRemoteUser()</span></div>
#else
<div class="fail">Kein Username verfügbar</div>
#end
</div>
<div class="debug-section">
<h3>6. Content Object ($content)</h3>
<div class="code">$content.lastModifier = <span class="success">$!content.lastModifier</span></div>
<div class="code">$content.lastModifier.name = <span class="success">$!content.lastModifier.name</span></div>
<div class="code">$content.lastModifier.fullName = <span class="success">$!content.lastModifier.fullName</span></div>
<div class="code">$content.lastModifier.key = <span class="success">$!content.lastModifier.key</span></div>
<div class="code">$content.creator = <span class="success">$!content.creator</span></div>
<div class="code">$content.creator.name = <span class="success">$!content.creator.name</span></div>
</div>
<div class="debug-section">
<h3>7. Authentication Context ($authenticationContext)</h3>
<div class="code">$authenticationContext = <span class="success">$!authenticationContext</span></div>
<div class="code">$authenticationContext.getUser() = <span class="success">$!authenticationContext.getUser()</span></div>
<div class="code">$authenticationContext.getLoggedInUser() = <span class="success">$!authenticationContext.getLoggedInUser()</span></div>
<div class="code">$authenticationContext.user = <span class="success">$!authenticationContext.user</span></div>
<div class="code">$authenticationContext.user.name = <span class="success">$!authenticationContext.user.name</span></div>
</div>
<div class="debug-section">
<h3>8. Session ($session)</h3>
<div class="code">$session = <span class="success">$!session</span></div>
<div class="code">$session.getAttribute("user") = <span class="success">$!session.getAttribute("user")</span></div>
<div class="code">$session.getAttribute("confluence.user") = <span class="success">$!session.getAttribute("confluence.user")</span></div>
</div>
<div class="debug-section">
<h3>9. Bootstrap Manager ($bootstrapManager)</h3>
<div class="code">$bootstrapManager = <span class="success">$!bootstrapManager</span></div>
<div class="code">$bootstrapManager.getAuthenticatedUser() = <span class="success">$!bootstrapManager.getAuthenticatedUser()</span></div>
<div class="code">$bootstrapManager.getCurrentUser() = <span class="success">$!bootstrapManager.getCurrentUser()</span></div>
</div>
<div class="debug-section">
<h3>10. ComponentLocator / ComponentManager</h3>
<div class="code">$componentLocator = <span class="success">$!componentLocator</span></div>
<div class="code">$containerManager = <span class="success">$!containerManager</span></div>
</div>
<div class="debug-section">
<h3>11. Direct Java Access Attempts</h3>
#set($authCtx = $action.class.forName("com.atlassian.confluence.security.login.LoginManager"))
<div class="code">LoginManager via reflection = <span class="fail">$!authCtx</span></div>
</div>
<div class="debug-section">
<h3>12. Stack Variables</h3>
<div class="code">$stack = <span class="success">$!stack</span></div>
<div class="code">$stack.findValue("remoteUser") = <span class="success">$!stack.findValue("remoteUser")</span></div>
</div>
<div class="debug-section">
<h3>13. Helper Variables</h3>
<div class="code">$helper = <span class="success">$!helper</span></div>
<div class="code">$helper.user = <span class="success">$!helper.user</span></div>
<div class="code">$helper.remoteUser = <span class="success">$!helper.remoteUser</span></div>
</div>
<div class="debug-section">
<h3>✅ Following methods work</h3>
<p>Die folgenden Methoden zeigen Werte an:</p>
<ul>
#if($req.remoteUser)<li class="success">✓ $req.remoteUser = $req.remoteUser</li>#end
#if($context.user)<li class="success">✓ $context.user.name = $context.user.name</li>#end
#if($action.remoteUser)<li class="success">✓ $action.remoteUser.name = $action.remoteUser.name</li>#end
#if($authenticationContext.user)<li class="success">✓ $authenticationContext.user.name = $authenticationContext.user.name</li>#end
</ul>
#if(!$req.remoteUser && !$context.user && !$action.remoteUser)
<p class="fail"><strong>⚠️No methods workt!</strong></p>
#end
</div>
but none of the methods show any value except the $content.lastModifier shows the correct value but i need the curretnly logged in User not the last modifier of the page.
Thank you for your help!
BR David