Example #1
0
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
Example #2
0
    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
Example #4
0
    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
Example #5
0
 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)
Example #6
0
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 []
Example #7
0
 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
Example #8
0
 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()
Example #9
0
    def __init__(self):
        Index.__init__(self)
        from MaKaC.user import AvatarHolder

        ah = AvatarHolder()
        for av in ah.getList():
            self.indexUser(av)
Example #10
0
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)
Example #11
0
 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)
Example #12
0
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))
Example #14
0
 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()
Example #15
0
    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)
Example #16
0
 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)
Example #18
0
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
Example #19
0
 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"))
Example #20
0
 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())
Example #21
0
 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)
Example #22
0
 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"))
Example #23
0
 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)
Example #24
0
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
Example #25
0
 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)
Example #26
0
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
Example #27
0
 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')
Example #28
0
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')
Example #29
0
 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()
Example #30
0
 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()
Example #31
0
 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)
Example #32
0
 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
Example #33
0
 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)
Example #34
0
 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
Example #35
0
 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)
Example #37
0
 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]
Example #38
0
 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
Example #39
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)
Example #41
0
 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]
Example #42
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_))
Example #43
0
    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()
Example #44
0
 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]
Example #45
0
 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]
Example #46
0
 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
Example #47
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_))
Example #48
0
    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()
Example #49
0
    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
Example #50
0
 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())
Example #51
0
    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)
Example #53
0
 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
Example #54
0
    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()
Example #55
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_))
Example #56
0
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")
Example #57
0
 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