-#!/usr/bin/python
-#
# Copyright (C) 2014 Simo Sorce <simo@redhat.com>
#
# see file 'COPYING' for use and warranty information
import cherrypy
from ipsilon.admin.common import AdminPage
+from ipsilon.admin.common import ADMIN_STATUS_OK
+from ipsilon.admin.common import ADMIN_STATUS_ERROR
+from ipsilon.admin.common import ADMIN_STATUS_WARN
from ipsilon.providers.saml2.provider import ServiceProvider
from ipsilon.providers.saml2.provider import ServiceProviderCreator
from ipsilon.providers.saml2.provider import InvalidProviderId
-import re
import requests
-VALID_IN_NAME = r'[^\ a-zA-Z0-9]'
-
-
class NewSPAdminPage(AdminPage):
def __init__(self, site, parent):
if 'content-type' not in cherrypy.request.headers:
self._debug("Invalid request, missing content-type")
message = "Malformed request"
- message_type = "error"
+ message_type = ADMIN_STATUS_ERROR
return self.form_new(message, message_type)
ctype = cherrypy.request.headers['content-type'].split(';')[0]
if ctype != 'multipart/form-data':
cherrypy.request.content_type,))
for key, value in kwargs.iteritems():
if key == 'name':
- if re.search(VALID_IN_NAME, value):
- message = "Invalid name!" \
- " Use only numbers and letters"
- message_type = "error"
- return self.form_new(message, message_type)
-
name = value
elif key == 'metatext':
if len(value) > 0:
except Exception, e: # pylint: disable=broad-except
self._debug("Failed to fetch metadata: " + repr(e))
message = "Failed to fetch metadata: " + repr(e)
- message_type = "error"
+ message_type = ADMIN_STATUS_ERROR
return self.form_new(message, message_type)
if name and meta:
sp = spc.create_from_buffer(name, meta)
sp_page = self.parent.add_sp(name, sp)
message = "SP Successfully added"
- message_type = "success"
+ message_type = ADMIN_STATUS_OK
return sp_page.form_standard(message, message_type)
except InvalidProviderId, e:
message = str(e)
- message_type = "error"
+ message_type = ADMIN_STATUS_ERROR
except Exception, e: # pylint: disable=broad-except
self._debug(repr(e))
message = "Failed to create Service Provider!"
- message_type = "error"
+ message_type = ADMIN_STATUS_ERROR
else:
message = "A name and a metadata file must be provided"
- message_type = "error"
+ message_type = ADMIN_STATUS_ERROR
else:
message = "Unauthorized"
- message_type = "error"
+ message_type = ADMIN_STATUS_ERROR
return self.form_new(message, message_type)
return False
if self.user.is_admin or self.user.name == self.sp.owner:
- if re.search(VALID_IN_NAME, value):
+ if not self.sp.is_valid_name(value):
err = "Invalid name! Use only numbers and letters"
raise InvalidValueFormat(err)
except InvalidValueFormat, e:
message = str(e)
- message_type = "warning"
+ message_type = ADMIN_STATUS_WARN
return self.form_standard(message, message_type)
except UnauthorizedUser, e:
message = str(e)
- message_type = "error"
+ message_type = ADMIN_STATUS_ERROR
return self.form_standard(message, message_type)
except Exception, e: # pylint: disable=broad-except
self._debug("Error: %s" % repr(e))
message = "Internal Error"
- message_type = "error"
+ message_type = ADMIN_STATUS_ERROR
return self.form_standard(message, message_type)
if len(results) > 0:
self.url = '%s/sp/%s' % (self.parent.url, rename[1])
self.parent.rename_sp(rename[0], rename[1])
message = "Properties successfully changed"
- message_type = "success"
- except Exception: # pylint: disable=broad-except
+ message_type = ADMIN_STATUS_OK
+ except Exception, e: # pylint: disable=broad-except
+ self.error('Failed to save data: %s' % e)
message = "Failed to save data!"
- message_type = "error"
+ message_type = ADMIN_STATUS_ERROR
return self.form_standard(message, message_type, self.url)