auth.accessible_query(query or set), isue 1356, thanks Alan
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.4.1-alpha.2+timestamp.2013.03.02.11.29.19
|
Version 2.4.1-alpha.2+timestamp.2013.03.02.12.51.44
|
||||||
|
|||||||
+13
-2
@@ -32,7 +32,7 @@ from gluon import *
|
|||||||
from gluon.contrib.autolinks import expand_one
|
from gluon.contrib.autolinks import expand_one
|
||||||
from gluon.contrib.markmin.markmin2html import \
|
from gluon.contrib.markmin.markmin2html import \
|
||||||
replace_at_urls, replace_autolinks, replace_components
|
replace_at_urls, replace_autolinks, replace_components
|
||||||
from gluon.dal import Row
|
from gluon.dal import Row, Set, Query
|
||||||
|
|
||||||
import gluon.serializers as serializers
|
import gluon.serializers as serializers
|
||||||
|
|
||||||
@@ -3210,12 +3210,23 @@ class Auth(object):
|
|||||||
"""
|
"""
|
||||||
if not user_id:
|
if not user_id:
|
||||||
user_id = self.user_id
|
user_id = self.user_id
|
||||||
|
db = self.db
|
||||||
if isinstance(table, str) and table in self.db.tables():
|
if isinstance(table, str) and table in self.db.tables():
|
||||||
table = self.db[table]
|
table = self.db[table]
|
||||||
|
elif isinstance(table, (Set, Query)):
|
||||||
|
# experimental: build a chained query for all tables
|
||||||
|
if isinstance(table, Set):
|
||||||
|
cquery = table.query
|
||||||
|
else:
|
||||||
|
cquery = table
|
||||||
|
tablenames = db._adapter.tables(cquery)
|
||||||
|
for tablename in tablenames:
|
||||||
|
cquery &= self.accessible_query(name, tablename,
|
||||||
|
user_id=user_id)
|
||||||
|
return cquery
|
||||||
if not isinstance(table, str) and\
|
if not isinstance(table, str) and\
|
||||||
self.has_permission(name, table, 0, user_id):
|
self.has_permission(name, table, 0, user_id):
|
||||||
return table.id > 0
|
return table.id > 0
|
||||||
db = self.db
|
|
||||||
membership = self.table_membership()
|
membership = self.table_membership()
|
||||||
permission = self.table_permission()
|
permission = self.table_permission()
|
||||||
query = table.id.belongs(
|
query = table.id.belongs(
|
||||||
|
|||||||
Reference in New Issue
Block a user