[Cluster-devel] conga/luci load_site.py plone-custom/join_form ...

rmccabe at sourceware.org rmccabe at sourceware.org
Tue Sep 19 15:01:21 UTC 2006


CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2006-09-19 15:01:21

Modified files:
	luci           : load_site.py 
Added files:
	luci/plone-custom: join_form_validate.vpy logged_in.vpy 
	                   login_form_validate.vpy login_next.vpy 

Log message:
	add python form validator controls for login

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/load_site.py.diff?cvsroot=cluster&r1=1.13&r2=1.14
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/join_form_validate.vpy.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/logged_in.vpy.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/login_form_validate.vpy.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/login_next.vpy.diff?cvsroot=cluster&r1=NONE&r2=1.1

--- conga/luci/load_site.py	2006/09/18 21:23:45	1.13
+++ conga/luci/load_site.py	2006/09/19 15:01:20	1.14
@@ -1,5 +1,5 @@
 #!/usr/bin/python
-# $Id: load_site.py,v 1.13 2006/09/18 21:23:45 rmccabe Exp $
+# $Id: load_site.py,v 1.14 2006/09/19 15:01:20 rmccabe Exp $
 
 ##############################################################################
 #
@@ -163,6 +163,29 @@
 def upload_js(object, f):
 	upload_txt(object, f, t='text/javascript')
 
+def upload_vpy(object, f):
+	dir, name = os.path.split(f)
+
+	nobject = object.__class__(object.url+'/manage_addProduct/CMFFormController',
+							username=object.username,
+							password=object.password)
+
+	dbid = name.split('.')[0]
+
+	try:
+		call(nobject.manage_addControllerPythonScript, id=dbid, file=open(f,'rb'))
+		if verbose: print 'Uploaded', dbid
+	except:
+		if verbose: print name, 'exists trying to delete then upload again'
+		try:
+			call(object.manage_delObjects, ids=[dbid])
+			if verbose: print 'Deleted', dbid
+			try:
+				call(nobject.manage_addControllerPythonScript, id=dbid, file=open(f,'rb'))
+				if verbose: print 'Uploaded', dbid
+			except: print 'Unable to upload', dbid
+		except: print 'Unable to delete', dbid
+	
 def upload_cpt(object, f):
 	dir, name = os.path.split(f)
 
/cvs/cluster/conga/luci/plone-custom/join_form_validate.vpy,v  -->  standard output
revision 1.1
--- conga/luci/plone-custom/join_form_validate.vpy
+++ -	2006-09-19 15:01:21.437044000 +0000
@@ -0,0 +1,13 @@
+## Controller Validator "join_form_validate"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##parameters=username='',email='',password='',password_confirm=''
+##title=validates the Registration of a User
+##
+from Products.CMFPlone import PloneMessageFactory as _
+
+return state.set(status='failure_page')
/cvs/cluster/conga/luci/plone-custom/logged_in.vpy,v  -->  standard output
revision 1.1
--- conga/luci/plone-custom/logged_in.vpy
+++ -	2006-09-19 15:01:21.522299000 +0000
@@ -0,0 +1,39 @@
+## Controller Python Script "logged_in"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##parameters=
+##title=Initial post-login actions
+##
+from Products.CMFPlone import PloneMessageFactory as _
+REQUEST=context.REQUEST
+
+# If someone has something on their clipboard, expire it.
+if REQUEST.get('__cp', None) is not None:
+	REQUEST.RESPONSE.expireCookie('__cp', path='/')
+
+membership_tool=context.portal_membership
+if membership_tool.isAnonymousUser():
+	REQUEST.RESPONSE.expireCookie('__ac', path='/')
+	return state.set(status='failure')
+
+member = membership_tool.getAuthenticatedMember()
+login_time = member.getProperty('login_time', '2000/01/01')
+initial_login = int(str(login_time) == '2000/01/01')
+state.set(initial_login=initial_login)
+
+must_change_password = member.getProperty('must_change_password', 0)
+state.set(must_change_password=must_change_password)
+
+if initial_login:
+	state.set(status='initial_login')
+elif must_change_password:
+	state.set(status='change_password')
+
+membership_tool.setLoginTimes()
+membership_tool.createMemberArea()
+
+return state
/cvs/cluster/conga/luci/plone-custom/login_form_validate.vpy,v  -->  standard output
revision 1.1
--- conga/luci/plone-custom/login_form_validate.vpy
+++ -	2006-09-19 15:01:21.605913000 +0000
@@ -0,0 +1,52 @@
+## Controller Validator "login_form_validate"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##parameters=
+##title=Validate login
+##
+from Products.CMFPlone import PloneMessageFactory as _
+
+LOGIN_FAILED_MESSAGE = _(u'Login failed')
+
+request = context.REQUEST
+js_enabled = request.get('js_enabled',0) # is javascript enabled?
+js_enabled = js_enabled=='1' or js_enabled==1
+cookies_enabled = request.get('cookies_enabled',0) # are cookies enabled?
+cookies_enabled = cookies_enabled=='1' or cookies_enabled==1
+
+if not context.siteIsSetup():
+	state.set(status='failure_page')
+	return state
+
+if js_enabled and not cookies_enabled:
+	state.set(status='enable_cookies')
+	return state
+
+mt=context.portal_membership
+if mt.isAnonymousUser():
+	if js_enabled: # javascript is enabled - we can diagnose the failure
+		auth = getattr(context, 'cookie_authentication', None) # using cookie authentication?
+		if auth:
+			user_name = request.get('login_name', None)
+			password_empty = request.get('pwd_empty', None)=='1'
+			ac_name = auth.name_cookie
+			ac_password = auth.pw_cookie
+	
+			if not user_name:
+				# no user name
+				state.setError(ac_name, _(u'Please enter your login name.'), 'login_name_required')
+			if password_empty:
+				state.setError(ac_password, _(u'Please enter your password.'), 'password_required')
+			verify_login_name = context.portal_properties.site_properties.getProperty('verify_login_name', 0)
+			if user_name and verify_login_name:
+				if mt.getMemberById(user_name) is None or password_empty:
+					state.setError(ac_password, _(u'Password incorrect.'), 'password_incorrect')
+		state.set(status='failure_page')
+	else: # no javascript - do low tech login failure
+		state.set(status='failure_page')
+
+return state
/cvs/cluster/conga/luci/plone-custom/login_next.vpy,v  -->  standard output
revision 1.1
--- conga/luci/plone-custom/login_next.vpy
+++ -	2006-09-19 15:01:21.684150000 +0000
@@ -0,0 +1,59 @@
+## Controller Python Script "login_next"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##parameters=
+##title=Login next actions
+##
+from Products.CMFPlone import PloneMessageFactory as _
+from DateTime import DateTime
+import ZTUtils
+
+REQUEST = context.REQUEST
+
+context.acl_users.credentials_cookie_auth.login()
+
+util = context.plone_utils
+membership_tool=context.portal_membership
+if membership_tool.isAnonymousUser():
+	REQUEST.RESPONSE.expireCookie('__ac', path='/')
+	return state.set(status='failure_page')
+
+came_from = REQUEST.get('came_from', None)
+
+# if we weren't called from something that set 'came_from' or if HTTP_REFERER
+# is the 'logged_out' page, return the default 'login_success' form
+if came_from is not None:
+	scheme, location, path, parameters, query, fragment = util.urlparse(came_from)
+	template_id = path.split('/')[-1]
+	if template_id in ['login', 'login_success', 'login_password', 'login_failed',
+					   'login_form', 'logged_in', 'logged_out', 'registered',
+					   'mail_password', 'mail_password_form', 'join_form',
+					   'require_login', 'member_search_results']:
+		came_from = ''
+	# It is probably a good idea in general to filter out urls outside the portal.
+	# An added bonus: this fixes some problems with a Zope bug that doesn't
+	# properly unmangle the VirtualHostMonster stuff when setting ACTUAL_URL
+	if not context.portal_url.isURLInPortal(came_from):
+		came_from = ''
+else:
+	came_from = ''
+
+if not came_from:
+	came_from = '/'
+
+js_enabled = REQUEST.get('js_enabled','1') != '0'
+if came_from and js_enabled:
+	# If javascript is not enabled, it is possible that cookies are not enabled.
+	# If cookies aren't enabled, the redirect will log the user out, and confusion
+	# may arise. Redirect only if we know for sure that cookies are enabled.
+
+	came_from = util.urlunparse((scheme, location, path, parameters, query, fragment))
+	REQUEST.RESPONSE.redirect(came_from)
+
+state.set(came_from=came_from)
+
+return state




More information about the Cluster-devel mailing list