Example #1
0
    def decorate(action):
        def f(*a, **b):
            if auth.user is not None:
                res = None
                try:
                    from gluon.contrib.simplejsonrpc import ServerProxy
                    url = settings.rpc_server + "/cba/admin/call/jsonrpc"
                    service = ServerProxy(url)
                    res = service.check_permission(request.application, request.controller,
                                                   request.function, auth.user.token)
                except:
                    # print auth.user.token
                    # import traceback
                    # traceback.print_exc()
                    pass
                finally:
                    if res and "result" in res and res["result"] is True:
                        auth.user.permissions = res["permissions"]
                        return action(*a, **b)
            if request.is_restful:
                raise HTTP(401)
            else:
                #session.flash = "Bạn không có quyền truy cập!" if not "message" in res else res["message"]
                redirect(URL(c='default', f='index'))
        f.__doc__ = action.__doc__
        f.__name__ = action.__name__
        f.__dict__.update(action.__dict__)
        return f
    return decorate
auth.requires_authorize = __authorize