From 37cc18b8e8b8b2097730f5278c5ee9eb0d0b28d4 Mon Sep 17 00:00:00 2001 From: holdenhao Date: Fri, 6 Dec 2019 22:49:51 +0800 Subject: [PATCH 1/5] run on Plone 5.1 with or without plone.login --- src/collective/onlogin/adapters.py | 6 +++- src/collective/onlogin/configure.zcml | 43 +++++++++++++++------------ 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/collective/onlogin/adapters.py b/src/collective/onlogin/adapters.py index a7a818e..8b03b33 100644 --- a/src/collective/onlogin/adapters.py +++ b/src/collective/onlogin/adapters.py @@ -12,7 +12,10 @@ from plone.api.portal import get as get_portal from plone.registry.interfaces import IRegistry from Products.CMFCore.Expression import Expression -from Products.CMFPlone.interfaces import IRedirectAfterLogin +try: + from Products.CMFPlone.interfaces import IRedirectAfterLogin +except ImportError: + from plone.login.interfaces import IRedirectAfterLogin from Products.CMFPlone.PloneBaseTool import getExprContext from zope.component import getUtility from zope.interface import implementer @@ -106,4 +109,5 @@ def __call__(self, came_from=None, is_first_login=False): self.request.form['came_from'] = '' logger.info('redirecting to: ' + url) + # import pdb; pdb.set_trace() return url diff --git a/src/collective/onlogin/configure.zcml b/src/collective/onlogin/configure.zcml index 48c0966..5d45e7b 100644 --- a/src/collective/onlogin/configure.zcml +++ b/src/collective/onlogin/configure.zcml @@ -29,27 +29,34 @@ /> - - - - - - + - + zope.publisher.interfaces.IRequest" + /> + + + + + + + + + @@ -63,7 +70,5 @@ layer=".interfaces.IOnloginLayer" /> - - From 658a7bbf766549613e32115cbd29985534e72435 Mon Sep 17 00:00:00 2001 From: holdenhao Date: Sat, 7 Dec 2019 01:24:23 +0800 Subject: [PATCH 2/5] fix import ordering --- src/collective/onlogin/adapters.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/collective/onlogin/adapters.py b/src/collective/onlogin/adapters.py index 8b03b33..ce53c78 100644 --- a/src/collective/onlogin/adapters.py +++ b/src/collective/onlogin/adapters.py @@ -12,13 +12,15 @@ from plone.api.portal import get as get_portal from plone.registry.interfaces import IRegistry from Products.CMFCore.Expression import Expression +from Products.CMFPlone.PloneBaseTool import getExprContext +from zope.component import getUtility +from zope.interface import implementer + + try: from Products.CMFPlone.interfaces import IRedirectAfterLogin except ImportError: from plone.login.interfaces import IRedirectAfterLogin -from Products.CMFPlone.PloneBaseTool import getExprContext -from zope.component import getUtility -from zope.interface import implementer def OUTAHERE(): From ed888bf8e5c022aed039dd89cced4f1c751c6d67 Mon Sep 17 00:00:00 2001 From: holdenhao Date: Sat, 7 Dec 2019 01:25:07 +0800 Subject: [PATCH 3/5] remove pdb line --- src/collective/onlogin/adapters.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/collective/onlogin/adapters.py b/src/collective/onlogin/adapters.py index ce53c78..b85f130 100644 --- a/src/collective/onlogin/adapters.py +++ b/src/collective/onlogin/adapters.py @@ -111,5 +111,4 @@ def __call__(self, came_from=None, is_first_login=False): self.request.form['came_from'] = '' logger.info('redirecting to: ' + url) - # import pdb; pdb.set_trace() return url From 63e72b2f474dc096d8b5aa05c6aca961fd93a65e Mon Sep 17 00:00:00 2001 From: holdenhao Date: Mon, 9 Dec 2019 21:46:35 +0800 Subject: [PATCH 4/5] add option to selectively redirect even if login_redirect_ignore_came_from is false --- src/collective/onlogin/adapters.py | 2 +- src/collective/onlogin/interfaces.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/collective/onlogin/adapters.py b/src/collective/onlogin/adapters.py index b85f130..1c2c90d 100644 --- a/src/collective/onlogin/adapters.py +++ b/src/collective/onlogin/adapters.py @@ -59,7 +59,7 @@ def __call__(self, came_from=None, is_first_login=False): logger.info('ignore_came_from {0}'.format(self.ignore_came_from)) logger.info('came_from ' + self.came_from) - if not self.ignore_came_from and self.came_from: + if not self.ignore_came_from and self.came_from!='onlogin_redirect': OUTAHERE() return self.came_from diff --git a/src/collective/onlogin/interfaces.py b/src/collective/onlogin/interfaces.py index 9a77310..ae2f7a1 100644 --- a/src/collective/onlogin/interfaces.py +++ b/src/collective/onlogin/interfaces.py @@ -52,7 +52,10 @@ class IOnloginSettings(Interface): title=_(u'Ignore came_from parameter on login'), description=_(u'By default Plone redirects user to last visited page ' 'after login. Here you can disable this behavior and ' - 'always redirect to above entered url.'), + 'always redirect to above entered url. To selectively ' + 'enable the redirect, use came_from=onlogin_redirect ' + 'in a link. For example, ' + 'http://localhost/Plone/login?came_from=onlogin_redirect' ), required=False, default=False) From 10e31d2930f4e86682ff9e8d7d9dde9d1c6b67a9 Mon Sep 17 00:00:00 2001 From: holdenhao Date: Tue, 10 Dec 2019 12:27:53 +0800 Subject: [PATCH 5/5] use keyword redirect_on since plone.login checks if string 'login' is in came_from --- src/collective/onlogin/adapters.py | 2 +- src/collective/onlogin/interfaces.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/collective/onlogin/adapters.py b/src/collective/onlogin/adapters.py index 1c2c90d..2c54213 100644 --- a/src/collective/onlogin/adapters.py +++ b/src/collective/onlogin/adapters.py @@ -59,7 +59,7 @@ def __call__(self, came_from=None, is_first_login=False): logger.info('ignore_came_from {0}'.format(self.ignore_came_from)) logger.info('came_from ' + self.came_from) - if not self.ignore_came_from and self.came_from!='onlogin_redirect': + if not self.ignore_came_from and self.came_from != 'redirect_on': OUTAHERE() return self.came_from diff --git a/src/collective/onlogin/interfaces.py b/src/collective/onlogin/interfaces.py index ae2f7a1..fad22f7 100644 --- a/src/collective/onlogin/interfaces.py +++ b/src/collective/onlogin/interfaces.py @@ -53,9 +53,9 @@ class IOnloginSettings(Interface): description=_(u'By default Plone redirects user to last visited page ' 'after login. Here you can disable this behavior and ' 'always redirect to above entered url. To selectively ' - 'enable the redirect, use came_from=onlogin_redirect ' + 'enable the redirect, use came_from=redirect_on ' 'in a link. For example, ' - 'http://localhost/Plone/login?came_from=onlogin_redirect' ), + 'http://localhost/Plone/login?came_from=redirect_on'), required=False, default=False)