Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
Zope
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
Zope
Commits
113a5ea9
Commit
113a5ea9
authored
Sep 14, 2001
by
Brian Lloyd
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added new user add, edit and delete apis
parent
d804e215
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
54 additions
and
19 deletions
+54
-19
lib/python/AccessControl/User.py
lib/python/AccessControl/User.py
+54
-19
No files found.
lib/python/AccessControl/User.py
View file @
113a5ea9
...
...
@@ -84,7 +84,7 @@
##############################################################################
"""Access control package"""
__version__
=
'$Revision: 1.15
6
$'
[
11
:
-
2
]
__version__
=
'$Revision: 1.15
7
$'
[
11
:
-
2
]
import
Globals
,
socket
,
SpecialUsers
,
re
import
os
...
...
@@ -497,6 +497,7 @@ class BasicUserFolder(Implicit, Persistent, Navigation, Tabs, RoleManager,
(
'Manage users'
,
(
'manage_users'
,
'getUserNames'
,
'getUser'
,
'getUsers'
,
'getUserById'
,
'user_names'
,
'setDomainAuthenticationMode'
,
'manage_addUser'
,
'manage_editUser'
,
'manage_delUsers'
,
)
),
)
...
...
@@ -526,16 +527,45 @@ class BasicUserFolder(Implicit, Persistent, Navigation, Tabs, RoleManager,
if
default
is
_marker
:
raise
return
default
def
_doAddUser
(
self
,
name
,
password
,
roles
,
domains
):
"""Create a new user"""
# As of Zope 2.5, manage_addUser, manage_editUser and manage_delUsers
# form the official API for user management. The old grotesque way of
# using manage_users is now deprecated. Note that not all user folder
# implementations support adding, changing and deleting user objects.
# The default implementation of these API methods simply call the
# _doXXX versions of the methods that user folder authors have already
# implemented, which means that these APIs will work for current user
# folder implementations without any action on the part of the author.
# User folder authors that implement the new manage_XXX API can get
# rid of the old _doXXX versions of the methods, which are no longer
# required (we only use them if the new api is not directly implemented).
def
manage_addUser
(
self
,
name
,
password
,
roles
,
domains
):
"""API method for creating a new user object. Note that not all
user folder implementations support dynamic creation of user
objects. Implementations that do not support dynamic creation
of user objects should raise NotImplemented for this method."""
if
hasattr
(
self
,
'_doAddUser'
):
return
self
.
_doAddUser
(
name
,
password
,
roles
,
domains
)
raise
NotImplemented
def
_doChangeUser
(
self
,
name
,
password
,
roles
,
domains
):
"""Modify an existing user"""
def
manage_editUser
(
self
,
name
,
password
,
roles
,
domains
):
"""API method for changing user object attributes. Note that not
all user folder implementations support changing of user object
attributes. Implementations that do not support changing of user
object attributes should raise NotImplemented for this method."""
if
hasattr
(
self
,
'_doChangeUser'
):
return
self
.
_doChangeUser
(
name
,
password
,
roles
,
domains
)
raise
NotImplemented
def
_doDelUsers
(
self
,
names
):
"""Delete one or more users"""
def
manage_delUsers
(
self
,
names
):
"""API method for deleting one or more user objects. Note that not
all user folder implementations support deletion of user objects.
Implementations that do not support deletion of user objects
should raise NotImplemented for this method."""
if
hasattr
(
self
,
'_doDelUsers'
):
return
self
.
_doDelUsers
(
names
)
raise
NotImplemented
...
...
@@ -776,8 +806,8 @@ class BasicUserFolder(Implicit, Persistent, Navigation, Tabs, RoleManager,
pw
=
u
.
_getPassword
()
if
not
self
.
_isPasswordEncrypted
(
pw
):
pw
=
self
.
_encryptPassword
(
pw
)
self
.
_doChange
User
(
u
.
getUserName
(),
pw
,
u
.
getRoles
(),
u
.
getDomains
())
self
.
manage_edit
User
(
u
.
getUserName
(),
pw
,
u
.
getRoles
(),
u
.
getDomains
())
changed
=
changed
+
1
if
REQUEST
is
not
None
:
if
not
changed
:
...
...
@@ -847,7 +877,7 @@ class BasicUserFolder(Implicit, Persistent, Navigation, Tabs, RoleManager,
action
=
'manage_main'
)
if
self
.
encrypt_passwords
:
password
=
self
.
_encryptPassword
(
password
)
self
.
_doA
ddUser
(
name
,
password
,
roles
,
domains
)
self
.
manage_a
ddUser
(
name
,
password
,
roles
,
domains
)
if
REQUEST
:
return
self
.
_mainUser
(
self
,
REQUEST
)
...
...
@@ -887,7 +917,7 @@ class BasicUserFolder(Implicit, Persistent, Navigation, Tabs, RoleManager,
action
=
'manage_main'
)
if
password
is
not
None
and
self
.
encrypt_passwords
:
password
=
self
.
_encryptPassword
(
password
)
self
.
_doChange
User
(
name
,
password
,
roles
,
domains
)
self
.
manage_edit
User
(
name
,
password
,
roles
,
domains
)
if
REQUEST
:
return
self
.
_mainUser
(
self
,
REQUEST
)
def
_delUsers
(
self
,
names
,
REQUEST
=
None
):
...
...
@@ -896,11 +926,14 @@ class BasicUserFolder(Implicit, Persistent, Navigation, Tabs, RoleManager,
title
=
'Illegal value'
,
message
=
'No users specified'
,
action
=
'manage_main'
)
self
.
_doD
elUsers
(
names
)
self
.
manage_d
elUsers
(
names
)
if
REQUEST
:
return
self
.
_mainUser
(
self
,
REQUEST
)
def
manage_users
(
self
,
submit
=
None
,
REQUEST
=
None
,
RESPONSE
=
None
):
""" """
"""This method handles operations on users for the web based forms
of the ZMI. Use of this method by application code is deprecated.
Use the manage_addUser, manage_editUser and manage_delUsers APIs
instead."""
if
submit
==
'Add...'
:
return
self
.
_add_User
(
self
,
REQUEST
)
...
...
@@ -1012,18 +1045,20 @@ class UserFolder(BasicUserFolder):
"""Return the named user object or None"""
return
self
.
data
.
get
(
name
,
None
)
def
_doA
ddUser
(
self
,
name
,
password
,
roles
,
domains
):
"""
Create a new user
"""
def
manage_a
ddUser
(
self
,
name
,
password
,
roles
,
domains
):
"""
API method used to create a new user object.
"""
self
.
data
[
name
]
=
User
(
name
,
password
,
roles
,
domains
)
def
_doChangeUser
(
self
,
name
,
password
,
roles
,
domains
):
def
manage_editUser
(
self
,
name
,
password
,
roles
,
domains
):
"""API method used to change the attributes of a user."""
user
=
self
.
data
[
name
]
if
password
is
not
None
:
user
.
__
=
password
user
.
roles
=
roles
user
.
domains
=
domains
def
_doDelUsers
(
self
,
names
):
def
manage_delUsers
(
self
,
names
):
"""API method used to delete one or more user objects."""
for
name
in
names
:
del
self
.
data
[
name
]
...
...
@@ -1041,8 +1076,8 @@ class UserFolder(BasicUserFolder):
info
=
readUserAccessFile
(
'inituser'
)
if
info
:
name
,
password
,
domains
,
remote_user_mode
=
info
self
.
_doD
elUsers
(
self
.
getUserNames
())
self
.
_doA
ddUser
(
name
,
password
,
(
'Manager'
,),
domains
)
self
.
manage_d
elUsers
(
self
.
getUserNames
())
self
.
manage_a
ddUser
(
name
,
password
,
(
'Manager'
,),
domains
)
try
:
os
.
remove
(
os
.
path
.
join
(
INSTANCE_HOME
,
'inituser'
))
except
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment