diff options
Diffstat (limited to 'ipsilon')
-rw-r--r-- | ipsilon/providers/saml2/admin.py | 12 | ||||
-rw-r--r-- | ipsilon/providers/saml2/provider.py | 13 |
2 files changed, 14 insertions, 11 deletions
diff --git a/ipsilon/providers/saml2/admin.py b/ipsilon/providers/saml2/admin.py index 0ab2a41..2503be1 100644 --- a/ipsilon/providers/saml2/admin.py +++ b/ipsilon/providers/saml2/admin.py @@ -23,13 +23,9 @@ 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): @@ -68,12 +64,6 @@ class NewSPAdminPage(AdminPage): 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 = ADMIN_STATUS_ERROR - return self.form_new(message, message_type) - name = value elif key == 'metatext': if len(value) > 0: @@ -156,7 +146,7 @@ class SPAdminPage(AdminPage): 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) diff --git a/ipsilon/providers/saml2/provider.py b/ipsilon/providers/saml2/provider.py index 4439a0d..d1c7b42 100644 --- a/ipsilon/providers/saml2/provider.py +++ b/ipsilon/providers/saml2/provider.py @@ -19,6 +19,10 @@ from ipsilon.providers.common import ProviderException from ipsilon.tools.saml2metadata import SAML2_NAMEID_MAP from ipsilon.util.log import Log import lasso +import re + + +VALID_IN_NAME = r'[^\ a-zA-Z0-9]' class InvalidProviderId(ProviderException): @@ -136,6 +140,11 @@ class ServiceProvider(Log): return username.split('@', 1)[0] return username + def is_valid_name(self, value): + if re.search(VALID_IN_NAME, value): + return False + return True + def is_valid_nameid(self, value): if value in SAML2_NAMEID_MAP: return True @@ -153,6 +162,10 @@ class ServiceProviderCreator(object): def create_from_buffer(self, name, metabuf): '''Test and add data''' + if re.search(VALID_IN_NAME, name): + raise InvalidProviderId("Name must contain only " + "numbers and letters") + test = lasso.Server() test.addProviderFromBuffer(lasso.PROVIDER_ROLE_SP, metabuf) newsps = test.get_providers() |