def create_dummy_users(): """ Creates a dummy user for testing purposes """ minfo = HelperMaKaCInfo.getMaKaCInfoInstance() ah = AvatarHolder() authManager = AuthenticatorMgr() avatars = [] al = minfo.getAdminList() avatar = create_user("fake", "dummyuser", authManager) ah.add(avatar) avatars.append(avatar) al.grant(avatar) for i in xrange(1, 5): avatar = create_user("fake-%d" % i, "fake-%d" % i, authManager) avatar.setId("fake-%d" % i) ah.add(avatar) avatars.append(avatar) # since the DB is empty, we have to add dummy user as admin minfo = HelperMaKaCInfo.getMaKaCInfoInstance() dc = DefaultConference() HelperMaKaCInfo.getMaKaCInfoInstance().setDefaultConference(dc) return avatars
def _getAnswer(self): for user in self._userList: if user["_type"] == "Avatar": # new speaker ah = AvatarHolder() av = ah.getById(user["id"]) if av is None: raise NoReportError( _("The user with email %s that you are adding does not exist anymore in the database" ) % user["email"]) part = self._newParticipant(av) elif user[ "_type"] == "ContributionParticipation": # adding existing author to speaker part = self._contribution.getAuthorById(user["id"]) self._contribution.addSpeaker(part) if self._submissionRights and part: self._contribution.grantSubmission(part) if self._kindOfList == "prAuthor": return self._getParticipantsList( self._contribution.getPrimaryAuthorList()) elif self._kindOfList == "coAuthor": return self._getParticipantsList( self._contribution.getCoAuthorList()) elif self._kindOfList == "speaker": return self._getParticipantsList( self._contribution.getSpeakerList()) else: raise ServiceError("ERR-UK0", _("Invalid kind of list of users."))
def create_dummy_users(dummyuser_has_password=False): """ Creates a dummy user for testing purposes. If dummyuser_has_password is set, "dummyuser" and "fake-1" can be used for logging in. """ minfo = HelperMaKaCInfo.getMaKaCInfoInstance() ah = AvatarHolder() authManager = AuthenticatorMgr() avatars = [] al = minfo.getAdminList() avatar = create_user("fake", "dummyuser", authManager, dummyuser_has_password) ah.add(avatar) avatars.append(avatar) al.grant(avatar) for i in xrange(1, 5): avatar = create_user("fake-%d" % i, "fake-%d" % i, authManager, dummyuser_has_password and i == 1) avatar.setId("fake-%d" % i) ah.add(avatar) avatars.append(avatar) HelperMaKaCInfo.getMaKaCInfoInstance().setDefaultConference(DefaultConference()) return avatars
def autoLogin(self, rh): """ Login using Shibbolet. """ req = rh._req req.add_common_vars() if req.subprocess_env.has_key("REMOTE_USER"): email = req.subprocess_env["REMOTE_USER"] from MaKaC.user import AvatarHolder ah = AvatarHolder() av = ah.match({"email": email}, exact=1) if av: av = av[0] if av.getStatus() == "NotCreated": # checking if comming from Nice if av.getId()[: len(self.id)] == self.id: av.setId("") ah.add(av) av.activateAccount() return av elif not av.isActivated(): av.activateAccount() return av else: return av return None
def _getAnswer(self): ah = AvatarHolder() for user in self._userList: spk = conference.SubContribParticipation() spk.setDataFromAvatar(ah.getById(user["id"])) self._subContrib.newSpeaker(spk) return fossilize(self._subContrib.getSpeakerList(), ISubContribParticipationFullFossil)
def searchUsers(surName="", name="", organisation="", email="", conferenceId=None, exactMatch=True, searchExt=False): if surName != "" or name != "" or organisation != "" or email != "": # build criteria criteria = { "surName": surName, "name": name, "organisation": organisation, "email": email } # search users people = AvatarHolder().match(criteria, exact=exactMatch, searchInAuthenticators=searchExt) # search authors if conferenceId is not None: conference = ConferenceHolder().getById(conferenceId) authorIndex = conference.getAuthorIndex() authors = authorIndex.match(criteria, exact=exactMatch) # merge with users users = people people = [] emails = [] for user in users: people.append(user) emails.extend(user.getEmails()) for author in authors: if author.getEmail() not in emails: people.append(author) return people else: return []
def autoLogin(self, rh): """ Login using Shibbolet. """ req = rh._req req.add_common_vars() if req.subprocess_env.has_key("REMOTE_USER"): email = req.subprocess_env["REMOTE_USER"] from MaKaC.user import AvatarHolder ah = AvatarHolder() av = ah.match({"email":email},exact=1) if av: av = av[0] if av.getStatus() == 'NotCreated': #checking if comming from Nice if av.getId()[:len(self.id)] == self.id: av.setId("") ah.add(av) av.activateAccount() return av elif not av.isActivated(): av.activateAccount() return av else: return av return None
def _getAnswer(self): ah = AvatarHolder() for user in self._userList: convener = SessionChair() convener.setDataFromAvatar(ah.getById(user["id"])) self._session.addConvener(convener) return self._getConvenerList()
def __init__(self): Index.__init__(self) from MaKaC.user import AvatarHolder ah = AvatarHolder() for av in ah.getList(): self.indexUser(av)
def create_user(monkeypatch_methods): """Returns a callable which lets you create dummy users""" monkeypatch_methods('MaKaC.user.AvatarHolder', MockAvatarHolder) _avatars = [] ah = AvatarHolder() def _create_user(id_, name='Pig', surname='Guinea', rb_admin=False, email=None, groups=None): avatar = MockAvatar() avatar.id = id_ avatar.name = name avatar.surname = surname avatar.email = email or '{}@example.com'.format(id_) avatar.groups = groups or set() avatar.rb_admin = rb_admin ah.add(avatar) _avatars.append(avatar) return avatar yield _create_user for avatar in _avatars: ah.remove(avatar)
def create_dummy_user(): """ Creates a dummy user for testing purposes """ avatar = Avatar() avatar.setName("fake") avatar.setSurName("fake") avatar.setOrganisation("fake") avatar.setLang("en_GB") avatar.setEmail("*****@*****.**") # registering user ah = AvatarHolder() ah.add(avatar) # setting up the login info li = LoginInfo("dummyuser", "dummyuser") ih = AuthenticatorMgr() userid = ih.createIdentity(li, avatar, "Local") ih.add(userid) # activate the account avatar.activateAccount() # since the DB is empty, we have to add dummy user as admin minfo = HelperMaKaCInfo.getMaKaCInfoInstance() al = minfo.getAdminList() al.grant(avatar) dc = DefaultConference() HelperMaKaCInfo.getMaKaCInfoInstance().setDefaultConference(dc) return avatar
def testIdentities(self): ah = AvatarHolder() for i in xrange(1, 3): self.assertEqual( self._authMgr.getAvatar(LoginInfo("fake-%d" % i, "fake-%d" % i)), ah.getById("fake-%d" % i))
def setUp(self): super(TestAuthentication, self).setUp() with self._context("database"): # Create few users and groups gh = GroupHolder() ah = AvatarHolder() self._authMgr = AuthenticatorMgr() for i in xrange(1, 3): group = Group() group.setName("fake-group-%d" % i) group.setDescription("fake") group.setEmail("*****@*****.**" % i) group.setId("fake-group-%d" % i) avatar = Avatar() avatar.setName("fake-%d" % i) avatar.setSurName("fake") avatar.setOrganisation("fake") avatar.setLang("en_GB") avatar.setEmail("*****@*****.**" % i) avatar.setId("fake-%d" % i) avatar.activateAccount() group.addMember(avatar) ah.add(avatar) gh.add(group) identity = self._authMgr.createIdentity(LoginInfo("fake-%d" % i, "fake-%d" % i), avatar, "Local") self._authMgr.add(identity)
def testGroupHolder(self): gh = GroupHolder() ah = AvatarHolder() self.assert_(gh.getById("fake-group-1").containsUser(ah.getById("fake-1"))) self.assertEqual(gh.match({"groupname": "fake-group-1"}, searchInAuthenticators=False)[0].getEmail(), "*****@*****.**") self.assertEqual(len(gh.matchFirstLetter("f", searchInAuthenticators=False)), 2)
def setUp(self): super(TestAuthentication, self).setUp() with self._context("database"): # Create few users and groups gh = GroupHolder() ah = AvatarHolder() self._authMgr = AuthenticatorMgr() for i in xrange(1, 3): group = Group() group.setName("fake-group-%d" % i) group.setDescription("fake") group.setEmail("*****@*****.**" % i) group.setId("fake-group-%d" % i) avatar = Avatar() avatar.setName("fake-%d" % i) avatar.setSurName("fake") avatar.setOrganisation("fake") avatar.setLang("en_GB") avatar.setEmail("*****@*****.**" % i) avatar.setId("fake-%d" % i) avatar.activateAccount() group.addMember(avatar) ah.add(avatar) gh.add(group) identity = self._authMgr.createIdentity( LoginInfo("fake-%d" % i, "fake-%d" % i), avatar, "Local") self._authMgr.add(identity)
def _checkParams(self): self._pm = ParameterManager(self._params) userId = self._pm.extract("userId", None) if userId is not None: ah = AvatarHolder() self._target = ah.getById(userId) else: raise ServiceError("ERR-U5", _("User id not specified"))
def _getAnswer(self): ah = AvatarHolder() for user in self._userList: if user["id"] != None: self._conf.getAbstractMgr().addAuthorizedSubmitter(ah.getById(user["id"])) else: raise ServiceError("ERR-U0", _("User does not exist.")) return fossilize(self._conf.getAbstractMgr().getAuthorizedSubmitterList())
def _checkParams(self): ConferenceModifBase._checkParams(self) pm = ParameterManager(self._params) ah = AvatarHolder() userId = pm.extract("userId", pType=str, allowEmpty=False) self._user = ah.getById(userId) if self._user == None: raise ServiceError("ERR-U0", _("User '%s' does not exist.") % userId)
def testAvatarHolder(self): """ Test Avatar Holder """ ah = AvatarHolder() self.assertEqual(ah.getById("fake-1").getName(), "fake-1") self.assertEqual(ah.match({"name": "fake-1"}, searchInAuthenticators=False)[0].getEmail(), "*****@*****.**") self.assertEqual(len(ah.matchFirstLetter("name", "f", searchInAuthenticators=False)), 2)
def migrateAvatars(catalog): print "Migrating avatars...", ah = AvatarHolder() count = 0 for av in catalog.dump(): ah._getIdx()[av.getId()] = av count += 1 print "[Done:%s]" % count
def _checkParams(self): AdminService._checkParams(self) pm = ParameterManager(self._params) av = AvatarHolder() userId = pm.extract("userId", pType=str, allowEmpty=False) self._user = av.getById(userId) if self._user == None: raise ServiceError("ER-U0", _("Cannot find user with id %s") % userId)
def migrateAvatars(catalog): print "Migrating avatars...", ah=AvatarHolder() count=0 for av in catalog.dump(): ah._getIdx()[av.getId()]=av count+=1 print "[Done:%s]"%count
def _getParams(self): super(UserEventHook, self)._getParams() self._avatar = None # User-specified avatar userId = get_query_parameter(self._queryParams, ['uid', 'userid']) if userId is not None: self._avatar = AvatarHolder().getById(userId) if not self._avatar: raise HTTPAPIError('Avatar does not exist')
def addProductionElements(namespace): pedro = AvatarHolder().getById(22116) jose = AvatarHolder().getById(44) tiago = AvatarHolder().getById(26688) # admins add(namespace, pedro, 'pedro', 'Administrator #1') add(namespace, jose, 'jose', 'Administrator #2') # regular users add(namespace, tiago, 'tiago', 'Regular user #1')
def _checkParams(self): AdminService._checkParams(self) self._pm = ParameterManager(self._params) userId = self._pm.extract("userId", pType=str, allowEmpty=True) if userId is not None: ah = AvatarHolder() self._avatar = ah.getById(userId) else: self._avatar = self._aw.getUser()
def _checkParams(self): LoggedOnlyService._checkParams(self) CategoryDisplayBase._checkParams(self) userId = ParameterManager(self._params).extract('userId', pType=str, allowEmpty=True) if userId is not None: self._avatar = AvatarHolder().getById(userId) else: self._avatar = self._aw.getUser()
def export_user(self, aw): requested_user = AvatarHolder().getById(self._user_id) user = aw.getUser() if not requested_user: raise HTTPAPIError('Requested user not found', 404) if user: if requested_user.canUserModify(user): return [requested_user.fossilize()] raise HTTPAPIError('You do not have access to that info', 403) raise HTTPAPIError('You need to be logged in', 403)
def _getAvatarByEmail(self, email): from MaKaC.user import AvatarHolder ah = AvatarHolder() avatars = ah.match({"email": email}, exact=1, forceWithoutExtAuth=True) if not avatars: avatars = ah.match({"email": email}, exact=1) for av in avatars: if av.hasEmail(email): return av return None
def _getAvatarByEmail(self, email): from MaKaC.user import AvatarHolder ah = AvatarHolder() avatars = ah.match({"email": email}, exact=1, searchInAuthenticators=False) if not avatars: avatars = ah.match({"email": email}, exact=1) for av in avatars: if av.hasEmail(email): return av return None
def _run(self, args): avatar = AvatarHolder().getById(args.id) self.printUserInfo(avatar, args.id) if not avatar.isAdmin(): print "User seems to has no administrator privileges" if console.yesno("Are you sure to revoke administrator privileges from this user?"): adminList = info.HelperMaKaCInfo.getMaKaCInfoInstance().getAdminList() adminList.revoke(avatar) print "Administrator privileges revoked successfully" return 0
def changeCreator(oldUser, newUser): dbi = DBMgr.getInstance() dbi.startRequest() Factory.getDALManager().connect() # check if the users exist if AvatarHolder().getById(oldUser) is None: print "There is no user with id %s" % oldUser return if AvatarHolder().getById(newUser) is None: print "There is no user with id %s" % newUser return resvEx = ReservationBase() resvEx.createdBy = oldUser allResv4OldUser = CrossLocationQueries.getReservations(resvExample=resvEx) if allResv4OldUser == []: print "No reservations for user %s" % oldUser return # resvs = ReservationBase.getReservations() # allResv4OldUser = [x for x in allResv if x.createdBy == oldUser] if type(allResv4OldUser) is not list: allResv4OldUser = [allResv4OldUser] # Modify reservations for r in allResv4OldUser: r.createdBy = newUser #print r.createdBy, r.id # Update index userReservationsIndexBTree = Reservation.getUserReservationsIndexRoot() newUserResvs = userReservationsIndexBTree.get(newUser) if newUserResvs == None: newUserResvs = [] # New list of reservations for this room userReservationsIndexBTree.insert(newUser, newUserResvs) newUserResvs.extend(allResv4OldUser) userReservationsIndexBTree[newUser] = newUserResvs[:] if userReservationsIndexBTree.has_key(oldUser): userReservationsIndexBTree.pop(oldUser) userReservationsIndexBTree._p_changed = 1 # close DB connection Factory.getDALManager().commit() Factory.getDALManager().disconnect() dbi.endRequest() print "%s reservations have moved from creator %s to creator %s" % ( len(allResv4OldUser), oldUser, newUser)
def _getAnswer(self): ah = AvatarHolder() convener = SessionChair() convener.setDataFromAvatar(ah.getById(self._chairId)) self._session.addConvener(convener) # get both list for the result self._kindOfList = "manager" managerResult = self._getSessionChairList() self._kindOfList = "coordinator" coordinatorResult = self._getSessionChairList() return [managerResult, coordinatorResult]
def _run(self, args): avatar = AvatarHolder().getById(args.id) self.printUserInfo(avatar, args.id) if avatar.isAdmin(): print "User seems to already has administrator privileges" if console.yesno("Are you sure to grant administrator privileges to this user?"): adminList = info.HelperMaKaCInfo.getMaKaCInfoInstance().getAdminList() adminList.grant(avatar) avatar.activateAccount() print "Administrator privileges granted successfully" return 0
def _checkParams(self): self._pm = ParameterManager(self._params) userId = self._pm.extract("userId", None) if userId is not None: ah = AvatarHolder() self._user = self._avatar = self._target = ah.getById(userId) else: raise ServiceError("ERR-U5", _("User id not specified")) self._dataType = self._pm.extract("dataType", pType=str, allowEmpty=False) if self._dataType not in self._dataTypes: raise ServiceError("ERR-U7", _("Data argument is not valid"))
def testGroupHolder(self): gh = GroupHolder() ah = AvatarHolder() self.assert_( gh.getById("fake-group-1").containsUser(ah.getById("fake-1"))) self.assertEqual( gh.match({"groupname": "fake-group-1"}, searchInAuthenticators=False)[0].getEmail(), "*****@*****.**") self.assertEqual( len(gh.matchFirstLetter("f", searchInAuthenticators=False)), 2)
def validate_principals(self, field): for item in field.data: try: type_ = item["_type"] id_ = item["id"] except Exception as e: raise ValidationError("Invalid principal data: {}".format(e)) if type_ not in ("Avatar", "Group", "LDAPGroup"): raise ValidationError("Invalid principal data: type={}".format(type_)) holder = AvatarHolder() if type_ == "Avatar" else GroupHolder() if not holder.getById(id_): raise ValidationError("Invalid principal: {}:{}".format(type_, id_))
def _getAnswer(self): ah = AvatarHolder() av = ah.getById(self._submitterId) participant = self._getParticipantByEmail(av.getEmail()) if self._kindOfList == "prAuthor": self._contribution.removePrimaryAuthor(participant, removeSpeaker=0) elif self._kindOfList == "coAuthor": self._contribution.removeCoAuthor(participant, removeSpeaker=0) elif self._kindOfList == "speaker": self._contribution.removeSpeaker(participant) return self._getSubmittersList()
def _getAnswer(self): ah = AvatarHolder() convEmail = ah.getById(self._chairId).getEmail() for convener in self._session.getConvenerList(): if convEmail == convener.getEmail(): self._session.removeConvener(convener) # get both list for the result self._kindOfList = "manager" managerResult = self._getSessionChairList() self._kindOfList = "coordinator" coordinatorResult = self._getSessionChairList() return [managerResult, coordinatorResult]
def validate_principals(self, field): for item in field.data: try: type_ = item['_type'] id_ = item['id'] except Exception as e: raise ValidationError('Invalid principal data: {}'.format(e)) if type_ not in ('Avatar', 'Group', 'LDAPGroup'): raise ValidationError('Invalid principal data: type={}'.format(type_)) holder = AvatarHolder() if type_ == 'Avatar' else GroupHolder() if not holder.getById(id_): raise ValidationError('Invalid principal: {}:{}'.format(type_, id_))
def retrieveAvatar(self, rh): """ Login using Shibbolet. """ from MaKaC.user import AvatarHolder, Avatar config = Config.getInstance().getAuthenticatorConfigById(self.id).get("SSOMapping", {}) if config.get('email', 'ADFS_EMAIL') in request.environ: email = request.environ[config.get("email", "ADFS_EMAIL")] login = request.environ[config.get("personId", "ADFS_LOGIN")] personId = request.environ[config.get("personId", "ADFS_PERSONID")] phone = request.environ.get(config.get("phone", "ADFS_PHONENUMBER"), "") fax = request.environ.get(config.get("fax", "ADFS_FAXNUMBER"), "") lastname = request.environ.get(config.get("lastname", "ADFS_LASTNAME"), "") firstname = request.environ.get(config.get("firstname", "ADFS_FIRSTNAME"), "") institute = request.environ.get(config.get("institute", "ADFS_HOMEINSTITUTE"), "") if personId == '-1': personId = None ah = AvatarHolder() av = ah.match({"email": email}, exact=1, onlyActivated=False, searchInAuthenticators=False) if av: av = av[0] # don't allow disabled accounts if av.isDisabled(): return None elif not av.isActivated(): av.activateAccount() av.clearAuthenticatorPersonalData() av.setAuthenticatorPersonalData('phone', phone) av.setAuthenticatorPersonalData('fax', fax) av.setAuthenticatorPersonalData('surName', lastname) av.setAuthenticatorPersonalData('firstName', firstname) av.setAuthenticatorPersonalData('affiliation', institute) if personId != None and personId != av.getPersonId(): av.setPersonId(personId) else: avDict = {"email": email, "name": firstname, "surName": lastname, "organisation": institute, "telephone": phone, "login": login} av = Avatar(avDict) ah.add(av) av.setPersonId(personId) av.activateAccount() self._postLogin(login, av, True) return av return None
def _process(self): av = None if self._userId: av = AvatarHolder().getById(self._userId) elif self._email: try: av = AvatarHolder().match({"email": self._email})[0] except: pass if av: sm = mail.sendLoginInfo(av) sm.send() self._redirect(urlHandlers.UHSignIn.getURL())
def _getAnswer(self): av = AvatarHolder().getById(self._submitterId) if av is None: raise NoReportError(_("It seems this user has been removed from the database or has been merged into another. Please remove it and add it again.")) participant = self._getParticipantByEmail(av.getEmail()) if self._kindOfList == "prAuthor": self._contribution.removePrimaryAuthor(participant, removeSpeaker=0) elif self._kindOfList == "coAuthor": self._contribution.removeCoAuthor(participant, removeSpeaker=0) elif self._kindOfList == "speaker": self._contribution.removeSpeaker(participant) return self._getSubmittersList()
def testAvatarHolder(self): """ Test Avatar Holder """ ah = AvatarHolder() self.assertEqual(ah.getById("fake-1").getName(), "fake-1") self.assertEqual( ah.match({"name": "fake-1"}, searchInAuthenticators=False)[0].getEmail(), "*****@*****.**") self.assertEqual( len(ah.matchFirstLetter("name", "f", searchInAuthenticators=False)), 2)
def _run(self, args): avatar = AvatarHolder().getById(args.id) self.printUserInfo(avatar, args.id) if not avatar.isAdmin(): print "User seems to has no administrator privileges" if console.yesno( "Are you sure to revoke administrator privileges from this user?" ): adminList = info.HelperMaKaCInfo.getMaKaCInfoInstance( ).getAdminList() adminList.revoke(avatar) print "Administrator privileges revoked successfully" return 0
def validate_principals(self, field): for item in field.data: try: type_ = item['_type'] id_ = item['id'] except Exception as e: raise ValidationError('Invalid principal data: {}'.format(e)) if type_ not in ('Avatar', 'Group', 'LDAPGroup'): raise ValidationError( 'Invalid principal data: type={}'.format(type_)) holder = AvatarHolder() if type_ == 'Avatar' else GroupHolder() if not holder.getById(id_): raise ValidationError('Invalid principal: {}:{}'.format( type_, id_))
def user_revoke(user_id): """Revokes administration rights from a given user""" avatar = AvatarHolder().getById(user_id) if avatar is None: error("The user does not exists") return print_user_info(avatar) if not avatar.isAdmin(): warning("This user does not have administration rights") return if prompt_bool(cformat("%{yellow}Revoke administration rights from this user?")): admin_list = HelperMaKaCInfo.getMaKaCInfoInstance().getAdminList() admin_list.revoke(avatar) success("Administration rights revoked successfully")
def _run(self, args): avatar = AvatarHolder().getById(args.id) self.printUserInfo(avatar, args.id) if avatar.isAdmin(): print "User seems to already has administrator privileges" if console.yesno( "Are you sure to grant administrator privileges to this user?" ): adminList = info.HelperMaKaCInfo.getMaKaCInfoInstance( ).getAdminList() adminList.grant(avatar) avatar.activateAccount() print "Administrator privileges granted successfully" return 0