- Implemented permission system management inside the game
- changed @chperm to @setperm to avoid confusion with channel commands - added @setgroup command for adding user group permissions - Moved permissions/group setup into settings file to allow admins to tweak without going into evennia engine. - Add all new players to default permission group (defined in settings) - Defined a basic group hierarchy, removed permission 'genperms.builder' in favour of a group named builders instead, containing all relevant permissions. - Filtered out all django's automatic permissions in @setperm/list to make permission system more controlled by admin. - Probably fixed bug that caused new users to not be signed up to channels (more testing needed) - Added Exception handler in unloggedin method create, this was killing tracebacks upon user creation. /Griatch
This commit is contained in:
parent
77f2186d9a
commit
7f7306a6e4
23 changed files with 341 additions and 214 deletions
|
|
@ -5,13 +5,12 @@ other things.
|
|||
|
||||
Everything starts at handle_setup()
|
||||
"""
|
||||
from django.contrib.auth.models import User, Group
|
||||
from django.contrib.auth.models import User, Group, Permission
|
||||
from django.core import management
|
||||
from django.conf import settings
|
||||
from src.objects.models import Object
|
||||
from src.config.models import ConfigValue, CommandAlias, ConnectScreen
|
||||
from src import comsys, defines_global
|
||||
|
||||
from src import comsys, defines_global, logger
|
||||
def get_god_user():
|
||||
"""
|
||||
Returns the initially created 'god' User object.
|
||||
|
|
@ -54,13 +53,21 @@ def create_objects():
|
|||
|
||||
def create_groups():
|
||||
"""
|
||||
Creates the default permissions groups.
|
||||
Creates the default permissions groups and assign permissions to each as defined in settings.
|
||||
"""
|
||||
groups = ("Immortals", "Wizards", "Builders", "Player Helpers")
|
||||
for group in groups:
|
||||
for group_name, perm_tuple in settings.PERM_GROUPS.items():
|
||||
newgroup = Group()
|
||||
newgroup.name = group
|
||||
newgroup.name = group_name
|
||||
newgroup.save()
|
||||
for perm_string in perm_tuple:
|
||||
#assign permissions to the group
|
||||
app_label, codename = perm_string.split(".",1)
|
||||
try:
|
||||
permission = Permission.objects.filter(content_type__app_label=app_label).get(codename=codename)
|
||||
except Permission.DoesNotExist:
|
||||
logger.log_errmsg("Initial_setup: Permission %s is not defined." % perm_string)
|
||||
continue
|
||||
newgroup.permissions.add(permission)
|
||||
|
||||
def create_channels():
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue