appy.gen: implemented ToolMixin.performLogin (inspired from Plone authentication), minor bugfix while redirecting user to a page that must display a global status message; logged every translation deletion.
This commit is contained in:
parent
91c657238d
commit
6473ca8ef0
|
@ -868,7 +868,33 @@ class ToolMixin(BaseMixin):
|
||||||
'''Gets the translated month name of month numbered p_monthNumber.'''
|
'''Gets the translated month name of month numbered p_monthNumber.'''
|
||||||
return self.translate(self.monthsIds[int(monthNumber)], domain='plone')
|
return self.translate(self.monthsIds[int(monthNumber)], domain='plone')
|
||||||
|
|
||||||
def logout(self):
|
def performLogin(self):
|
||||||
|
'''Logs the user in.'''
|
||||||
|
rq = self.REQUEST
|
||||||
|
jsEnabled = rq.get('js_enabled', False) in ('1', 1)
|
||||||
|
cookiesEnabled = rq.get('cookies_enabled', False) in ('1', 1)
|
||||||
|
urlBack = rq['HTTP_REFERER']
|
||||||
|
|
||||||
|
if jsEnabled and not cookiesEnabled:
|
||||||
|
msg = self.translate(u'You must enable cookies before you can ' \
|
||||||
|
'log in.', domain='plone')
|
||||||
|
return self.goto(urlBack, msg.encode('utf-8'))
|
||||||
|
|
||||||
|
# Perform the Zope-level authentication
|
||||||
|
self.acl_users.credentials_cookie_auth.login()
|
||||||
|
login = rq['login_name']
|
||||||
|
if self.portal_membership.isAnonymousUser():
|
||||||
|
rq.RESPONSE.expireCookie('__ac', path='/')
|
||||||
|
msg = self.translate(u'Login failed', domain='plone')
|
||||||
|
logMsg = 'Authentication failed (tried with login "%s")' % login
|
||||||
|
else:
|
||||||
|
msg = self.translate(u'Welcome! You are now logged in.',
|
||||||
|
domain='plone')
|
||||||
|
logMsg = 'User "%s" has been logged in.' % login
|
||||||
|
self.log(logMsg)
|
||||||
|
return self.goto(rq['HTTP_REFERER'], msg.encode('utf-8'))
|
||||||
|
|
||||||
|
def performLogout(self):
|
||||||
'''Logs out the current user when he clicks on "disconnect".'''
|
'''Logs out the current user when he clicks on "disconnect".'''
|
||||||
rq = self.REQUEST
|
rq = self.REQUEST
|
||||||
userId = self.portal_membership.getAuthenticatedMember().getId()
|
userId = self.portal_membership.getAuthenticatedMember().getId()
|
||||||
|
|
|
@ -358,7 +358,12 @@ class BaseMixin:
|
||||||
def goto(self, url, msg=None):
|
def goto(self, url, msg=None):
|
||||||
'''Brings the user to some p_url after an action has been executed.'''
|
'''Brings the user to some p_url after an action has been executed.'''
|
||||||
if msg:
|
if msg:
|
||||||
url += '?' + urllib.urlencode([('portal_status_message',msg)])
|
# Remove previous message if any
|
||||||
|
if 'portal_status_message=' in url:
|
||||||
|
url = url[:url.find('portal_status_message=')-1]
|
||||||
|
if '?' in url: op = '&'
|
||||||
|
else: op = '?'
|
||||||
|
url += op + urllib.urlencode([('portal_status_message',msg)])
|
||||||
return self.REQUEST.RESPONSE.redirect(url)
|
return self.REQUEST.RESPONSE.redirect(url)
|
||||||
|
|
||||||
def showField(self, name, layoutType='view'):
|
def showField(self, name, layoutType='view'):
|
||||||
|
|
|
@ -72,5 +72,6 @@ class TranslationWrapper(AbstractWrapper):
|
||||||
|
|
||||||
def onDelete(self):
|
def onDelete(self):
|
||||||
# Call a custom "onDelete" if any.
|
# Call a custom "onDelete" if any.
|
||||||
|
self.log('Translation "%s" deleted by "%s".' % (self.id, self.user.id))
|
||||||
return self._callCustom('onDelete')
|
return self._callCustom('onDelete')
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in a new issue