Instead ofhaving to explicitly decorate all methods with auth_protect()
use the fact all pages go through Page.__call__ to conditionally check
if the user is anoynous and set a default when instantiating AdminPage
so that all admin pages require authentication.
Signed-off-by: Simo Sorce <simo@redhat.com>
Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
import cherrypy
from ipsilon.util.page import Page
import cherrypy
from ipsilon.util.page import Page
-from ipsilon.util.page import admin_protect, auth_protect
+from ipsilon.util.page import admin_protect
'Pragma': 'no-cache',
'Expires': 'Thu, 01 Dec 1994 16:00:00 GMT',
})
'Pragma': 'no-cache',
'Expires': 'Thu, 01 Dec 1994 16:00:00 GMT',
})
+ self.auth_protect = True
class AdminPluginPage(AdminPage):
class AdminPluginPage(AdminPage):
self.url = '%s/%s' % (self.basepath, mount)
self.menu = []
self.url = '%s/%s' % (self.basepath, mount)
self.menu = []
def root(self, *args, **kwargs):
return self._template('admin/index.html',
title='Configuration',
def root(self, *args, **kwargs):
return self._template('admin/index.html',
title='Configuration',
# Copyright (C) 2014 Ipsilon Contributors see COPYING for license
import cherrypy
# Copyright (C) 2014 Ipsilon Contributors see COPYING for license
import cherrypy
-from ipsilon.util.page import admin_protect, auth_protect
+from ipsilon.util.page import admin_protect
from ipsilon.util.plugin import PluginObject
from ipsilon.admin.common import AdminPluginPage
from ipsilon.admin.common import AdminPage
from ipsilon.util.plugin import PluginObject
from ipsilon.admin.common import AdminPluginPage
from ipsilon.admin.common import AdminPage
enabled=ordered,
menu=self._master.menu)
enabled=ordered,
menu=self._master.menu)
def root(self, *args, **kwargs):
return self.root_with_msg()
def root(self, *args, **kwargs):
return self.root_with_msg()
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import cherrypy
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import cherrypy
-from ipsilon.util.page import admin_protect, auth_protect
+from ipsilon.util.page import admin_protect
from ipsilon.util.plugin import PluginObject
from ipsilon.admin.common import AdminPluginPage
from ipsilon.admin.common import AdminPage
from ipsilon.util.plugin import PluginObject
from ipsilon.admin.common import AdminPluginPage
from ipsilon.admin.common import AdminPage
enabled=ordered,
menu=self._master.menu)
enabled=ordered,
menu=self._master.menu)
def root(self, *args, **kwargs):
return self.root_with_msg()
def root(self, *args, **kwargs):
return self.root_with_msg()
-from ipsilon.util.page import admin_protect, auth_protect
+from ipsilon.util.page import admin_protect
from ipsilon.providers.common import FACILITY
from ipsilon.admin.common import AdminPluginPage
from ipsilon.admin.common import AdminPage
from ipsilon.providers.common import FACILITY
from ipsilon.admin.common import AdminPluginPage
from ipsilon.admin.common import AdminPage
enabled=enabled_plugins,
menu=self._master.menu)
enabled=enabled_plugins,
menu=self._master.menu)
def root(self, *args, **kwargs):
return self.root_with_msg()
def root(self, *args, **kwargs):
return self.root_with_msg()
-def auth_protect(fn):
- def check(self, *args, **kwargs):
- if UserSession().get_user().is_anonymous:
- raise cherrypy.HTTPRedirect(self.basepath)
- else:
- return fn(self, *args, **kwargs)
-
- return check
-
-
class Page(Log):
def __init__(self, site, form=False):
if 'template_env' not in site:
class Page(Log):
def __init__(self, site, form=False):
if 'template_env' not in site:
self.user = None
self._is_form_page = form
self.default_headers = dict()
self.user = None
self._is_form_page = form
self.default_headers = dict()
+ self.auth_protect = False
def _compare_urls(self, url1, url2):
u1 = unquote(url1)
def _compare_urls(self, url1, url2):
u1 = unquote(url1)
self.user = UserSession().get_user()
self.user = UserSession().get_user()
+ if self.auth_protect and self.user.is_anonymous:
+ raise cherrypy.HTTPError(401)
+
if len(args) > 0:
op = getattr(self, args[0], None)
if callable(op) and getattr(op, 'public_function', None):
if len(args) > 0:
op = getattr(self, args[0], None)
if callable(op) and getattr(op, 'public_function', None):