def login_required(func): def inner(request, *args, **kwargs): if request.user.is_anonymous(): if request.is_xhr: return Forbidden() else: return redirect(create_login_url(request.url)) return func(request, *args, **kwargs) update_wrapper(inner, func) return inner login_required = auto_adapt_to_methods(login_required) def admin_required(func): def inner(request, *args, **kwargs): if not request.user.is_admin: if request.user.is_anonymous(): return redirect(create_login_url(request.url)) else: # TODO: Lead to more user friendly error page. raise Forbidden( description= '<p>You don\'t have the permission to access the requested resource.' ' It is either read-protected or not readable by the server.</p>' ' Maybe you want <a href="%s">logout</a>?' % create_logout_url(request.url))
# -*- coding: utf-8 -*- """ Kay cache decorators :Copyright: (c) 2009 Accense Technology, Inc., Takashi Matsuo <*****@*****.**> All rights reserved. :license: BSD, see LICENSE for more details. """ import kay.cache from kay.utils.decorators import ( decorator_from_middleware_with_args, decorator_from_middleware, auto_adapt_to_methods, ) from kay.cache.middleware import CacheMiddleware def no_cache(func): """ This is a decortor for marking particular view not to cache. """ setattr(func, kay.cache.NO_CACHE, True) return func no_cache = auto_adapt_to_methods(no_cache) cache_page = decorator_from_middleware_with_args(CacheMiddleware)
def gaema_login_required(*services): def outer(func): inner = create_inner_func_for_auth(func, *services) update_wrapper(inner, func) return inner return auto_adapt_to_methods(outer)
) from kay.ext.gaema.services import ( GOOG_OPENID, GOOG_HYBRID, TWITTER, FACEBOOK, ) def create_inner_func_for_auth(func, *targets): def inner(request, *args, **kwargs): for service in targets: if get_gaema_user(service): return func(request, *args, **kwargs) return redirect(url_for('gaema/select_service', targets='|'.join(targets), next_url=url_quote_plus(request.url))) return inner def gaema_login_required(*services): def outer(func): inner = create_inner_func_for_auth(func, *services) update_wrapper(inner, func) return inner return auto_adapt_to_methods(outer) def marketplace_login_required(func): def inner(request, *args, **kwargs): if get_gaema_user(kwargs['domain_name']): return func(request, *args, **kwargs) return redirect(create_marketplace_login_url(kwargs['domain_name'], nexturl=request.url)) return inner marketplace_login_required = auto_adapt_to_methods(marketplace_login_required)
create_login_url, create_logout_url ) from kay.utils.decorators import auto_adapt_to_methods def login_required(func): def inner(request, *args, **kwargs): if request.user.is_anonymous(): if request.is_xhr: return Forbidden() else: return redirect(create_login_url(request.url)) return func(request, *args, **kwargs) update_wrapper(inner, func) return inner login_required = auto_adapt_to_methods(login_required) def admin_required(func): def inner(request, *args, **kwargs): if not request.user.is_admin: if request.user.is_anonymous(): return redirect(create_login_url(request.url)) else: # TODO: Lead to more user friendly error page. raise Forbidden( description = '<p>You don\'t have the permission to access the requested resource.' ' It is either read-protected or not readable by the server.</p>' ' Maybe you want <a href="%s">logout</a>?' % create_logout_url(request.url) )
def wrapped(request, course): course.update_view_count(n) return fun(request, course) return wrapped return decorate def admin_or_owner_required(func): def inner(request, course, *args, **kwargs): if not request.user.is_admin: if not request.user == course.owner: if request.user.is_anonymous(): return redirect(local.app.auth_backend.create_login_url(request.url)) else: # TODO: Lead to more user friendly error page. raise Forbidden( description="<p>You don't have the permission to access the requested resource." " It is either read-protected or not readable by the server.</p>" ' Maybe you want <a href="%s">logout</a>?' % local.app.auth_backend.create_logout_url(request.url) ) return func(request, course, *args, **kwargs) update_wrapper(inner, func) return inner admin_or_owner_required = auto_adapt_to_methods(admin_or_owner_required)