In my Client-Server Application,I do not want two user login with the same 
login name.

For example, user1 logined with name "test1",then user2 try to login with 
"test1" too, the login of user2 should be denied. At now, my code could not 
achieve this goal,so what's the method.
Thanks all!

The following is server code:
-----------------------------------------------------------------------------
class simulationServer:
    def __init__(self):
        self.groups = {} # indexed by name
        self.groups['#admin']= Group('#admin')
        self.groups['#general']=Group('#general')
    def joinGroup(self, groupname, user):
        if groupname not in self.groups:
            self.groups[groupname] = Group(groupname)
        self.groups[groupname].addUser(user)
        return self.groups[groupname]
    def leaveGroup(self, groupname, user):
        self.groups[groupname].delUser(user)
        return self.groups[groupname]
    def getGroup(self, admin=False):
        if admin==True:
            return self.groups['#admin']
        return self.groups['#general']

class simulRealm:
    implements(portal.IRealm)
    def requestAvatar(self, avatarID, mind, *interfaces):
        assert pb.IPerspective in interfaces
        avatar = User(avatarID)
        avatar.server = self.server
        avatar.attached(mind)
        return pb.IPerspective, avatar, lambda a=avatar:a.detached(mind)
        
class User(pb.Avatar):
    def __init__(self, name):
        self.name = name
        self.group=None
        self.status=False  #False: general client user not sync yet 
        self.serverRoot=ServerRoot()
    def attached(self, mind):
        self.remote = mind
    def detached(self, mind):
        print '%s detached...'%self.name
        self.server.leaveGroup(self.group, self)
        self.server.messageClientUserupdated()
        self.remote = None
    def perspective_joinGroup(self, groupname):
        print 'joined Group on Server Machine '
        print groupname
        self.group=groupname
        self.server.joinGroup(groupname, self)
        self.server.messageClientUserupdated()
        return groupname
    def perspective_getServerRoot(self):
        return self.serverRoot
    def getClientRoot(self):
        return self.remote
    def perspective_updateStatus(self):
        self.status=True  # user sync

class Group(pb.Viewable):
    def __init__(self, groupname):
        self.name = groupname
        self.users = []
    def addUser(self, user):
        self.users.append(user)
    def delUser(self, user):
        self.users.remove(user)
    def getallUsers(self):
        return self.users
    def getnotSyncUsers(self):
        nosyncusers=[]
        if self.users:
            for user in self.users:
                if not user.status:
                    nosyncusers.append(user)
        return nosyncusers
    def getUsers(self):
            syncusers=[]
            if self.users:
                for user in self.users:
                    if user.status:
                        syncusers.append(user)
            return syncusers
-----------------------------------------------------------------------------
Client code:
def1 = 
factory.login(credentials.UsernamePassword(self.group+'_'+self.UserNameandPwd[0],
 self.UserNameandPwd[1]), client=self)
def1.addCallback(self.connected)
def1.addErrback(self.connectFailure)
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to