Hallo Andreas,
auf einfachem Weg ist es nicht möglich, den aktuellen Benutzer zu ermitteln. Da die Preview auf dem Server läuft, wirst du immer den Benutzer "SYSTEM" erhalten. Du benötigst daher ein Skript, das im WebEdit-Kontext läuft.
Skript getUser:
//!Beanshell
import de.espirit.firstspirit.agency.UserAgent;
UserAgent userAgent = context.requireSpecialist(UserAgent.TYPE);
return userAgent.getUser().getId();
Dieses Skript musst du in deiner Seitenvorlage über folgenden Code aufrufen:
<script type="text/javascript">
var sitemap = jQuery.parseJSON('{ $CMS_VALUE(fr_jsonnav.toString.quoteJS())$ }');
window.parent.WE_API.Common.execute(
"script:get_user",
{},
function(userId) {
$("#module-list").append(renderfolder(sitemap, userId));
});
function renderfolder(folder, userId) {
var result = "";
for (subfolder in folder) {
rights = folder[subfolder].rights
if ($.inArray(userId, rights) >= 0) {
url = folder[subfolder].url;
result = result + "<li><a href=\"" + url + "\">" + subfolder + "</a>";
children = folder[subfolder].children;
if (children != null) {
result = result + "<ul>";
result = result + renderfolder(children,userId);
result = result + "</ul>";
}
result = result + "</li>";
}
}
return result;
}
</script>
Damit müsstest du den gewünschten User erhalten.
Mir ist noch aufgefallen, dass du - wie du schreibst - auf das "CAN_SEE"-Recht prüfst. Dieses bestimmt nur, ob der User die Struktur sehen kann. Einem User, der sehen (CAN_SEE), aber nicht lesen (CAN_READ) darf, würde in deinem Fall eine weiße Seite angezeigt werden.
Meiner Meinung nach wäre es also besser, auf das Leserecht zu prüfen, welches auch das Sichtbarkeitsrecht impliziert.
Viele Grüße
Michaela