fix: split MemberRegistration to enable only Pricipal creationi
This commit is contained in:
		
							parent
							
								
									f8abff58d6
								
							
						
					
					
						commit
						40a5134648
					
				
					 1 changed files with 16 additions and 4 deletions
				
			
		|  | @ -71,7 +71,13 @@ class MemberRegistrationManager(object): | ||||||
|         options = IOptions(personType) |         options = IOptions(personType) | ||||||
|         pfName = options(self.principalfolder_key, |         pfName = options(self.principalfolder_key, | ||||||
|                          (self.default_principalfolder,))[0] |                          (self.default_principalfolder,))[0] | ||||||
|         # step 1: create an internal principal in the loops principal folder: |         self.createPrincipal(pfName, userId, password, lastName, firstName) | ||||||
|  |         groups = options(self.groups_key, ()) | ||||||
|  |         self.setGroupsForPrincipal(pfName, userId,  groups=groups) | ||||||
|  |         self.createPersonForPrincipal(self, pfName, userId, lastName, firstName=firstName, useExisting=useExisting, **kw) | ||||||
|  | 
 | ||||||
|  |     def createPrincipal(self, pfName, userId, password, lastName, | ||||||
|  |                               firstName=u'', groups=[], useExisting=False, **kw): | ||||||
|         pFolder = getPrincipalFolder(self.context, pfName) |         pFolder = getPrincipalFolder(self.context, pfName) | ||||||
|         if IPersonBasedAuthenticator.providedBy(pFolder): |         if IPersonBasedAuthenticator.providedBy(pFolder): | ||||||
|              pFolder.setPassword(userId, password) |              pFolder.setPassword(userId, password) | ||||||
|  | @ -86,8 +92,9 @@ class MemberRegistrationManager(object): | ||||||
|                     return dict(fieldName='loginName', error='duplicate_loginname') |                     return dict(fieldName='loginName', error='duplicate_loginname') | ||||||
|                 else: |                 else: | ||||||
|                     pFolder[userId] = principal |                     pFolder[userId] = principal | ||||||
|         # step 2 (optional): assign to group(s) | 
 | ||||||
|         groups = options(self.groups_key, ()) |     def setGroupsForPrincipal(self, pfName, userId, groups=[]): | ||||||
|  |         pFolder = getPrincipalFolder(self.context, pfName) | ||||||
|         for groupInfo in groups: |         for groupInfo in groups: | ||||||
|             names = groupInfo.split(':') |             names = groupInfo.split(':') | ||||||
|             if len(names) == 1: |             if len(names) == 1: | ||||||
|  | @ -101,7 +108,12 @@ class MemberRegistrationManager(object): | ||||||
|                     members = list(group.principals) |                     members = list(group.principals) | ||||||
|                     members.append(pFolder.prefix + userId) |                     members.append(pFolder.prefix + userId) | ||||||
|                     group.principals = members |                     group.principals = members | ||||||
|         # step 3: create a corresponding person concept: | 
 | ||||||
|  |     def createPersonForPrincipal(self, pfName, userId, lastName, firstName=u'', useExisting=False, **kw): | ||||||
|  |         concepts = self.context.getConceptManager() | ||||||
|  |         personType = adapted(concepts[self.person_typeName]) | ||||||
|  |         pFolder = getPrincipalFolder(self.context, pfName) | ||||||
|  |         title = firstName and ' '.join((firstName, lastName)) or lastName | ||||||
|         name = baseId = 'person.' + userId |         name = baseId = 'person.' + userId | ||||||
|         if useExisting and name in concepts: |         if useExisting and name in concepts: | ||||||
|             person = concepts[name] |             person = concepts[name] | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 hplattner
						hplattner