Форум сайта python.su
Попробовал на основе мануала и репозитория bbru сделать таки систему аутентификации.
Вроде даже что-то заработало.
Главный вопрос:
Требуется перенаправить админа после логина на админский скин.
Как в коде определить, имеет ли пользователь определённый пермишн или роль, или нет?
Вот такая глупость:
principal = pau.authenticate(self.request)
interaction = zope.securitypolicy.zopepolicy.ZopeSecurityPolicy()
val = interaction.checkPermission('zope.Manage', principal)
Офлайн
не понимаю
зарегистрировал стандартный вид:
<browser:defaultView
for="zope.security.interfaces.IUnauthorized"
layer="uralexpont.skin.interfaces.IUENTLayer"
name="index"
/>
<browser:page
name="index"
for="zope.security.interfaces.IUnauthorized"
permission="zope.Public"
class=".login.Unauthorized"
layer="uralexpont.skin.interfaces.IUENTLayer"
/>
class Unauthorized(BrowserPage):
template = ViewPageTemplateFile('unauthorized.pt')
def __call__(self):
# Set the error status to 403 (Forbidden) in the case when we don't
# challenge the user
self.request.response.setStatus(403)
# make sure that squid does not keep the response in the cache
self.request.response.setHeader('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT')
self.request.response.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate')
self.request.response.setHeader('Pragma', 'no-cache')
principal = self.request.principal
auth = getUtility(IAuthentication)
auth.unauthorized(principal.id, self.request)
if self.request.response.getStatus() not in (302, 303):
return self.template()
Офлайн
Пермишны проверяю так:
<span tal:condition="python: modules['zope.security.management'].checkPermission('PERMISSION_NAME', context)"></span>
Офлайн