pam: use a pam object method instead of pam module function
[cascardo/ipsilon.git] / ipsilon / providers / saml2 / rest.py
index 6ad8ae6..7ef5576 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015  Ipsilon project Contributors, for licensee see COPYING
+# Copyright (C) 2015 Ipsilon project Contributors, for license see COPYING
 
 import cherrypy
 from ipsilon.providers.common import RestProviderBase
@@ -6,6 +6,7 @@ from ipsilon.providers.common import FACILITY
 from ipsilon.rest.common import rest_error, jsonout
 from ipsilon.providers.saml2.provider import ServiceProviderCreator
 from ipsilon.providers.saml2.provider import InvalidProviderId
+from ipsilon.util.page import admin_protect
 from lasso import ServerAddProviderFailedError
 
 
@@ -69,7 +70,7 @@ class SPS(RestProviderBase):
         else:
             data = idp.get_data()
 
-        for idval in data.keys():
+        for idval in data:
             result = dict(provider=data[idval].get('name'),
                           metadata=data[idval].get('metadata'),)
             results.append(result)
@@ -77,28 +78,36 @@ class SPS(RestProviderBase):
         return dict(result=results)
 
     @jsonout
+    @admin_protect
     def GET(self, *args, **kwargs):
         return self._get_sp(*args, **kwargs)
 
     @jsonout
+    @admin_protect
     def POST(self, *args, **kwargs):
         cherrypy.response.status = 201
 
         if len(args) != 1:
             return rest_error(400, 'Invalid arguments. Found %d'
                                    ' there should be one.')
+        self.debug('REST POST %s' % kwargs)
         name = args[0]
         metadata = kwargs.get('metadata')
+        description = kwargs.get('description', '')
+        visible = kwargs.get('visible', True)
+        imagefile = kwargs.get('image', None)
+        splink = kwargs.get('splink', '')
 
         obj = self._site[FACILITY].available[self.parent.plugin_name]
         try:
             spc = ServiceProviderCreator(obj)
-            sp = spc.create_from_buffer(name, metadata)
+            sp = spc.create_from_buffer(name, metadata, description,
+                                        visible, imagefile, splink)
         except (InvalidProviderId, ServerAddProviderFailedError) as e:
-            self._debug(repr(e))
+            self.debug(repr(e))
             return rest_error(400, str(e))
         except Exception, e:  # pylint: disable=broad-except
-            self._debug(repr(e))
+            self.debug(repr(e))
             return rest_error(500, "Failed to create Service Provider")
 
         obj.admin.add_sp(name, sp)