From 092934778cae1c27b860b08fa21e99b476264755 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com>
Date: Wed, 25 Apr 2012 17:33:38 +0200
Subject: [PATCH] Allow to edit plugin.

---
 .../ERP5BearerExtractionPlugin.py             | 47 ++++++++++++++++++-
 ...ecurity_editERP5BearerExtractionPlugin.zpt | 29 ++++++++++++
 2 files changed, 74 insertions(+), 2 deletions(-)
 create mode 100644 product/ERP5Security/www/ERP5Security_editERP5BearerExtractionPlugin.zpt

diff --git a/product/ERP5Security/ERP5BearerExtractionPlugin.py b/product/ERP5Security/ERP5BearerExtractionPlugin.py
index 1e8c7b4b51..a31db97516 100644
--- a/product/ERP5Security/ERP5BearerExtractionPlugin.py
+++ b/product/ERP5Security/ERP5BearerExtractionPlugin.py
@@ -35,7 +35,7 @@ from Products.PluggableAuthService.utils import classImplements
 from Products.PluggableAuthService.plugins.BasePlugin import BasePlugin
 from Products.ERP5Security.ERP5UserManager import SUPER_USER
 from Products.PluggableAuthService.PluggableAuthService import DumbHTTPExtractor
-
+from Products.PluggableAuthService.permissions import ManageUsers
 from AccessControl.SecurityManagement import getSecurityManager,\
     setSecurityManager, newSecurityManager
 from DateTime import DateTime
@@ -67,6 +67,22 @@ class ERP5BearerExtractionPlugin(BasePlugin):
 
   meta_type = "ERP5 Bearer Extraction Plugin"
   security = ClassSecurityInfo()
+  token_portal_type = ''
+
+  manage_options = (({'label': 'Edit',
+                      'action': 'manage_editERP5BearerExtractionPluginForm',},
+                     )
+                    + BasePlugin.manage_options[:]
+                    )
+
+  _properties = (({'id':'token_portal_type',
+                   'type':'string',
+                   'mode':'w',
+                   'label':'Portal Type with tokens'
+                   },
+                  )
+                 + BasePlugin._properties[:]
+                 )
 
   def __init__(self, id, token_portal_type, title=None):
     #Register value
@@ -85,7 +101,7 @@ class ERP5BearerExtractionPlugin(BasePlugin):
     if request._auth is not None:
       # 1st - try to fetch from Authorization header
       if 'Bearer' in request._auth:
-        l = authorisation.split()
+        l = request._auth.split()
         if len(l) == 2:
           token = l[1]
 
@@ -132,6 +148,33 @@ class ERP5BearerExtractionPlugin(BasePlugin):
     # fallback to default way
     return DumbHTTPExtractor().extractCredentials(request)
 
+  manage_editERP5BearerExtractionPluginForm = PageTemplateFile(
+      'www/ERP5Security_editERP5BearerExtractionPlugin',
+      globals(),
+      __name__='manage_editERP5BearerExtractionPluginForm')
+
+  security.declareProtected(ManageUsers, 'manage_editERP5BearerExtractionPlugin')
+  def manage_editERP5BearerExtractionPlugin(self, token_portal_type, RESPONSE=None):
+    """Edit the object"""
+    error_message = ''
+
+    if token_portal_type == '' or token_portal_type is None:
+      error_message += 'Token Portal Type is missing '
+    else:
+      self.token_portal_type = token_portal_type
+
+    #Redirect
+    if RESPONSE is not None:
+      if error_message != '':
+        self.REQUEST.form['manage_tabs_message'] = error_message
+        return self.manage_editERP5BearerExtractionPluginForm(RESPONSE)
+      else:
+        message = "Updated"
+        RESPONSE.redirect('%s/manage_editERP5BearerExtractionPluginForm'
+                          '?manage_tabs_message=%s'
+                          % (self.absolute_url(), message)
+                          )
+
 #List implementation of class
 classImplements( ERP5BearerExtractionPlugin,
                 plugins.ILoginPasswordHostExtractionPlugin
diff --git a/product/ERP5Security/www/ERP5Security_editERP5BearerExtractionPlugin.zpt b/product/ERP5Security/www/ERP5Security_editERP5BearerExtractionPlugin.zpt
new file mode 100644
index 0000000000..83cdd710b5
--- /dev/null
+++ b/product/ERP5Security/www/ERP5Security_editERP5BearerExtractionPlugin.zpt
@@ -0,0 +1,29 @@
+<h1 tal:replace="structure context/manage_page_header">PAGE HEADER</h1>
+<h2 tal:replace="structure here/manage_tabs"> TABS </h2>
+<h2 tal:define="form_title string:Edit ERP5 Bearer Extraction Plugin"
+    tal:replace="structure context/manage_form_title">FORM TITLE</h2>
+
+<p class="form-help">Please configure portal type containing tokens</p>
+
+<form action="manage_editERP5BearerExtractionPlugin" method="POST">
+
+<table tal:define="token_portal_type request/token_portal_type|context/token_portal_type|string:;">
+
+<tr>
+   <td>Portal Type with tokens</td>
+   <td>
+     <input type="text" name="token_portal_type" value=""
+            tal:attributes="value token_portal_type;" />
+   </td>
+</tr>
+<tr>
+   <td colspan="2"> 
+    <input type="submit" value="save"/>
+   </td>
+</tr>
+
+</table>
+
+</form>
+
+<h1 tal:replace="structure context/manage_page_footer">PAGE FOOTER</h1>
-- 
2.30.9