From 97200e5454c345d6369225007a6e39cd705b696e Mon Sep 17 00:00:00 2001 From: Alexander Gavrilov Date: Sun, 12 Oct 2008 12:30:20 +0400 Subject: [PATCH] Support specifying access directly for users. Add support for [user ...] sections, which behave as one-user groups. They take precedence over old group sections. Signed-off-by: Alexander Gavrilov --- gitosis/access.py | 13 ++++++++----- gitosis/test/test_access.py | 8 ++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/gitosis/access.py b/gitosis/access.py index c95c842..ef9ee74 100644 --- a/gitosis/access.py +++ b/gitosis/access.py @@ -33,9 +33,13 @@ def haveAccess(config, user, mode, path): )) path = basename - for groupname in group.getMembership(config=config, user=user): + sections = ['group %s' % item for item in + group.getMembership(config=config, user=user)] + sections.insert(0, 'user %s' % user) + + for sectname in sections: try: - repos = config.get('group %s' % groupname, mode) + repos = config.get(sectname, mode) except (NoSectionError, NoOptionError): repos = [] else: @@ -54,7 +58,7 @@ def haveAccess(config, user, mode, path): mapping = path else: try: - mapping = config.get('group %s' % groupname, + mapping = config.get(sectname, 'map %s %s' % (mode, path)) except (NoSectionError, NoOptionError): pass @@ -71,8 +75,7 @@ def haveAccess(config, user, mode, path): if mapping is not None: prefix = None try: - prefix = config.get( - 'group %s' % groupname, 'repositories') + prefix = config.get(sectname, 'repositories') except (NoSectionError, NoOptionError): try: prefix = config.get('gitosis', 'repositories') diff --git a/gitosis/test/test_access.py b/gitosis/test/test_access.py index f39444c..9510abc 100644 --- a/gitosis/test/test_access.py +++ b/gitosis/test/test_access.py @@ -130,6 +130,14 @@ def test_base_global_unset(): config=cfg, user='jdoe', mode='readonly', path='xyzzy'), ('repositories', 'xyzzy')) +def test_user(): + cfg = RawConfigParser() + cfg.add_section('user jdoe') + cfg.set('user jdoe', 'readonly', 'foo xyzzy bar') + eq(access.haveAccess( + config=cfg, user='jdoe', mode='readonly', path='xyzzy'), + ('repositories', 'xyzzy')) + def test_base_local(): cfg = RawConfigParser() cfg.add_section('group fooers') -- 2.11.4.GIT