changeset 4126:e67379669e11

Make sure user has edit permission on all properties when creating items.
author Stefan Seefeld <stefan@seefeld.name>
date Wed, 17 Jun 2009 01:28:11 +0000
parents d499c3499d18
children 6609f944fb0c
files roundup/cgi/actions.py
diffstat 1 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/roundup/cgi/actions.py	Wed Jun 17 01:26:34 2009 +0000
+++ b/roundup/cgi/actions.py	Wed Jun 17 01:28:11 2009 +0000
@@ -539,9 +539,25 @@
         Base behaviour is to check the user can edit this class. No additional
         property checks are made.
         """
+
         if not classname :
             classname = self.client.classname
-        return self.hasPermission('Create', classname=classname)
+        
+        if not self.hasPermission('Create', classname=classname):
+            return 0
+
+        # Check Edit permission for each property, to avoid being able
+        # to set restricted ones on new item creation
+        for key in props:
+            if not self.hasPermission('Edit', classname=classname,
+                                      property=key):
+                # We restrict by default and special-case allowed properties
+                if key == 'date' or key == 'content':
+                    continue
+                elif key == 'author' and props[key] == self.userid:
+                    continue
+                return 0
+        return 1
 
 class EditItemAction(EditCommon):
     def lastUserActivity(self):

Roundup Issue Tracker: http://roundup-tracker.org/