# HG changeset patch # User casties # Date 1332516673 -3600 # Node ID 198b3ae3ea7e23e686ee64a0cef048472e242e3f # Parent 112578de1470861e5073171d15a138c1a27027b6 moved Annotator AuthTokenGenerator to its own product. diff -r 112578de1470 -r 198b3ae3ea7e AuthTokenGenerator.py --- a/AuthTokenGenerator.py Thu Mar 15 20:37:14 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -from OFS.SimpleItem import SimpleItem -from Products.PageTemplates.PageTemplateFile import PageTemplateFile -from OFS.PropertyManager import PropertyManager - -import datetime -import hashlib -import json - - -ZERO = datetime.timedelta(0) -class Utc(datetime.tzinfo): - def utcoffset(self, dt): - return ZERO - - def tzname(self, dt): - return "UTC" - - def dst(self, dt): - return ZERO -UTC = Utc() - - -class AuthTokenGenerator(SimpleItem, PropertyManager): - """Generator of auth tokens for OKFN Annotator""" - - meta_type = 'AuthTokenGenerator' - _properties=({'id':'consumer_key', 'type': 'string', 'mode': 'w'}, - {'id':'consumer_secret', 'type': 'string', 'mode': 'w'}, - ) - - manage_options = PropertyManager.manage_options + SimpleItem.manage_options - - # Only change this if you're sure you know what you're doing - consumerTtl = 86400 - - def __init__(self, id, consumerKey=None, consumerSecret=None): - """init document viewer""" - self.id=id - self.consumer_key = consumerKey - self.consumer_secret = consumerSecret - - def index_html(self, user='anonymous', password=None): - """returns authentication token for user""" - if self._token_allowed(): - token = self._generate_token(user) - self.REQUEST.RESPONSE.setHeader("Content-Type", "application/json") - origin = self.REQUEST.getHeader("Origin", None) - if origin is not None: - self.REQUEST.RESPONSE.setHeader("Access-Control-Allow-Origin", origin) - else: - self.REQUEST.RESPONSE.setHeader("Access-Control-Allow-Origin", "*") - - self.REQUEST.RESPONSE.setHeader("Access-Control-Allow-Credentials", "true") - json.dump(token, self.REQUEST.RESPONSE) - else: - self.REQUEST.RESPONSE.setStatus('Forbidden') - return "SORRY, NOT ALLOWED!" - - def _token_allowed(self, user=None, password=None): - # here we should check the login - return True - - def _generate_token(self, user_id): - #return JSON-token - issue_time = datetime.datetime.now(UTC).isoformat() - token = hashlib.sha256(self.consumer_secret + user_id + issue_time).hexdigest() - - return dict( - consumerKey=self.consumer_key, - authToken=token, - authTokenIssueTime=issue_time, - authTokenTTL=self.consumerTtl, - userId=user_id - ) - -def manage_addAuthTokenGeneratorForm(self): - """form for adding AuthTokenGenerator""" - pt = PageTemplateFile("zpt/manage_addAuthTokenGenerator", globals()).__of__(self) - return pt() - -def manage_addAuthTokenGenerator(context, id, consumerKey=None, consumerSecret=None): - """ """ - context._setObject(id, AuthTokenGenerator(id, consumerKey=consumerKey, consumerSecret=consumerSecret)) - return "AuthTokenGenerator Installed: %s" % id diff -r 112578de1470 -r 198b3ae3ea7e __init__.py --- a/__init__.py Thu Mar 15 20:37:14 2012 +0100 +++ b/__init__.py Fri Mar 23 16:31:13 2012 +0100 @@ -1,6 +1,5 @@ import documentViewer import MpdlXmlTextServer -import AuthTokenGenerator def initialize(context): """initialize ImageCollection""" @@ -19,13 +18,4 @@ MpdlXmlTextServer.manage_addMpdlXmlTextServer ) ) - - context.registerClass( - AuthTokenGenerator.AuthTokenGenerator, - constructors = ( - AuthTokenGenerator.manage_addAuthTokenGeneratorForm, - AuthTokenGenerator.manage_addAuthTokenGenerator - ) - ) - \ No newline at end of file diff -r 112578de1470 -r 198b3ae3ea7e zpt/manage_addAuthTokenGenerator.zpt --- a/zpt/manage_addAuthTokenGenerator.zpt Thu Mar 15 20:37:14 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -

Header

-

Add an AuthTokenGenerator

-
-

Id

-

consumer key

-

consumer secret

-

-
- -

Footer