[Zope] repost: standard_error_message and roles
Danny William Adair
danny@adair.net
Tue, 29 May 2001 11:57:26 +1200
Hi!
Strange behavior...
While customizing my standard_error_message, I ran into a problem: Someone
with the role "Member" is logged in and tries to access a resource that
does not exist. Same could happen to someone who doesn't have that role
(Anonymous). Now I have two different style sheets for members and
non-members: A member might click on a broken link from within the
members-only area (having a... pink background), the anonymous user clicked
the same broken link from a publicly accessible area of the site (having
a... silver background). I would like to keep the different background
colors when showing my error message so I put a
<dtml-if "AUTHENTICATED_USER.has_role('Member')">
<dtml-var "members_css">
<dtml-else>
<dtml-var "public_css">
</dtml-if>
in the head section of standard_error_message (these *_css are ZStyleSheets)
My problem is, that it's always the public_css that's used.
So I checked with
<dtml-var "AUTHENTICATED_USER.getRoles()">
in both the members area and standard_error_message. To my surprise the
member role was gone:
In the members area - after authentication - getRoles() returned
('Member',)
while in standard_error_message ( _.str(error_type)=='NotFound' ) it returned
('Anonymous',)
btw, the role is not really "lost", I can go back to the members area and
click through members-only pages without problems.
What's happening?