From a8ce11cea15f572925793b181a06fdd5b9b4127a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Wed, 3 Sep 2014 23:22:43 +0200 Subject: [PATCH 1/1] =?utf8?q?Impl=C3=A9mentation=20du=20mode=20anonyme=20?= =?utf8?q?avec=20mot=20de=20passe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- RegistrationTool.py | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/RegistrationTool.py b/RegistrationTool.py index 61505d7..8c2911d 100644 --- a/RegistrationTool.py +++ b/RegistrationTool.py @@ -169,14 +169,34 @@ class RegistrationTool(BaseRegistrationTool) : security.declareProtected(AddPortalMember, 'addMember') def addMember(self, id, password, roles=(), groups=(DEFAULT_MEMBER_GROUP,), domains='', properties=None) : """ Idem CMFCore but without default role """ - BaseRegistrationTool.addMember(self, id, password, roles=roles, - domains=domains, properties=properties) - if self.getMode() in [MODE_ANONYMOUS, MODE_MANAGER] : + if self.getMode() != MODE_REVIEWED : gtool = getToolByName(self, 'portal_groups') mtool = getToolByName(self, 'portal_membership') utool = getToolByName(self, 'portal_url') portal = utool.getPortalObject() + + if self.getMode() == MODE_PASS_ANONYMOUS : + private_collections = portal.get('private_collections') + if not private_collections : + raise AccessControl_Unauthorized() + return + data = private_collections.data + lines = filter(None, [l.strip() for l in data.split('\n')]) + assert len(lines) % 3 == 0 + collecInfos = {} + for i in xrange(0, len(lines), 3) : + collecInfos[lines[i]] = {'pw' : lines[i+1], + 'path' : lines[i+2]} + if not (collecInfos.has_key(properties.get('collection_id')) and \ + collecInfos[properties.get('collection_id')]['pw'] == properties.get('collection_password')) : + raise AccessControl_Unauthorized('Wrong primary credentials') + return + + + BaseRegistrationTool.addMember(self, id, password, roles=roles, + domains=domains, properties=properties) + isGrpManager = mtool.checkPermission(ManageGroups, portal) ## TODO : CMF2.1 compat aclu = self.aq_inner.acl_users @@ -191,6 +211,9 @@ class RegistrationTool(BaseRegistrationTool) : aclu.changeUser(aclu.getGroupPrefix() +gid, roles=['Member', ]) g = gtool.getGroupById(gid) g.addMember(id) + else : + BaseRegistrationTool.addMember(self, id, password, roles=roles, + domains=domains, properties=properties) def afterAdd(self, member, id, password, properties): -- 2.20.1