'language': 'Language',
'timezone': 'Time Zone',
}
- self.mapping = dict()
-
- def set_mapping(self, attrs_map):
- self.mapping = attrs_map
def display_name(self, name):
if name in self.standard_attributes:
return self.standard_attributes[name]
return name
- def map_attrs(self, attrs):
- s = dict()
- e = dict()
- for a in attrs:
- if a in self.mapping:
- s[self.mapping[a]] = attrs[a]
- else:
- e[a] = attrs[a]
-
- return s, e
-
FACILITY = 'info_config'
from ipsilon.info.common import InfoProviderBase
from ipsilon.info.common import InfoProviderInstaller
-from ipsilon.info.common import InfoMapping
from ipsilon.util.plugin import PluginObject
+from ipsilon.util.policy import Policy
from ipsilon.util import config as pconfig
import ldap
# TODO: fetch mapping from configuration
-ldap_mapping = {
- 'cn': 'fullname',
- 'commonname': 'fullname',
- 'sn': 'surname',
- 'mail': 'email',
- 'destinationindicator': 'country',
- 'postalcode': 'postcode',
- 'st': 'state',
- 'statetorprovincename': 'state',
- 'streetaddress': 'street',
- 'telephonenumber': 'phone',
-}
+ldap_mapping = [
+ ['cn', 'fullname'],
+ ['commonname', 'fullname'],
+ ['sn', 'surname'],
+ ['mail', 'email'],
+ ['destinationindicator', 'country'],
+ ['postalcode', 'postcode'],
+ ['st', 'state'],
+ ['statetorprovincename', 'state'],
+ ['streetaddress', 'street'],
+ ['telephonenumber', 'phone'],
+]
class InfoProvider(InfoProviderBase):
def __init__(self, *pargs):
super(InfoProvider, self).__init__(*pargs)
- self.mapper = InfoMapping()
- self.mapper.set_mapping(ldap_mapping)
+ self.mapper = Policy(ldap_mapping)
self.name = 'ldap'
self.description = """
Info plugin that uses LDAP to retrieve user data. """
reply = dict()
try:
ldapattrs = self._get_user_data(conn, dn)
- userattrs, extras = self.mapper.map_attrs(ldapattrs)
+ userattrs, extras = self.mapper.map_attributes(ldapattrs)
groups = self._get_user_groups(conn, dn, ldapattrs)
reply = userattrs
reply['_groups'] = groups
from ipsilon.info.common import InfoProviderBase
from ipsilon.info.common import InfoProviderInstaller
-from ipsilon.info.common import InfoMapping
from ipsilon.util.plugin import PluginObject
+from ipsilon.util.policy import Policy
from string import Template
import cherrypy
import time
# Map the mod_lookup_identity env variables to Ipsilon. The inverse of
# this is in the httpd template.
-sssd_mapping = {
- 'REMOTE_USER_GECOS': 'fullname',
- 'REMOTE_USER_EMAIL': 'email',
- 'REMOTE_USER_FIRSTNAME': 'givenname',
- 'REMOTE_USER_LASTNAME': 'surname',
- 'REMOTE_USER_STREET': 'street',
- 'REMOTE_USER_STATE': 'state',
- 'REMOTE_USER_POSTALCODE': 'postcode',
- 'REMOTE_USER_TELEPHONENUMBER': 'phone',
-}
+sssd_mapping = [
+ ['REMOTE_USER_GECOS', 'fullname'],
+ ['REMOTE_USER_EMAIL', 'email'],
+ ['REMOTE_USER_FIRSTNAME', 'givenname'],
+ ['REMOTE_USER_LASTNAME', 'surname'],
+ ['REMOTE_USER_STREET', 'street'],
+ ['REMOTE_USER_STATE', 'state'],
+ ['REMOTE_USER_POSTALCODE', 'postcode'],
+ ['REMOTE_USER_TELEPHONENUMBER', 'phone'],
+]
class InfoProvider(InfoProviderBase):
def __init__(self, *pargs):
super(InfoProvider, self).__init__(*pargs)
- self.mapper = InfoMapping()
- self.mapper.set_mapping(sssd_mapping)
+ self.mapper = Policy(sssd_mapping)
self.name = 'sssd'
self.new_config(self.name)
reply = dict()
try:
attrs, groups = self._get_user_data(user)
- userattrs, extras = self.mapper.map_attrs(attrs)
+ userattrs, extras = self.mapper.map_attributes(attrs)
reply = userattrs
reply['_groups'] = groups
reply['_extras'] = {'sssd': extras}
from ipsilon.info.common import InfoProviderBase
from ipsilon.info.common import InfoProviderInstaller
-from ipsilon.info.common import InfoMapping
from ipsilon.util.plugin import PluginObject
+from ipsilon.util.policy import Policy
import grp
import pwd
import os
-posix_map = {
- 'gecos': 'fullname'
-}
+posix_map = [
+ ['gecos', 'fullname']
+]
class InfoProvider(InfoProviderBase):
def __init__(self, *pargs):
super(InfoProvider, self).__init__(*pargs)
- self.mapper = InfoMapping()
- self.mapper.set_mapping(posix_map)
+ self.mapper = Policy(posix_map)
self.name = 'nss'
self.new_config(self.name)
reply = dict()
try:
posix_user = self._get_posix_user(user)
- userattrs, extras = self.mapper.map_attrs(posix_user)
+ userattrs, extras = self.mapper.map_attributes(posix_user)
groups = self._get_posix_groups(posix_user['username'],
posix_user['gidNumber'])
reply = userattrs
# Copyright (C) 2014 Ipsilon contributors, see COPYING file for license
-from ipsilon.info.common import InfoMapping
from ipsilon.login.common import LoginFormBase, LoginManagerBase
from ipsilon.util.plugin import PluginObject
+from ipsilon.util.policy import Policy
from ipsilon.util import config as pconfig
import cherrypy
except ImportError:
CLA_GROUPS = dict()
-fas_mapping = {
- 'username': 'nickname',
- 'telephone': 'phone',
- 'country_code': 'country',
- 'human_name': 'fullname',
- 'email': 'email',
- 'timezone': 'timezone',
-}
+fas_mapping = [
+ ['username', 'nickname'],
+ ['telephone', 'phone'],
+ ['country_code', 'country'],
+ ['human_name', 'fullname'],
+ ['email', 'email'],
+ ['timezone', 'timezone'],
+]
class FAS(LoginFormBase):
def __init__(self, site, mgr, page):
super(FAS, self).__init__(site, mgr, page)
- self.mapper = InfoMapping()
- self.mapper.set_mapping(fas_mapping)
+ self.mapper = Policy(fas_mapping)
def POST(self, *args, **kwargs):
username = kwargs.get("login_name")
return self._template(self.formtemplate, **context)
def make_userdata(self, fas_data):
- userdata, fas_extra = self.mapper.map_attrs(fas_data)
+ userdata, fas_extra = self.mapper.map_attributes(fas_data)
# compute and store groups and cla groups
userdata['_groups'] = []