Commit 1f7dc300 authored by 's avatar

Added su support

parent c362b81a
"""Access control objects""" """Access control package"""
__version__='$Revision: 1.1 $'[11:-2] __version__='$Revision: 1.2 $'[11:-2]
import Globals
from Persistence import Persistent,PersistentMapping from Persistence import Persistent
from Persistence import PersistentMapping
from Acquisition import Implicit from Acquisition import Implicit
from DocumentTemplate import HTML from DocumentTemplate import HTML
from Globals import MessageDialog from Globals import MessageDialog
from Globals import Bobobase
from base64 import decodestring from base64 import decodestring
from string import join,strip,split,lower from string import join,strip,split,lower
...@@ -31,19 +31,46 @@ class SafeDtml(HTML): ...@@ -31,19 +31,46 @@ class SafeDtml(HTML):
class User(Implicit, Persistent): class User(Implicit, Persistent):
""" """
def __init__(self,name=None,password=None,roles=[]): def __init__(self,name=None,password=None,roles=[]):
if name is not None: if name is not None:
self._name =name self._name =name
self._password=password self._password=password
self._roles =roles self._roles =roles
def __len__(self):
return 1
def __str__(self):
return self._name
def __repr__(self):
return self._name
class SuperUser:
def __init__(self):
try:
f=open('%s/access' % CUSTOMER_HOME, 'r')
d=split(strip(f.readline()),':')
f.close()
self._name =d[0]
self._password=d[1]
self._roles =('manage',)
except:
self._name ='superuser'
self._password='123'
self._roles =('manage',)
def __len__(self):
return 1
def __str__(self): def __str__(self):
return self._name return self._name
def __repr__(self): def __repr__(self):
return self._name return self._name
su=SuperUser()
class UserFolder(Implicit, Persistent): class UserFolder(Implicit, Persistent):
...@@ -69,10 +96,7 @@ class UserFolder(Implicit, Persistent): ...@@ -69,10 +96,7 @@ class UserFolder(Implicit, Persistent):
) )
def _init(self): def _init(self):
self._data=PersistentMapping({'Brian': User('Brian','123',['manage',]), self._data=PersistentMapping()
'Jim Fulton' : User('Jim Fulton', '123', ['manage',]),
'Paul Everitt': User('Paul Everitt','123',['manage',])
})
def __len__(self): def __len__(self):
return len(self.userNames()) return len(self.userNames())
...@@ -85,13 +109,14 @@ class UserFolder(Implicit, Persistent): ...@@ -85,13 +109,14 @@ class UserFolder(Implicit, Persistent):
return self._data.keys() return self._data.keys()
def roleNames(self): def roleNames(self):
return Bobobase['roles'] return Globals.Bobobase['roles']
# return ['manage','foo','bar','spam']
def validate(self,request,auth,roles=None): def validate(self,request,auth,roles=None):
if lower(auth[:6])!='basic ': if lower(auth[:6])!='basic ':
return None return None
[name,password]=split(decodestring(split(auth)[-1]), ':') [name,password]=split(decodestring(split(auth)[-1]), ':')
if (name==su._name) and (password==su._password):
return su
try: user=self._data[name] try: user=self._data[name]
except: return None except: return None
if password!=user._password: if password!=user._password:
...@@ -154,7 +179,21 @@ class UserFolder(Implicit, Persistent): ...@@ -154,7 +179,21 @@ class UserFolder(Implicit, Persistent):
del self._data[n] del self._data[n]
return self.manage_main(self, REQUEST) return self.manage_main(self, REQUEST)
def manage_addRole(self,REQUEST,role):
""" """
roles=Globals.Bobobase['roles']
if role not in roles:
Globals.Bobobase['roles']=tuple(roles)+(role,)
return self.manage_main(self, REQUEST)
def manage_deleteRole(self,REQUEST,role):
""" """
roles=Globals.Bobobase['roles']
if role in roles:
roles=list(roles)
del roles[roles.index(role)]
Globals.Bobobase['roles']=tuple(roles)
return self.manage_main(self, REQUEST)
...@@ -162,10 +201,6 @@ class UserFolder(Implicit, Persistent): ...@@ -162,10 +201,6 @@ class UserFolder(Implicit, Persistent):
def manage_addUserFolder(self,self2,REQUEST): def manage_addUserFolder(self,self2,REQUEST):
""" """ """ """
# if self.__dict__.has_key('__allow_groups__'):
# return MessageDialog(title='Object exists',
# message='This object already has a User Folder',
# action='%s/manage' % REQUEST['PARENT_URL'])
i=UserFolder() i=UserFolder()
i._init() i._init()
self._setObject('UserFolder', i) self._setObject('UserFolder', i)
......
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
<!--#if userNames--> <!--#if userNames-->
<TR> <TR>
<TD VALIGN="TOP"> <TD VALIGN="TOP">
The following users have been defined. To edit a user, select a user The following users have been defined. To edit a user,
from the list and click the <I>Edit User</I> button. select a user and click the <I>Edit User</I> button.
</TD> </TD>
<TD VALIGN="TOP"> <TD VALIGN="TOP">
<FORM ACTION="<!--#var PARENT_URL-->/manage_editForm" METHOD="POST"> <FORM ACTION="<!--#var PARENT_URL-->/manage_editForm" METHOD="POST">
...@@ -48,7 +48,6 @@ ...@@ -48,7 +48,6 @@
<!--#/if userNames--> <!--#/if userNames-->
<TR> <TR>
<TD COLSPAN="2" VALIGN="TOP"> <TD COLSPAN="2" VALIGN="TOP">
<BR>
To add a new user, enter the name, password, confirmation and To add a new user, enter the name, password, confirmation and
roles for the new user and click the <I>Add User</I> button. roles for the new user and click the <I>Add User</I> button.
</TD> </TD>
...@@ -90,7 +89,6 @@ ...@@ -90,7 +89,6 @@
<!--#if userNames--> <!--#if userNames-->
<TR> <TR>
<TD VALIGN="TOP"> <TD VALIGN="TOP">
<BR>
To delete one or more users, select the users To delete one or more users, select the users
you wish to delete and click the <I>Delete Users</I> button. you wish to delete and click the <I>Delete Users</I> button.
</TD> </TD>
......
__doc__="""$Id: __init__.py,v 1.1 1997/08/26 18:54:42 brian Exp $""" __doc__="""$Id: __init__.py,v 1.2 1997/08/26 22:01:07 brian Exp $"""
__version__='$Revision: 1.1 $'[11:-2] __version__='$Revision: 1.2 $'[11:-2]
import User import User
...@@ -11,3 +11,5 @@ __.meta_types=({'name':'User Folder', ...@@ -11,3 +11,5 @@ __.meta_types=({'name':'User Folder',
__.methods={'manage_addUserFolder': __.methods={'manage_addUserFolder':
User.manage_addUserFolder, User.manage_addUserFolder,
} }
__.role_names=()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment