Changeset 521:112578de1470 in documentViewer


Ignore:
Timestamp:
Mar 15, 2012, 7:37:14 PM (12 years ago)
Author:
casties
Branch:
default
Message:

AuthTokenGenerator? works now.

Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • AuthTokenGenerator.py

    r520 r521  
    11from OFS.SimpleItem import SimpleItem
     2from Products.PageTemplates.PageTemplateFile import PageTemplateFile
     3from OFS.PropertyManager import PropertyManager
    24
    35import datetime
    46import hashlib
     7import json
    58
    69
     
    1821
    1922
    20 class AuthTokenGenerator(SimpleItem):
    21     """Generator of auth tokens for OKFN Annotator"""
    22     # Replace these with your details
    23     consumerKey = 'yourconsumerkey'
    24     consumerSecret = 'yourconsumersecret'
     23class AuthTokenGenerator(SimpleItem, PropertyManager):
     24    """Generator of auth tokens for OKFN Annotator"""
    2525   
     26    meta_type = 'AuthTokenGenerator'
     27    _properties=({'id':'consumer_key', 'type': 'string', 'mode': 'w'},
     28                 {'id':'consumer_secret', 'type': 'string', 'mode': 'w'},
     29                )
     30   
     31    manage_options = PropertyManager.manage_options + SimpleItem.manage_options
     32
    2633    # Only change this if you're sure you know what you're doing
    27     CONSUMER_TTL = 86400
     34    consumerTtl = 86400
    2835
    29     def generate_token(self, user_id):
     36    def __init__(self, id, consumerKey=None, consumerSecret=None):
     37        """init document viewer"""
     38        self.id=id
     39        self.consumer_key = consumerKey
     40        self.consumer_secret = consumerSecret
     41
     42    def index_html(self, user='anonymous', password=None):
     43        """returns authentication token for user"""
     44        if self._token_allowed():
     45            token = self._generate_token(user)
     46            self.REQUEST.RESPONSE.setHeader("Content-Type", "application/json")
     47            origin = self.REQUEST.getHeader("Origin", None)
     48            if origin is not None:
     49                self.REQUEST.RESPONSE.setHeader("Access-Control-Allow-Origin", origin)
     50            else:
     51                self.REQUEST.RESPONSE.setHeader("Access-Control-Allow-Origin", "*")
     52
     53            self.REQUEST.RESPONSE.setHeader("Access-Control-Allow-Credentials", "true")
     54            json.dump(token, self.REQUEST.RESPONSE)
     55        else:
     56            self.REQUEST.RESPONSE.setStatus('Forbidden')
     57            return "SORRY, NOT ALLOWED!"
     58
     59    def _token_allowed(self, user=None, password=None):
     60        # here we should check the login
     61        return True
     62
     63    def _generate_token(self, user_id):
     64        #return JSON-token
    3065        issue_time = datetime.datetime.now(UTC).isoformat()
    31         token = hashlib.sha256(self.consumerSecret + user_id + issue_time).hexdigest()
     66        token = hashlib.sha256(self.consumer_secret + user_id + issue_time).hexdigest()
    3267   
    3368        return dict(
    34             consumerKey=self.consumerKey,
     69            consumerKey=self.consumer_key,
    3570            authToken=token,
    3671            authTokenIssueTime=issue_time,
    37             authTokenTTL=CONSUMER_TTL,
     72            authTokenTTL=self.consumerTtl,
    3873            userId=user_id
    3974        )
     75
     76def manage_addAuthTokenGeneratorForm(self):
     77    """form for adding AuthTokenGenerator"""
     78    pt = PageTemplateFile("zpt/manage_addAuthTokenGenerator", globals()).__of__(self)
     79    return pt()
     80
     81def manage_addAuthTokenGenerator(context, id, consumerKey=None, consumerSecret=None):
     82    """ """
     83    context._setObject(id, AuthTokenGenerator(id, consumerKey=consumerKey, consumerSecret=consumerSecret))
     84    return "AuthTokenGenerator Installed: %s" % id
  • __init__.py

    r486 r521  
    11import documentViewer
    22import MpdlXmlTextServer
     3import AuthTokenGenerator
    34
    45def initialize(context):
     
    1920          )
    2021        )
     22
     23    context.registerClass(
     24        AuthTokenGenerator.AuthTokenGenerator,
     25        constructors = (
     26          AuthTokenGenerator.manage_addAuthTokenGeneratorForm,
     27          AuthTokenGenerator.manage_addAuthTokenGenerator
     28          )
     29        )
     30       
    2131   
Note: See TracChangeset for help on using the changeset viewer.