Example #1
0
 def propertysheet(self):
     if self._sheet is not None:
         return self._sheet
     # build sheet from identities
     pdata = dict(id=self.userid)
     cfgs_providers = authomatic_cfg()
     for provider_name in cfgs_providers:
         identity = self.identity(provider_name)
         if identity is None:
             continue
         logger.debug(identity)
         cfg = cfgs_providers[provider_name]
         for akey, pkey in cfg.get('propertymap', {}).items():
             # Always search first on the user attributes, then on the raw
             # data this guaratees we do not break existing configurations
             ainfo = identity.get(akey, identity['data'].get(akey, None))
             if ainfo is None:
                 continue
             if isinstance(pkey, dict):
                 for k, v in pkey.items():
                     pdata[k] = ainfo.get(v)
             else:
                 pdata[pkey] = ainfo
     self._sheet = UserPropertySheet(**pdata)
     return self._sheet
Example #2
0
    def getPropertiesForUser(self, user, request=None):
        """

        o User will implement IPropertiedUser.

        o Plugin should return a dictionary or an object providing
          IPropertySheet.

        o Plugin may scribble on the user, if needed (but must still
          return a mapping, even if empty).

        o May assign properties based on values in the REQUEST object, if
          present
        """
        if request is None:
            if hasattr(self, 'REQUEST'):  # noqa
                request = self.REQUEST
            else:
                return {}
        userId = user.getId()
        if userId == request.environ.get(USERNAME_HEADER):
            return UserPropertySheet(user.id,
                                     **self._getShibProperties(userId))
        else:
            return {}
Example #3
0
 def _get_propertysheet_of_info(self, info):
     if info is None:
         return None
     sheet = UserPropertySheet(self.getId(),
                               title=info['title'],
                               description=info['description'],
                               email=info['email'])
     return sheet
Example #4
0
 def _propertysheet(self, userid, identity):
     pdata = {
         'fullname': (
                 identity['Person.FirstName'][0] +
                 ' ' +
                 identity['Person.LastName'][0]
         ),
         'email': identity['Person.Email'][0]
     }
     return UserPropertySheet(userid, **pdata)
Example #5
0
    def addPropertysheet(self, id, data):
        """ -> add a prop sheet, given data which is either
        a property sheet or a raw mapping.
        """
        if IPropertySheet.providedBy(data):
            sheet = data
        else:
            sheet = UserPropertySheet(id, **data)

        if self._propertysheets.get(id) is not None:
            raise KeyError('Duplicate property sheet: %s' % id)

        self._propertysheets[id] = sheet
Example #6
0
    def getPropertiesForUser(self, user, request=None):
        default = {}

        user_id = user.getId()

        ob = self._useridentities_by_userid.get(user_id)
        if ob is not None:
            properties = dict(username=ob.get('preferred_username'),
                              email=ob.get('email'),
                              fullname=ob.get('name'))

            psheet = UserPropertySheet(
                self.getId(),
                schema=None,
                **properties,
            )
            return psheet

        return default