Module user |
[hide private]
[frames] | no frames]

## Source Code for Module user

     1
     2  from baseObjects import User
     3  from c3errors import ConfigFileException
     4  from utils import getFirstData, elementType
     5  import md5, crypt
     6
     7 -class SimpleUser(User):
     8      simpleNodes = ["username", "password", "email", "address", "tel", "realName", "description", "passwordType"]
     9      username = ""
    10      password = ""
    11      email = ""
    12      address =""
    13      tel = ""
    14      realName = ""
    15      description = ""
    16      flags = {}
    17
    18      allFlags = {"c3r:administrator" : "Administrator flag. Inherits all others.",
    19                  "info:srw/operation/1/create" : "Create record within this store",
    20                  "info:srw/operation/1/replace" : "Replace existing record within store",
    21                  "info:srw/operation/1/delete" : "Delete existing record from store",
    22                  "info:srw/operation/1/metadata" : "Modify metadata of record within store",
    23                  "info:srw/operation/2/index" : "Run indexing process for this object",
    24                  "info:srw/operation/2/unindex" : "Run un-indexing process for this object",
    25                  "info:srw/operation/2/cluster" : "Run clustering process for this object",
    26                  "info:srw/operation/2/permissions" : "Permission to change permissions",
    27                  "info:srw/operation/2/search" : "Permission to search",
    28                  "info:srw/operation/2/retrieve" : "Permission to retrieve object",
    29                  "info:srw/operation/2/scan" : "Permission to scan",
    30                  "info:srw/operation/2/sort" : "Permission to sort result set",
    31                  "info:srw/operation/2/transform" : "Permission to transform record"
    32                  }
    33      # Plus c3fn:(functionName) for function on object
    34
    35      resultSetIds = []
    36
    37 -    def _handleConfigNode(self, session, node):
    38          if (node.localName in self.simpleNodes):
    39              setattr(self, node.localName, getFirstData(node))
    40          elif (node.localName == "flags"):
    41              # Extract Rights info
    42              # <flags> <flag> <object> <value> </flag> </flags>
    43              for c in node.childNodes:
    44                  if c.nodeType == elementType and c.localName == "flag":
    45                      obj = None
    46                      flag = None
    47                      for c2 in c.childNodes:
    48                          if c2.nodeType == elementType:
    49                              if c2.localName == "object":
    50                                  obj = getFirstData(c2)
    51                              elif c2.localName == "value":
    52                                  flag = getFirstData(c2)
    53                                  if not self.allFlags.has_key(flag) and flag[:4] != "c3fn":
    54                                      raise ConfigFileException("Unknown flag: %s" % flag)
    55                      if obj == None or flag == None:
    56                          raise ConfigFileException("Missing object or value element for flag for user %s" % self.username)
    57                      if (obj):
    58                          f = self.flags.get(flag, [])
    59                          if f != "":
    60                              f.append(obj)
    61                              self.flags[flag] = obj
    62                      else:
    63                          self.flags[flag] = ""
    64          elif (node.localName == "history"):
    65              # Extract user history
    66              pass
    67          elif (node.localName == "hostmask"):
    68              # Extract allowed hostmask list
    69              pass
    70
    71 -    def hasFlag(self, session, flag, object=""):
    72          # Does the user have the flag for this object/all objects
    73          f = self.flags.get(flag, [])
    74          if f == "c3r:administrator" or object in f:
    75              return True
    76          else:
    77              # Does the user have a global flag for this object/all objects
    78              f = self.flags.get("", [])
    79              if f == "c3r:administrator" or object in f:
    80                  return True
    81              return False
    82
    83 -    def check_password(self, session, password):
    84          # Check password type
    85          if self.passwordType == 'md5':
    86              m = md5.md5(password)
    87              return m.hexdigest() == self.password
    88          else:
    89              return crypt.crypt(password, self.password[:2]) == self.password
    90