code: def _parse_params(self, params):
          
          ret = {'attrs': {}, 'roles': {}, 'groups': {}}
          for p in params:
              # each form attributes is prefixed with type, ex: attr.uidNumber
              # separate this prefix from the attribute name
              p_type, sep, param = p.partition('.')
              if p_type == 'attr':
                  ret['attrs'][param] = params[p]
              elif p_type == 'role':
                  ret['roles'][param] = params[p]
              elif p_type == 'group':
                  # with groups there is a second prefix
                  # corresponding to the backend
                  backend, sep, value = param.partition('.')
                  if backend not in ret['groups']:
                      ret['groups'][backend] = []
                  ret['groups'][backend].append(value)
          return ret
docs: get user attributes
          @dict params: form parameters
          @rtype: dict, {<type>: {<attr>: <value>}}