il devrait (c'est pas testé) être maintenant possible d'avoir des

identités/fiches personnes/comptes privés et que l'envoi du mot de passe par
email fonctionne qd même
This commit is contained in:
fpeters 2004-03-24 15:20:09 +00:00
parent b23719bb5a
commit ea2ac8aa85
8 changed files with 87 additions and 9 deletions

View File

@ -434,6 +434,18 @@ class IdentitiesServer(commonIdentities.IdentitiesCommonMixin,
return identityIdentification.localNameIdentifier return identityIdentification.localNameIdentifier
return None return None
def getObjectEmail(self, objectId):
virtualServerId = context.getVar('applicationId')
virtualServer = self.getVirtualServer(virtualServerId)
object = virtualServer.loadObjectCore(objectId)
if not object.personId:
return ''
from glasnost.proxy.tools import getProxy
personProxy = getProxy(object.personId)
return personProxy.getObjectEmail(object.personId)
def getObjectLabelAndLanguageXmlRpc(self, objectId): def getObjectLabelAndLanguageXmlRpc(self, objectId):
virtualServerId = context.getVar('applicationId') virtualServerId = context.getVar('applicationId')
virtualServer = self.getVirtualServer(virtualServerId) virtualServer = self.getVirtualServer(virtualServerId)
@ -535,6 +547,7 @@ class IdentitiesServer(commonIdentities.IdentitiesCommonMixin,
self.registerPublicMethod('getElectionVoteToken') self.registerPublicMethod('getElectionVoteToken')
self.registerPublicMethod('getLocalNameIdentifierIdentityProvider') self.registerPublicMethod('getLocalNameIdentifierIdentityProvider')
self.registerPublicMethod('getLocalNameIdentifierServiceProvider') self.registerPublicMethod('getLocalNameIdentifierServiceProvider')
self.registerPublicMethod('getObjectEmail')
self.registerPublicMethod('getPeerNameIdentifierIdentityProvider') self.registerPublicMethod('getPeerNameIdentifierIdentityProvider')
self.registerPublicMethod('getPeerNameIdentifierServiceProvider') self.registerPublicMethod('getPeerNameIdentifierServiceProvider')
self.registerPublicMethod('getPersonId') self.registerPublicMethod('getPersonId')

View File

@ -159,6 +159,24 @@ class NCardsServer(NCardsCommonMixin, ObjectsServer):
return applicationName return applicationName
raise 'aie' raise 'aie'
def getObjectEmail(self, objectId):
clientToken = context.getVar('clientToken')
clientId = getApplicationId(clientToken)
clientRole = commonTools.extractRole(clientId)
if clientRole != 'identities':
raise faults.ApplicationAccessDenied(clientId)
virtualServerId = context.getVar('applicationId')
virtualServer = self.getVirtualServer(virtualServerId)
object = virtualServer.loadObjectCore(objectId)
emailAddress = object.getEmail()
if not emailAddress:
return '' # or raise something ?
return emailAddress
def loadVirtualServer(self, virtualServer): def loadVirtualServer(self, virtualServer):
# ObjectsServer.loadVirtualServer; modified to user ncard.objectName # ObjectsServer.loadVirtualServer; modified to user ncard.objectName
# instead of self.applicationName # instead of self.applicationName
@ -273,6 +291,7 @@ class NCardsServer(NCardsCommonMixin, ObjectsServer):
def registerPublicMethods(self): def registerPublicMethods(self):
ObjectsServer.registerPublicMethods(self) ObjectsServer.registerPublicMethods(self)
self.registerPublicMethod('getObjectEmail')
self.registerPublicMethod('getObjectIdByRole') self.registerPublicMethod('getObjectIdByRole')
def pushContext(self, virtualServerId, clientToken, userToken): def pushContext(self, virtualServerId, clientToken, userToken):

View File

@ -254,22 +254,22 @@ class PasswordAccountsServer(
if not identity.personId: if not identity.personId:
print 'no personId for this identity' print 'no personId for this identity'
return return
person = getObject(identity.personId)
emailAddress = person.getEmail() emailAddress = identitiesProxy.getObjectEmail(object.identityId)
if not emailAddress: if not emailAddress:
raise faults.BadEmailAddress('') raise faults.BadEmailAddress('')
personProxy = getProxyForServerRole(
commonTools.extractRole(identity.personId))
personName, personLanguage = personProxy.getObjectLabelAndLanguage(
identity.personId)
toAddress = [emailAddress] toAddress = [emailAddress]
password = object.password password = object.password
language = object.getLanguage()
if not language:
language = 'en'
messageFileName = commonTools.getConfig( messageFileName = commonTools.getConfig(
commonTools.extractDispatcherId(object.id), commonTools.extractDispatcherId(object.id),
'WelcomeEmail-%s' % language) 'WelcomeEmail-%s' % personLanguage)
messageSubject = commonTools.getConfig( messageSubject = commonTools.getConfig(
commonTools.extractDispatcherId(object.id), commonTools.extractDispatcherId(object.id),
'WelcomeEmailSubject', 'WelcomeEmailSubject',
@ -294,7 +294,7 @@ The Glasnost administrator - %(fromAddress)s
virtualServerId) virtualServerId)
fromAddresses = self.getAdminEmailAddresses(stopAsap = 1) fromAddresses = self.getAdminEmailAddresses(stopAsap = 1)
message = message % { message = message % {
'user': person.getLabel(), 'user': personName,
'fromAddress': fromAddresses[0], 'fromAddress': fromAddresses[0],
'hostName': hostName, 'hostName': hostName,
'login': object.login, 'login': object.login,

View File

@ -283,6 +283,24 @@ class PeopleServer(PeopleCommonMixin, ObjectsServer):
if object.containsText(text): if object.containsText(text):
foundIds.append(objectId) foundIds.append(objectId)
return foundIds return foundIds
def getObjectEmail(self, objectId):
clientToken = context.getVar('clientToken')
clientId = getApplicationId(clientToken)
clientRole = commonTools.extractRole(clientId)
if clientRole != 'identities':
raise faults.ApplicationAccessDenied(clientId)
virtualServerId = context.getVar('applicationId')
virtualServer = self.getVirtualServer(virtualServerId)
object = virtualServer.loadObjectCore(objectId)
emailAddress = object.getEmail()
if not emailAddress:
return '' # or raise something ?
return emailAddress
def getObjectStringFromDigestXmlRpc(self, objectId, path, digest): def getObjectStringFromDigestXmlRpc(self, objectId, path, digest):
"""Retrieve a string in the specified object from its MD5 digest. """Retrieve a string in the specified object from its MD5 digest.
@ -413,6 +431,7 @@ class PeopleServer(PeopleCommonMixin, ObjectsServer):
ObjectsServer.registerPublicMethods(self) ObjectsServer.registerPublicMethods(self)
self.registerPublicMethod('findObjectIds', self.findObjectIdsXmlRpc) self.registerPublicMethod('findObjectIds', self.findObjectIdsXmlRpc)
self.registerPublicMethod('getObjectEmail')
def repairVirtualServer(self, virtualServer, version): def repairVirtualServer(self, virtualServer, version):
"""Handle a descendant compatibily with older server datas. """Handle a descendant compatibily with older server datas.

View File

@ -165,6 +165,7 @@ class NCardNCardCommon(ObjectCommon):
def getEmail(self): def getEmail(self):
if hasattr(self, 'email'): if hasattr(self, 'email'):
return getattr(self, 'email') return getattr(self, 'email')
# TODO: look up an attr with kind 'Email'
return None return None
def getLabel(self): def getLabel(self):

View File

@ -176,6 +176,14 @@ class IdentitiesProxy(commonIdentities.IdentitiesCommonMixin,
'getLocalNameIdentifierServiceProvider', 'getLocalNameIdentifierServiceProvider',
[serverId, getApplicationToken(), userToken, peerHostName]) [serverId, getApplicationToken(), userToken, peerHostName])
def getObjectEmail(self, objectId):
userToken = context.getVar('userToken', default = '')
return callServer(
commonTools.extractServerId(objectId),
'getObjectEmail',
[commonTools.extractServerId(objectId), getApplicationToken(),
userToken, objectId])
def getPeerNameIdentifierIdentityProvider( def getPeerNameIdentifierIdentityProvider(
self, peerHostName, serverId = None): self, peerHostName, serverId = None):
userToken = context.getVar('userToken', default = '') userToken = context.getVar('userToken', default = '')

View File

@ -64,6 +64,15 @@ class NCard(ObjectProxyMixin, NCardCommon):
register(NCard) register(NCard)
class NCardsObjectsProxy(ObjectsProxy):
def getObjectEmail(self, objectId):
userToken = context.getVar('userToken', default = '')
return callServer(
commonTools.extractServerId(objectId),
'getObjectEmail',
[commonTools.extractServerId(objectId), getApplicationToken(),
userToken, objectId])
class NCardsProxy(NCardsCommonMixin, ObjectsProxy): class NCardsProxy(NCardsCommonMixin, ObjectsProxy):
def getObjectIdByRole(self, role, serverId = None): def getObjectIdByRole(self, role, serverId = None):
userToken = context.getVar('userToken', default = '') userToken = context.getVar('userToken', default = '')
@ -95,7 +104,7 @@ def getProxyClass(ncard):
objectsClass = new.classobj( objectsClass = new.classobj(
commonMixinClass.__name__, commonMixinClass.__name__,
(commonMixinClass, ObjectsProxy), (commonMixinClass, NCardsObjectsProxy),
{'adminClass': objectAdminClass, {'adminClass': objectAdminClass,
'objectClass': objectClass}) 'objectClass': objectClass})

View File

@ -93,3 +93,12 @@ class PeopleProxy(PeopleCommonMixin, ObjectsProxy):
'findObjectIds', 'findObjectIds',
[serverId, getApplicationToken(), userToken, utf8(text)]) [serverId, getApplicationToken(), userToken, utf8(text)])
def getObjectEmail(self, objectId):
userToken = context.getVar('userToken', default = '')
return callServer(
commonTools.extractServerId(objectId),
'getObjectEmail',
[commonTools.extractServerId(objectId), getApplicationToken(),
userToken, objectId])