summaryrefslogtreecommitdiff
path: root/src/saml2/s2repoze/plugins/ini.py
blob: 4ef063515fb8a5476d5aa4c40da1622e686573eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import ConfigParser

from zope.interface import implements

# from repoze.who.interfaces import IChallenger, IIdentifier, IAuthenticator
from repoze.who.interfaces import IMetadataProvider


class INIMetadataProvider(object):

    implements(IMetadataProvider)

    def __init__(self, ini_file, key_attribute):

        self.users = ConfigParser.ConfigParser()
        self.users.readfp(open(ini_file))
        self.key_attribute = key_attribute

    def add_metadata(self, _environ, identity):
        # logger = environ.get('repoze.who.logger','')

        key = identity.get("repoze.who.userid")
        try:
            if self.key_attribute:
                for sec in self.users.sections():
                    if self.users.has_option(sec, self.key_attribute):
                        if key in self.users.get(sec, self.key_attribute):
                            identity["user"] = dict(self.users.items(sec))
                            break
            else:
                identity["user"] = dict(self.users.items(key))
        except ValueError:
            pass


def make_plugin(ini_file, key_attribute=""):
    return INIMetadataProvider(ini_file, key_attribute)