Browse Source

Build ACL keys for users

Ralfp 12 years ago
parent
commit
5d3b09697e
2 changed files with 15 additions and 5 deletions
  1. 13 5
      misago/users/models.py
  2. 2 0
      misago/users/views.py

+ 13 - 5
misago/users/models.py

@@ -77,6 +77,7 @@ class UserManager(models.Manager):
         if not no_roles:
             from misago.roles.models import Role
             new_user.roles.add(Role.objects.get(token='registered'))
+            new_user.make_acl_key()
             new_user.save(force_update=True)
         
         # Load monitor
@@ -159,7 +160,7 @@ class User(models.Model):
     signature_ban_reason_admin = models.TextField(null=True,blank=True)
     timezone = models.CharField(max_length=255,default='utc')
     roles = models.ManyToManyField('roles.Role')
-    acl_cache = models.TextField(null=True,blank=True)
+    acl_key = models.CharField(max_length=12,null=True,blank=True)
     
     objects = UserManager()   
     
@@ -169,10 +170,7 @@ class User(models.Model):
     ACTIVATION_CREDENTIALS = 3
     
     statistics_name = _('Users Registrations')
-        
-    def acl(self):
-        pass
-        
+    
     def is_admin(self):
         if self.is_god():
             return True
@@ -353,6 +351,16 @@ class User(models.Model):
             raw_password = password_reversed
         return check_password(raw_password, self.password, setter)
     
+    def make_acl_key(self):
+        roles_ids = []
+        for role in self.roles.all():
+            roles_ids.append(str(role.pk))
+        self.acl_key = 'acl_%s' % hashlib.md5('_'.join(roles_ids)).hexdigest()[0:8]
+        return self.acl_key
+    
+    def get_acl(self):
+        pass
+    
     def get_avatar(self, size='normal'):
         # Get uploaded avatar
         if self.avatar_type == 'upload':

+ 2 - 0
misago/users/views.py

@@ -231,6 +231,7 @@ class New(FormWidget):
         
         for role in form.cleaned_data['roles']:
             new_user.roles.add(role)
+        new_user.make_acl_key()
         new_user.save(force_update=True)
         
         return new_user, Message(_('New User has been created.'), 'success')
@@ -310,6 +311,7 @@ class Edit(FormWidget):
             for role in form.cleaned_data['roles']:
                 target.roles.add(role)
         
+        target.make_acl_key()
         target.save(force_update=True)
         return target, Message(_('Changes in user\'s "%(name)s" account have been saved.') % {'name': self.original_name}, 'success')