CookieCrumblerIssueTrackerProduct/0000755000175000017500000000000010325522512017504 5ustar peterbepeterbeCookieCrumblerIssueTrackerProduct/dtml/0000755000175000017500000000000010325522512020444 5ustar peterbepeterbeCookieCrumblerIssueTrackerProduct/dtml/addCC.dtml0000644000175000017500000000230410325522512022263 0ustar peterbepeterbe

Cookie crumblers allow you to use cookie-based authentication with most Zope user folders. Place the cookie crumbler in the same folder as your user folder. This particular product is for the IssueTrackerProduct

Id
Create default forms
CookieCrumblerIssueTrackerProduct/IssueCrumbler.py0000644000175000017500000000641110325522512022644 0ustar peterbepeterbe## ## CookieCrumblerIssueTrackerProduct ## (c) Peter Bengtsson, mail@peterbe.com ## Oct, 2005 ## ## Please visit www.issuetrackerproduct.com for more info ## # python import re, sys, os # zope from Globals import InitializeClass, HTMLFile from AccessControl import getSecurityManager, ClassSecurityInfo, Permissions from DateTime import DateTime # other products from Products.CookieCrumbler.CookieCrumbler import CookieCrumbler from Products.IssueTrackerProduct.TemplateAdder import addTemplates2Class as AT2C #------------------------------------------------------------------------------- def addTemplates2Class(klass, templates, optimize=None): AT2C(klass, templates, optimize, Globals=globals()) manage_addCCITPForm = HTMLFile('dtml/addCC', globals()) def manage_addCCITP(dispatcher, id, create_forms=0, long_login_days=14, REQUEST=None): ' ' ob = CookieCrumblerIssueTrackerProduct() ob.id = id ob.long_login_days = int(long_login_days) dispatcher._setObject(ob.getId(), ob) ob = getattr(dispatcher.this(), ob.getId()) if create_forms: _create_forms(ob) if REQUEST is not None: return dispatcher.manage_main(dispatcher, REQUEST) #------------------------------------------------------------------------------- class CookieCrumblerIssueTrackerProduct(CookieCrumbler): """ subclass of CookieCrumbler that adds some design and other configurations for using a Cookie Crumbler. """ meta_type = 'Cookie Crumbler (IssueTrackerProduct)' _properties = ({'id':'long_login_days', 'type': 'int', 'mode':'w', 'label':'Long login days'},) + CookieCrumbler._properties long_login_days = 14 security = ClassSecurityInfo() def setAuthCookie(self, resp, cookie_name, cookie_value): """ this method overrides the default setAuthCookie so that we can set the cookie for a longer time. """ kw = {} req = getattr(self, 'REQUEST', None) if req is not None and req.get('SERVER_URL', '').startswith('https:'): # Ask the client to send back the cookie only in SSL mode kw['secure'] = 'y' if req.get('remember_login_days'): days = int(req.get('remember_login_days')) then = DateTime() + days kw['expires'] = then.rfc822() resp.setCookie('use_remember_login_days', '1', path=self.getCookiePath(), **kw) else: resp.setCookie('use_remember_login_days', '0', path=self.getCookiePath(), **kw) resp.setCookie(cookie_name, cookie_value, path=self.getCookiePath(), **kw) resp.setCookie('__issuetracker_logout_page', self.absolute_url()+'/logout', # that's how it's defined in CookieCrumbler path=self.getCookiePath(), **kw) zpts = ('zpt/header_footer', 'zpt/logged_out', 'zpt/login_form', 'zpt/logged_in', ) addTemplates2Class(CookieCrumblerIssueTrackerProduct, zpts) setattr(CookieCrumblerIssueTrackerProduct, 'index_html', CookieCrumblerIssueTrackerProduct.login_form) InitializeClass(CookieCrumblerIssueTrackerProduct)CookieCrumblerIssueTrackerProduct/__init__.py0000644000175000017500000000247010325522512021620 0ustar peterbepeterbe## ## CookieCrumblerIssueTrackerProduct ## (c) Peter Bengtsson, mail@peterbe.com ## Oct, 2005 ## ## Please visit www.issuetrackerproduct.com for more info ## import IssueCrumbler def initialize(context): context.registerClass( IssueCrumbler.CookieCrumblerIssueTrackerProduct, constructors=(IssueCrumbler.manage_addCCITPForm, IssueCrumbler.manage_addCCITP), icon = 'www/cclogin_icon.gif' ) registerIcon('padlock.gif') import OFS, App def registerIcon(filename, idreplacer={}, epath=None): # A helper function that takes an image filename (assumed # to live in a 'www' subdirectory of this package). It # creates an ImageFile instance and adds it as an attribute # of misc_.MyPackage of the zope application object (note # that misc_.MyPackage has already been created by the product # initialization machinery by the time registerIcon is called). objectid = filename if epath is not None: path = "www/%s/"%epath else: path = "www/" for k,v in idreplacer.items(): objectid = objectid.replace(k,v) setattr(OFS.misc_.misc_.CookieCrumblerIssueTrackerProduct, objectid, App.ImageFile.ImageFile('%s%s' % (path, filename), globals()) ) CookieCrumblerIssueTrackerProduct/www/0000755000175000017500000000000010325522512020330 5ustar peterbepeterbeCookieCrumblerIssueTrackerProduct/www/padlock.gif0000644000175000017500000000046610325522512022442 0ustar peterbepeterbeGIF89af̙333fffԡϜ'إ2Ɠ<ɖў,!, &dihQ,+5qtR@Ɯ@@N0Ve.1lLHX |ʕ"`+ 4x{ t~)x{t(m [ rcs 9gB*!;CookieCrumblerIssueTrackerProduct/www/cclogin_icon.gif0000644000175000017500000000120210325522512023440 0ustar peterbepeterbeGIF89ar333555<92?=9???\GmB#hY;s[c^:f)ffb4b2jqKopq rwxazIzyD}'{I0\Òoǔȕ`ɖ͚f͛Λm(l{ptŕ\tԡբҢ wlפ|ר ʟnƢlޫ~ݳƪϮϯ հ~ ش۾)ñWbƙ"3%Ҩ,ԩ3;߾!IssueTrackerProduct! ,Ȁ^@.@.eqqmmpqpYSTdonpSeeclZfjimekMhWgUema8_XpB>L6Q^9I,!35˶^H`\G02D1SJb\RO=-# 7Sm;]K'IA FSc)x %I/,$АeehDX02P *, ҟ: @;CookieCrumblerIssueTrackerProduct/zpt/0000755000175000017500000000000010325522512020321 5ustar peterbepeterbeCookieCrumblerIssueTrackerProduct/zpt/header_footer.zpt0000644000175000017500000000233110325522512023665 0ustar peterbepeterbe Login
Login page by IssueTrackerProduct
CookieCrumblerIssueTrackerProduct/zpt/logged_out.zpt0000644000175000017500000000144110325522512023210 0ustar peterbepeterbe

Logged out

If you change your mind you can return to the login form and log in again.

You are logged in using HTTP authentication. You may need to log out of the Zope management interface.

CookieCrumblerIssueTrackerProduct/zpt/login_form.zpt0000644000175000017500000000410210325522512023210 0ustar peterbepeterbe

Log in

Please try again.
Name
Password

Cookies are used for the login. If it doesn't work, make sure your webbrowser accepts cookies.

CookieCrumblerIssueTrackerProduct/zpt/logged_in.zpt0000644000175000017500000000253610325522512023015 0ustar peterbepeterbe

Log in


Login failed

Please try again.


Login successful

Continue

CookieCrumblerIssueTrackerProduct/version.txt0000644000175000017500000000000510325522512021725 0ustar peterbepeterbe0.0.1CookieCrumblerIssueTrackerProduct/refresh.txt0000644000175000017500000000000010325522512021671 0ustar peterbepeterbeCookieCrumblerIssueTrackerProduct/README.txt0000644000175000017500000000205510325522512021204 0ustar peterbepeterbeCookieCrumblerIssueTrackerProduct (c) Peter Bengtsson, mail@peterbe.com, Oct 2005 License: ZPL CookieCrumblerIssueTrackerProduct is basically a CookieCrumbler subclass design explictly for use in IssueTrackerProduct environments. It defines some nicer login/logout pages in ZPT and gives an option to have the loging to last for longer than one session a la Gmail, SF.net. To install it, just unpack like any other product in Zope ie. in your Products folder. For it to work you need to have: - CookieCrumbler (http://hathawaymix.org/Software/CookieCrumbler) - IssueTrackerProduct (http://www.issuetrackerproduct.com) - CheckoutableTemplates (http://www.issuetrackerproduct.com/Documentation#checkoutabletemplates) Once you've restarted Zope, all you need to do is to go into the Zope Management Interface (ZMI) and select "Cookie Crumbler (IssueTrackerProduct)" from the drop down in the top right hand corner. If you want to change any of the templates, install CheckoutableTemplates and visit http://localhost:8080/cclogin/showCheckoutableTemplates CookieCrumblerIssueTrackerProduct/CHANGES.txt0000644000175000017500000000003410325522512021312 0ustar peterbepeterbe- 0.0.1 - Started project