Merge pull request #1299 from BuhtigithuB/improve/auth-tests
New Auth tests
This commit is contained in:
+263
-16
@@ -494,9 +494,7 @@ class TestAuth(unittest.TestCase):
|
|||||||
self.assertTrue('auth_permission' in self.db)
|
self.assertTrue('auth_permission' in self.db)
|
||||||
self.assertTrue('auth_event' in self.db)
|
self.assertTrue('auth_event' in self.db)
|
||||||
|
|
||||||
def test_enable_record_versioning(self):
|
# Just calling many form functions
|
||||||
self.assertTrue('t0_archive' in self.db)
|
|
||||||
|
|
||||||
def test_basic_blank_forms(self):
|
def test_basic_blank_forms(self):
|
||||||
for f in ['login', 'retrieve_password', 'retrieve_username', 'register']:
|
for f in ['login', 'retrieve_password', 'retrieve_username', 'register']:
|
||||||
html_form = getattr(self.auth, f)().xml()
|
html_form = getattr(self.auth, f)().xml()
|
||||||
@@ -517,6 +515,63 @@ class TestAuth(unittest.TestCase):
|
|||||||
pass
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def test_get_vars_next(self):
|
||||||
|
self.current.request.vars._next = 'next_test'
|
||||||
|
self.assertEqual(self.auth.get_vars_next(), 'next_test')
|
||||||
|
|
||||||
|
# TODO: def test_navbar(self):
|
||||||
|
# TODO: def test___get_migrate(self):
|
||||||
|
|
||||||
|
def test_enable_record_versioning(self):
|
||||||
|
self.assertTrue('t0_archive' in self.db)
|
||||||
|
|
||||||
|
# TODO: def test_define_signature(self):
|
||||||
|
# TODO: def test_define_signature(self):
|
||||||
|
# TODO: def test_define_table(self):
|
||||||
|
|
||||||
|
def test_log_event(self):
|
||||||
|
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
||||||
|
bart_id = self.db(self.db.auth_user.username == 'bart').select(self.db.auth_user.id).first().id
|
||||||
|
# user logged in
|
||||||
|
self.auth.log_event(description='some_log_event_description_%(var1)s',
|
||||||
|
vars={"var1": "var1"},
|
||||||
|
origin='log_event_test_1')
|
||||||
|
rtn = self.db(self.db.auth_event.origin == 'log_event_test_1'
|
||||||
|
).select(*[self.db.auth_event[f]
|
||||||
|
for f in self.db.auth_event.fields if f not in ('id', 'time_stamp')]).first().as_dict()
|
||||||
|
self.assertEqual(set(rtn.items()), set({'origin': 'log_event_test_1',
|
||||||
|
'client_ip': None,
|
||||||
|
'user_id': bart_id,
|
||||||
|
'description': 'some_log_event_description_var1'}.items()))
|
||||||
|
# user not logged
|
||||||
|
self.auth.logout_bare()
|
||||||
|
self.auth.log_event(description='some_log_event_description_%(var2)s',
|
||||||
|
vars={"var2": "var2"},
|
||||||
|
origin='log_event_test_2')
|
||||||
|
rtn = self.db(self.db.auth_event.origin == 'log_event_test_2'
|
||||||
|
).select(*[self.db.auth_event[f]
|
||||||
|
for f in self.db.auth_event.fields if f not in ('id', 'time_stamp')]).first().as_dict()
|
||||||
|
self.assertEqual(set(rtn.items()), set({'origin': 'log_event_test_2',
|
||||||
|
'client_ip': None,
|
||||||
|
'user_id': None,
|
||||||
|
'description': 'some_log_event_description_var2'}.items()))
|
||||||
|
# no logging tests
|
||||||
|
self.auth.settings.logging_enabled = False
|
||||||
|
count_log_event_test_before = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
self.auth.log_event(description='some_log_event_description_%(var3)s',
|
||||||
|
vars={"var3": "var3"},
|
||||||
|
origin='log_event_test_3')
|
||||||
|
count_log_event_test_after = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
self.assertEqual(count_log_event_test_after, count_log_event_test_before)
|
||||||
|
self.auth.settings.logging_enabled = True
|
||||||
|
count_log_event_test_before = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
self.auth.log_event(description=None,
|
||||||
|
vars={"var4": "var4"},
|
||||||
|
origin='log_event_test_4')
|
||||||
|
count_log_event_test_after = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
self.assertEqual(count_log_event_test_after, count_log_event_test_before)
|
||||||
|
# TODO: Corner case translated description...
|
||||||
|
|
||||||
def test_get_or_create_user(self):
|
def test_get_or_create_user(self):
|
||||||
self.db.auth_user.insert(email='user1@test.com', username='user1', password='password_123')
|
self.db.auth_user.insert(email='user1@test.com', username='user1', password='password_123')
|
||||||
self.db.commit()
|
self.db.commit()
|
||||||
@@ -539,6 +594,10 @@ class TestAuth(unittest.TestCase):
|
|||||||
self.db.auth_user.truncate()
|
self.db.auth_user.truncate()
|
||||||
self.db.commit()
|
self.db.commit()
|
||||||
|
|
||||||
|
# TODO: def test_basic(self):
|
||||||
|
# TODO: def test_login_user(self):
|
||||||
|
# TODO: def test__get_login_settings(self):
|
||||||
|
|
||||||
# login_bare() seems broken see my post on web2py-developpers
|
# login_bare() seems broken see my post on web2py-developpers
|
||||||
# commented for now
|
# commented for now
|
||||||
# def test_login_bare(self):
|
# def test_login_bare(self):
|
||||||
@@ -550,12 +609,6 @@ class TestAuth(unittest.TestCase):
|
|||||||
# self.auth.logout_bare()
|
# self.auth.logout_bare()
|
||||||
# self.db.auth_user.truncate()
|
# self.db.auth_user.truncate()
|
||||||
|
|
||||||
def test_logout_bare(self):
|
|
||||||
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
|
||||||
self.assertTrue(self.auth.is_logged_in())
|
|
||||||
self.auth.logout_bare()
|
|
||||||
self.assertFalse(self.auth.is_logged_in())
|
|
||||||
|
|
||||||
def test_register_bare(self):
|
def test_register_bare(self):
|
||||||
# corner case empty register call register_bare without args
|
# corner case empty register call register_bare without args
|
||||||
self.assertRaises(ValueError, self.auth.register_bare)
|
self.assertRaises(ValueError, self.auth.register_bare)
|
||||||
@@ -574,12 +627,50 @@ class TestAuth(unittest.TestCase):
|
|||||||
self.db.auth_user.truncate()
|
self.db.auth_user.truncate()
|
||||||
self.db.commit()
|
self.db.commit()
|
||||||
|
|
||||||
|
# TODO: def test_cas_login(self):
|
||||||
|
# TODO: def test_cas_validate(self):
|
||||||
|
# TODO: def test__reset_two_factor_auth(self):
|
||||||
|
# TODO: def test_when_is_logged_in_bypass_next_in_url(self):
|
||||||
|
# TODO: def test_login(self):
|
||||||
|
# TODO: def test_logout(self):
|
||||||
|
|
||||||
|
def test_logout_bare(self):
|
||||||
|
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
||||||
|
self.assertTrue(self.auth.is_logged_in())
|
||||||
|
self.auth.logout_bare()
|
||||||
|
self.assertFalse(self.auth.is_logged_in())
|
||||||
|
|
||||||
|
# TODO: def test_register(self):
|
||||||
|
|
||||||
|
def test_is_logged_in(self):
|
||||||
|
self.auth.user = 'logged_in'
|
||||||
|
self.assertTrue(self.auth.is_logged_in())
|
||||||
|
self.auth.user = None
|
||||||
|
self.assertFalse(self.auth.is_logged_in())
|
||||||
|
|
||||||
|
# TODO: def test_verify_email(self):
|
||||||
|
# TODO: def test_retrieve_username(self):
|
||||||
|
|
||||||
|
def test_random_password(self):
|
||||||
|
# let just check that the function is callable
|
||||||
|
self.assertTrue(self.auth.random_password())
|
||||||
|
|
||||||
|
# TODO: def test_reset_password_deprecated(self):
|
||||||
|
# TODO: def test_confirm_registration(self):
|
||||||
|
# TODO: def test_email_registration(self):
|
||||||
|
|
||||||
def test_bulk_register(self):
|
def test_bulk_register(self):
|
||||||
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
||||||
self.auth.settings.bulk_register_enabled = True
|
self.auth.settings.bulk_register_enabled = True
|
||||||
bulk_register_form = self.auth.bulk_register(max_emails=10).xml()
|
bulk_register_form = self.auth.bulk_register(max_emails=10).xml()
|
||||||
self.assertTrue('name="_formkey"' in bulk_register_form)
|
self.assertTrue('name="_formkey"' in bulk_register_form)
|
||||||
|
|
||||||
|
# TODO: def test_manage_tokens(self):
|
||||||
|
# TODO: def test_reset_password(self):
|
||||||
|
# TODO: def test_request_reset_password(self):
|
||||||
|
# TODO: def test_email_reset_password(self):
|
||||||
|
# TODO: def test_retrieve_password(self):
|
||||||
|
|
||||||
def test_change_password(self):
|
def test_change_password(self):
|
||||||
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
||||||
change_password_form = getattr(self.auth, 'change_password')().xml()
|
change_password_form = getattr(self.auth, 'change_password')().xml()
|
||||||
@@ -590,9 +681,9 @@ class TestAuth(unittest.TestCase):
|
|||||||
profile_form = getattr(self.auth, 'profile')().xml()
|
profile_form = getattr(self.auth, 'profile')().xml()
|
||||||
self.assertTrue('name="_formkey"' in profile_form)
|
self.assertTrue('name="_formkey"' in profile_form)
|
||||||
|
|
||||||
def test_get_vars_next(self):
|
# TODO: def test_run_login_onaccept(self):
|
||||||
self.current.request.vars._next = 'next_test'
|
# TODO: def test_jwt(self):
|
||||||
self.assertEqual(self.auth.get_vars_next(), 'next_test')
|
# TODO: def test_is_impersonating(self):
|
||||||
|
|
||||||
def test_impersonate(self):
|
def test_impersonate(self):
|
||||||
# Create a user to be impersonated
|
# Create a user to be impersonated
|
||||||
@@ -655,7 +746,9 @@ class TestAuth(unittest.TestCase):
|
|||||||
self.assertTrue(self.auth.is_impersonating())
|
self.assertTrue(self.auth.is_impersonating())
|
||||||
self.assertEqual(self.auth.impersonate(user_id=0), None)
|
self.assertEqual(self.auth.impersonate(user_id=0), None)
|
||||||
|
|
||||||
def test_group(self):
|
# TODO: def test_update_groups(self):
|
||||||
|
|
||||||
|
def test_groups(self):
|
||||||
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
||||||
self.assertEqual(self.auth.groups().xml(),
|
self.assertEqual(self.auth.groups().xml(),
|
||||||
'<table><tr><td><h3>user_1(1)</h3></td></tr><tr><td><p></p></td></tr></table>')
|
'<table><tr><td><h3>user_1(1)</h3></td></tr><tr><td><p></p></td></tr></table>')
|
||||||
@@ -663,6 +756,22 @@ class TestAuth(unittest.TestCase):
|
|||||||
def test_not_authorized(self):
|
def test_not_authorized(self):
|
||||||
self.current.request.ajax = 'facke_ajax_request'
|
self.current.request.ajax = 'facke_ajax_request'
|
||||||
self.assertRaisesRegexp(HTTP, "403*", self.auth.not_authorized)
|
self.assertRaisesRegexp(HTTP, "403*", self.auth.not_authorized)
|
||||||
|
self.current.request.ajax = None
|
||||||
|
self.assertEqual(self.auth.not_authorized(), self.auth.messages.access_denied)
|
||||||
|
|
||||||
|
def test_allows_jwt(self):
|
||||||
|
self.assertRaisesRegexp(HTTP, "400*", self.auth.allows_jwt)
|
||||||
|
|
||||||
|
# TODO: def test_requires(self):
|
||||||
|
# TODO: def test_requires_login(self):
|
||||||
|
# TODO: def test_requires_login_or_token(self):
|
||||||
|
# TODO: def test_requires_membership(self):
|
||||||
|
# TODO: def test_requires_permission(self):
|
||||||
|
# TODO: def test_requires_signature(self):
|
||||||
|
|
||||||
|
def test_add_group(self):
|
||||||
|
self.assertEqual(self.auth.add_group(role='a_group', description='a_group_role_description'),
|
||||||
|
self.db(self.db.auth_group.role == 'a_group').select(self.db.auth_group.id).first().id)
|
||||||
|
|
||||||
def test_del_group(self):
|
def test_del_group(self):
|
||||||
bart_group_id = 1 # Should be group 1, 'user_1'
|
bart_group_id = 1 # Should be group 1, 'user_1'
|
||||||
@@ -677,13 +786,151 @@ class TestAuth(unittest.TestCase):
|
|||||||
self.assertEqual(self.auth.user_group(user_id=1), 1)
|
self.assertEqual(self.auth.user_group(user_id=1), 1)
|
||||||
# Bart should be user 1 and it unique group should be 1, 'user_1'
|
# Bart should be user 1 and it unique group should be 1, 'user_1'
|
||||||
|
|
||||||
|
def test_user_group_role(self):
|
||||||
|
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
||||||
|
user_group_role = 'user_%s' % self.db(self.db.auth_user.username == 'bart'
|
||||||
|
).select(self.db.auth_user.id).first().id
|
||||||
|
self.assertEqual(self.auth.user_group_role(), user_group_role)
|
||||||
|
self.auth.logout_bare()
|
||||||
|
# with user_id args
|
||||||
|
self.assertEqual(self.auth.user_group_role(user_id=1), 'user_1')
|
||||||
|
# test None
|
||||||
|
self.auth.settings.create_user_groups = None
|
||||||
|
self.assertEqual(self.auth.user_group_role(user_id=1), None)
|
||||||
|
|
||||||
def test_has_membership(self):
|
def test_has_membership(self):
|
||||||
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
||||||
|
self.assertTrue(self.auth.has_membership('user_1'))
|
||||||
|
self.assertFalse(self.auth.has_membership('user_555'))
|
||||||
self.assertTrue(self.auth.has_membership(group_id=1))
|
self.assertTrue(self.auth.has_membership(group_id=1))
|
||||||
self.assertTrue(self.auth.has_membership(role='user_1'))
|
self.auth.logout_bare()
|
||||||
|
self.assertTrue(self.auth.has_membership(role='user_1', user_id=1))
|
||||||
|
self.assertTrue(self.auth.has_membership(group_id=1, user_id=1))
|
||||||
|
# check that event is logged
|
||||||
|
count_log_event_test_before = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
self.assertTrue(self.auth.has_membership(group_id=1, user_id=1))
|
||||||
|
count_log_event_test_after = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
self.assertEqual(count_log_event_test_after, count_log_event_test_before)
|
||||||
|
|
||||||
def test_allows_jwt(self):
|
# Waiting guidance : https://github.com/web2py/web2py/issues/1300
|
||||||
self.assertRaisesRegexp(HTTP, "400*", self.auth.allows_jwt)
|
# def test_add_membership(self):
|
||||||
|
# self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
||||||
|
# # failing case
|
||||||
|
# rtn = self.auth.add_membership('not_existing_role_name')
|
||||||
|
# # self.assertEqual(rtn, 'test')
|
||||||
|
# self.assertEqual(self.db(self.db.auth_group.role == 'not_existing_role_name').select().first(), 'test')
|
||||||
|
|
||||||
|
def test_del_membership(self):
|
||||||
|
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
||||||
|
count_log_event_test_before = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
user_1_role_id = self.db(self.db.auth_membership.group_id == self.auth.id_group('user_1')
|
||||||
|
).select(self.db.auth_membership.id).first().id
|
||||||
|
self.assertEqual(self.auth.del_membership('user_1'), user_1_role_id)
|
||||||
|
count_log_event_test_after = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
# check that event is logged
|
||||||
|
self.assertEqual(count_log_event_test_after, count_log_event_test_before)
|
||||||
|
# not logged in test case
|
||||||
|
group_id = self.auth.add_group('some_test_group')
|
||||||
|
membership_id = self.auth.add_membership('some_test_group')
|
||||||
|
self.assertEqual(self.auth.user_groups[group_id], 'some_test_group')
|
||||||
|
self.auth.logout_bare()
|
||||||
|
# not deleted
|
||||||
|
self.assertFalse(self.auth.del_membership('some_test_group'))
|
||||||
|
self.assertEqual(set(self.db.auth_membership(membership_id).as_dict().items()),
|
||||||
|
set({'group_id': 2L, 'user_id': 1L, 'id': 2L}.items())) # is not deleted
|
||||||
|
# deleted
|
||||||
|
bart_id = self.db(self.db.auth_user.username == 'bart').select(self.db.auth_user.id).first().id
|
||||||
|
self.assertTrue(self.auth.del_membership('some_test_group', user_id=bart_id))
|
||||||
|
self.assertEqual(self.db.auth_membership(membership_id), None) # is really deleted
|
||||||
|
|
||||||
|
def test_has_permission(self):
|
||||||
|
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
||||||
|
bart_id = self.db(self.db.auth_user.username == 'bart').select(self.db.auth_user.id).first().id
|
||||||
|
self.auth.add_permission(group_id=self.auth.id_group('user_1'),
|
||||||
|
name='some_permission',
|
||||||
|
table_name='auth_user',
|
||||||
|
record_id=0,
|
||||||
|
)
|
||||||
|
# True case
|
||||||
|
self.assertTrue(self.auth.has_permission(name='some_permission',
|
||||||
|
table_name='auth_user',
|
||||||
|
record_id=0,
|
||||||
|
user_id=bart_id,
|
||||||
|
group_id=self.auth.id_group('user_1')))
|
||||||
|
# False case
|
||||||
|
self.assertFalse(self.auth.has_permission(name='some_other_permission',
|
||||||
|
table_name='auth_user',
|
||||||
|
record_id=0,
|
||||||
|
user_id=bart_id,
|
||||||
|
group_id=self.auth.id_group('user_1')))
|
||||||
|
|
||||||
|
def test_add_permission(self):
|
||||||
|
count_log_event_test_before = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
permission_id = \
|
||||||
|
self.auth.add_permission(group_id=self.auth.id_group('user_1'),
|
||||||
|
name='some_permission',
|
||||||
|
table_name='auth_user',
|
||||||
|
record_id=0,
|
||||||
|
)
|
||||||
|
count_log_event_test_after = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
# check that event is logged
|
||||||
|
self.assertEqual(count_log_event_test_after, count_log_event_test_before)
|
||||||
|
# True case
|
||||||
|
permission_count = \
|
||||||
|
self.db(self.db.auth_permission.id == permission_id).count()
|
||||||
|
self.assertTrue(permission_count)
|
||||||
|
# False case
|
||||||
|
permission_count = \
|
||||||
|
self.db((self.db.auth_permission.group_id == self.auth.id_group('user_1')) &
|
||||||
|
(self.db.auth_permission.name == 'no_permission') &
|
||||||
|
(self.db.auth_permission.table_name == 'no_table') &
|
||||||
|
(self.db.auth_permission.record_id == 0)).count()
|
||||||
|
self.assertFalse(permission_count)
|
||||||
|
# corner case
|
||||||
|
self.auth.login_user(self.db(self.db.auth_user.username == 'bart').select().first()) # bypass login_bare()
|
||||||
|
permission_id = \
|
||||||
|
self.auth.add_permission(group_id=0,
|
||||||
|
name='user_1_permission',
|
||||||
|
table_name='auth_user',
|
||||||
|
record_id=0,
|
||||||
|
)
|
||||||
|
permission_name = \
|
||||||
|
self.db(self.db.auth_permission.id == permission_id).select(self.db.auth_permission.name).first().name
|
||||||
|
self.assertEqual(permission_name, 'user_1_permission')
|
||||||
|
# add an existing permission
|
||||||
|
permission_id =\
|
||||||
|
self.auth.add_permission(group_id=0,
|
||||||
|
name='user_1_permission',
|
||||||
|
table_name='auth_user',
|
||||||
|
record_id=0,
|
||||||
|
)
|
||||||
|
self.assertTrue(permission_id)
|
||||||
|
|
||||||
|
def test_del_permission(self):
|
||||||
|
permission_id = \
|
||||||
|
self.auth.add_permission(group_id=self.auth.id_group('user_1'),
|
||||||
|
name='del_permission_test',
|
||||||
|
table_name='auth_user',
|
||||||
|
record_id=0,
|
||||||
|
)
|
||||||
|
count_log_event_test_before = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
self.assertTrue(self.auth.del_permission(group_id=self.auth.id_group('user_1'),
|
||||||
|
name='del_permission_test',
|
||||||
|
table_name='auth_user',
|
||||||
|
record_id=0,))
|
||||||
|
count_log_event_test_after = self.db(self.db.auth_event.id > 0).count()
|
||||||
|
# check that event is logged
|
||||||
|
self.assertEqual(count_log_event_test_after, count_log_event_test_before)
|
||||||
|
# really deleted
|
||||||
|
permission_count = \
|
||||||
|
self.db(self.db.auth_permission.id == permission_id).count()
|
||||||
|
self.assertFalse(permission_count)
|
||||||
|
|
||||||
|
# TODO: def test_accessible_query(self):
|
||||||
|
# TODO: def test_archive(self):
|
||||||
|
# TODO: def test_wiki(self):
|
||||||
|
# TODO: def test_wikimenu(self):
|
||||||
|
# End Auth test
|
||||||
|
|
||||||
|
|
||||||
# TODO: class TestCrud(unittest.TestCase):
|
# TODO: class TestCrud(unittest.TestCase):
|
||||||
|
|||||||
+22
-25
@@ -2527,9 +2527,7 @@ class Auth(object):
|
|||||||
# log messages should not be translated
|
# log messages should not be translated
|
||||||
if type(description).__name__ == 'lazyT':
|
if type(description).__name__ == 'lazyT':
|
||||||
description = description.m
|
description = description.m
|
||||||
self.table_event().insert(
|
self.table_event().insert(description=str(description % vars), origin=origin, user_id=user_id)
|
||||||
description=str(description % vars),
|
|
||||||
origin=origin, user_id=user_id)
|
|
||||||
|
|
||||||
def get_or_create_user(self, keys, update_fields=['email'],
|
def get_or_create_user(self, keys, update_fields=['email'],
|
||||||
login=True, get=True):
|
login=True, get=True):
|
||||||
@@ -2578,8 +2576,7 @@ class Auth(object):
|
|||||||
user_id = table_user.insert(**vars)
|
user_id = table_user.insert(**vars)
|
||||||
user = table_user[user_id]
|
user = table_user[user_id]
|
||||||
if self.settings.create_user_groups:
|
if self.settings.create_user_groups:
|
||||||
group_id = self.add_group(
|
group_id = self.add_group(self.settings.create_user_groups % user)
|
||||||
self.settings.create_user_groups % user)
|
|
||||||
self.add_membership(group_id, user_id)
|
self.add_membership(group_id, user_id)
|
||||||
if self.settings.everybody_group_id:
|
if self.settings.everybody_group_id:
|
||||||
self.add_membership(self.settings.everybody_group_id, user_id)
|
self.add_membership(self.settings.everybody_group_id, user_id)
|
||||||
@@ -3345,7 +3342,7 @@ class Auth(object):
|
|||||||
|
|
||||||
key = web2py_uuid()
|
key = web2py_uuid()
|
||||||
if self.settings.registration_requires_approval:
|
if self.settings.registration_requires_approval:
|
||||||
key = 'pending-'+key
|
key = 'pending-' + key
|
||||||
|
|
||||||
table_user.registration_key.default = key
|
table_user.registration_key.default = key
|
||||||
if form.accepts(request, session if self.csrf_prevention else None,
|
if form.accepts(request, session if self.csrf_prevention else None,
|
||||||
@@ -3354,12 +3351,10 @@ class Auth(object):
|
|||||||
hideerror=self.settings.hideerror):
|
hideerror=self.settings.hideerror):
|
||||||
description = self.messages.group_description % form.vars
|
description = self.messages.group_description % form.vars
|
||||||
if self.settings.create_user_groups:
|
if self.settings.create_user_groups:
|
||||||
group_id = self.add_group(
|
group_id = self.add_group(self.settings.create_user_groups % form.vars, description)
|
||||||
self.settings.create_user_groups % form.vars, description)
|
|
||||||
self.add_membership(group_id, form.vars.id)
|
self.add_membership(group_id, form.vars.id)
|
||||||
if self.settings.everybody_group_id:
|
if self.settings.everybody_group_id:
|
||||||
self.add_membership(
|
self.add_membership(self.settings.everybody_group_id, form.vars.id)
|
||||||
self.settings.everybody_group_id, form.vars.id)
|
|
||||||
if self.settings.registration_requires_verification:
|
if self.settings.registration_requires_verification:
|
||||||
link = self.url(
|
link = self.url(
|
||||||
self.settings.function, args=('verify_email', key), scheme=True)
|
self.settings.function, args=('verify_email', key), scheme=True)
|
||||||
@@ -4314,11 +4309,8 @@ class Auth(object):
|
|||||||
"""
|
"""
|
||||||
Creates a group associated to a role
|
Creates a group associated to a role
|
||||||
"""
|
"""
|
||||||
|
group_id = self.table_group().insert(role=role, description=description)
|
||||||
group_id = self.table_group().insert(
|
self.log_event(self.messages['add_group_log'], dict(group_id=group_id, role=role))
|
||||||
role=role, description=description)
|
|
||||||
self.log_event(self.messages['add_group_log'],
|
|
||||||
dict(group_id=group_id, role=role))
|
|
||||||
return group_id
|
return group_id
|
||||||
|
|
||||||
def del_group(self, group_id):
|
def del_group(self, group_id):
|
||||||
@@ -4328,7 +4320,8 @@ class Auth(object):
|
|||||||
self.db(self.table_group().id == group_id).delete()
|
self.db(self.table_group().id == group_id).delete()
|
||||||
self.db(self.table_membership().group_id == group_id).delete()
|
self.db(self.table_membership().group_id == group_id).delete()
|
||||||
self.db(self.table_permission().group_id == group_id).delete()
|
self.db(self.table_permission().group_id == group_id).delete()
|
||||||
if group_id in self.user_groups: del self.user_groups[group_id]
|
if group_id in self.user_groups:
|
||||||
|
del self.user_groups[group_id]
|
||||||
self.log_event(self.messages.del_group_log, dict(group_id=group_id))
|
self.log_event(self.messages.del_group_log, dict(group_id=group_id))
|
||||||
|
|
||||||
def id_group(self, role):
|
def id_group(self, role):
|
||||||
@@ -4360,7 +4353,6 @@ class Auth(object):
|
|||||||
"""
|
"""
|
||||||
Checks if user is member of group_id or role
|
Checks if user is member of group_id or role
|
||||||
"""
|
"""
|
||||||
|
|
||||||
group_id = group_id or self.id_group(role)
|
group_id = group_id or self.id_group(role)
|
||||||
try:
|
try:
|
||||||
group_id = int(group_id)
|
group_id = int(group_id)
|
||||||
@@ -4369,8 +4361,8 @@ class Auth(object):
|
|||||||
if not user_id and self.user:
|
if not user_id and self.user:
|
||||||
user_id = self.user.id
|
user_id = self.user.id
|
||||||
membership = self.table_membership()
|
membership = self.table_membership()
|
||||||
if group_id and user_id and self.db((membership.user_id == user_id)
|
if group_id and user_id and self.db((membership.user_id == user_id) &
|
||||||
& (membership.group_id == group_id)).select():
|
(membership.group_id == group_id)).select():
|
||||||
r = True
|
r = True
|
||||||
else:
|
else:
|
||||||
r = False
|
r = False
|
||||||
@@ -4417,6 +4409,10 @@ class Auth(object):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
group_id = group_id or self.id_group(role)
|
group_id = group_id or self.id_group(role)
|
||||||
|
try:
|
||||||
|
group_id = int(group_id)
|
||||||
|
except:
|
||||||
|
group_id = self.id_group(group_id) # interpret group_id as a role
|
||||||
if not user_id and self.user:
|
if not user_id and self.user:
|
||||||
user_id = self.user.id
|
user_id = self.user.id
|
||||||
membership = self.table_membership()
|
membership = self.table_membership()
|
||||||
@@ -6426,10 +6422,9 @@ class Wiki(object):
|
|||||||
args += value['args']
|
args += value['args']
|
||||||
db.define_table(key, *args, **value['vars'])
|
db.define_table(key, *args, **value['vars'])
|
||||||
|
|
||||||
if self.settings.templates is None and not \
|
if self.settings.templates is None and not self.settings.manage_permissions:
|
||||||
self.settings.manage_permissions:
|
self.settings.templates = \
|
||||||
self.settings.templates = db.wiki_page.tags.contains('template') & \
|
db.wiki_page.tags.contains('template') & db.wiki_page.can_read.contains('everybody')
|
||||||
db.wiki_page.can_read.contains('everybody')
|
|
||||||
|
|
||||||
def update_tags_insert(page, id, db=db):
|
def update_tags_insert(page, id, db=db):
|
||||||
for tag in page.tags or []:
|
for tag in page.tags or []:
|
||||||
@@ -6452,8 +6447,10 @@ class Wiki(object):
|
|||||||
'wiki_editor' not in auth.user_groups.values() and
|
'wiki_editor' not in auth.user_groups.values() and
|
||||||
self.settings.groups == auth.user_groups.values()):
|
self.settings.groups == auth.user_groups.values()):
|
||||||
group = db.auth_group(role='wiki_editor')
|
group = db.auth_group(role='wiki_editor')
|
||||||
gid = group.id if group else db.auth_group.insert(
|
if group:
|
||||||
role='wiki_editor')
|
gid = group.id
|
||||||
|
else:
|
||||||
|
db.auth_group.insert(role='wiki_editor')
|
||||||
auth.add_membership(gid)
|
auth.add_membership(gid)
|
||||||
|
|
||||||
settings.lock_keys = True
|
settings.lock_keys = True
|
||||||
|
|||||||
Reference in New Issue
Block a user