mirror of
https://github.com/nikdoof/test-auth.git
synced 2026-01-30 16:08:14 +00:00
Further working on Permission Rulesets
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.contrib.auth.admin import UserAdmin
|
from django.contrib.auth.admin import UserAdmin
|
||||||
from sso.models import Service, ServiceAccount, SSOUser, SSOUserNote
|
from django.contrib.contenttypes import generic
|
||||||
|
|
||||||
|
from sso.models import Service, ServiceAccount, SSOUser, SSOUserNote, PermissionRule, PermissionRuleset
|
||||||
|
|
||||||
|
|
||||||
class ServiceAdmin(admin.ModelAdmin):
|
class ServiceAdmin(admin.ModelAdmin):
|
||||||
@@ -32,8 +34,28 @@ class SSOUserNoteAdmin(admin.ModelAdmin):
|
|||||||
search_fields = ['user__username']
|
search_fields = ['user__username']
|
||||||
|
|
||||||
|
|
||||||
|
class PermissionRuleInline(generic.GenericTabularInline):
|
||||||
|
model = PermissionRule
|
||||||
|
extra = 1
|
||||||
|
ct_field = '
|
||||||
|
ct_fk_field = '
|
||||||
|
|
||||||
|
class PermissionRuleAdmin(admin.ModelAdmin):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class PermissionRulesetAdmin(admin.ModelAdmin):
|
||||||
|
list_display = ('name', 'group', 'active')
|
||||||
|
list_filter = ('active',)
|
||||||
|
search_fields = ('name', 'group__name')
|
||||||
|
inlines = [PermissionRuleInline,]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(Service, ServiceAdmin)
|
admin.site.register(Service, ServiceAdmin)
|
||||||
admin.site.register(ServiceAccount, ServiceAccountAdmin)
|
admin.site.register(ServiceAccount, ServiceAccountAdmin)
|
||||||
admin.site.unregister(User)
|
admin.site.unregister(User)
|
||||||
admin.site.register(User, SSOUserAdmin)
|
admin.site.register(User, SSOUserAdmin)
|
||||||
admin.site.register(SSOUserNote, SSOUserNoteAdmin)
|
admin.site.register(SSOUserNote, SSOUserNoteAdmin)
|
||||||
|
admin.site.register(PermissionRuleset, PermissionRulesetAdmin)
|
||||||
|
admin.site.register(PermissionRule, PermissionRuleAdmin)
|
||||||
|
|||||||
@@ -202,9 +202,9 @@ signals.pre_delete.connect(ServiceAccount.pre_delete_listener, sender=ServiceAcc
|
|||||||
class PermissionRuleset(models.Model):
|
class PermissionRuleset(models.Model):
|
||||||
""" A group of rules to assign a Group to a user """
|
""" A group of rules to assign a Group to a user """
|
||||||
|
|
||||||
name = models.CharField("Name", max_length=200)
|
name = models.CharField("Name", max_length=200, help_text="Name of the ruleset")
|
||||||
active = models.BooleanField()
|
active = models.BooleanField("Active", help_text="Indicates if the rule will be used during permissions processing")
|
||||||
group = models.ForeignKey(Group)
|
group = models.ForeignKey(Group, help_text="Group that will be added to the user's profile if they match the listed rules")
|
||||||
|
|
||||||
check_type = models.BooleanField()
|
check_type = models.BooleanField()
|
||||||
|
|
||||||
@@ -220,6 +220,9 @@ class PermissionRuleset(models.Model):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = u'Ruleset'
|
verbose_name = u'Ruleset'
|
||||||
verbose_name_plural = u'Rulesets'
|
verbose_name_plural = u'Rulesets'
|
||||||
@@ -228,11 +231,11 @@ class PermissionRuleset(models.Model):
|
|||||||
class PermissionRule(models.Model):
|
class PermissionRule(models.Model):
|
||||||
ruleset = models.ForeignKey(PermissionRuleset, related_name='rules')
|
ruleset = models.ForeignKey(PermissionRuleset, related_name='rules')
|
||||||
|
|
||||||
obj_type = models.ForeignKey(ContentType)
|
obj_type = models.ForeignKey(ContentType, verbose_name="Object Type", help_text="Type of object you want to check for")
|
||||||
obj_id = models.IntegerField()
|
obj_id = models.IntegerField("Object ID")
|
||||||
related_obj = generic.GenericForeignKey(obj_type, obj_id)
|
related_obj = generic.GenericForeignKey(obj_type, obj_id)
|
||||||
|
|
||||||
check_type = models.IntegerField()
|
check_type = models.IntegerField("Check Type")
|
||||||
|
|
||||||
def check_rule(self, user):
|
def check_rule(self, user):
|
||||||
|
|
||||||
@@ -243,6 +246,10 @@ class PermissionRule(models.Model):
|
|||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
#return self.related_obj
|
||||||
|
return "%s %s-%s" % (self.ruleset.name, self.obj_type, self.obj_id)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = u'Rule'
|
verbose_name = u'Rule'
|
||||||
verbose_name_plural = u'Rules'
|
verbose_name_plural = u'Rules'
|
||||||
|
|||||||
Reference in New Issue
Block a user