implement LDAP group and user classes
- add app ldapentities - add new settings GROUP_BASE_DN and USER_BASE_DN - implement ldapentities.models.LdapUser and ldapentities.models.LdapGroup - implement ldapentities.admin.LdapUserAdmin and ldapentities.models.LdapGroupAdmin
This commit is contained in:
parent
b736d5c041
commit
3babbc5b3f
5 changed files with 82 additions and 0 deletions
|
@ -216,6 +216,7 @@ DJANGO_APPS = (
|
|||
|
||||
# Apps specific for this project go here.
|
||||
LOCAL_APPS = (
|
||||
'ldapentities',
|
||||
)
|
||||
|
||||
# See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
|
||||
|
@ -262,6 +263,12 @@ WSGI_APPLICATION = '%s.wsgi.application' % SITE_NAME
|
|||
########## END WSGI CONFIGURATION
|
||||
|
||||
|
||||
########## LDAP SETTINGS
|
||||
GROUP_BASE_DN = get_env_setting('GVALDAP_BASEDN_GROUP')
|
||||
USER_BASE_DN = get_env_setting('GVALDAP_BASEDN_USER')
|
||||
########## END LDAP SETTINGS
|
||||
|
||||
|
||||
########## SOUTH CONFIGURATION
|
||||
# See: http://south.readthedocs.org/en/latest/installation.html#configuring-your-django-installation
|
||||
INSTALLED_APPS += (
|
||||
|
|
0
gvaldap/ldapentities/__init__.py
Normal file
0
gvaldap/ldapentities/__init__.py
Normal file
22
gvaldap/ldapentities/admin.py
Normal file
22
gvaldap/ldapentities/admin.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from .models import (
|
||||
LdapGroup,
|
||||
LdapUser,
|
||||
)
|
||||
|
||||
|
||||
class LdapGroupAdmin(admin.ModelAdmin):
|
||||
exclude = ['dn', 'members']
|
||||
list_display = ['name', 'gid']
|
||||
search_fields = ['name']
|
||||
|
||||
|
||||
class LdapUserAdmin(admin.ModelAdmin):
|
||||
exclude = ['dn', 'password']
|
||||
list_display = ['username', 'uid']
|
||||
search_fields = ['username']
|
||||
|
||||
|
||||
admin.site.register(LdapGroup, LdapGroupAdmin)
|
||||
admin.site.register(LdapUser, LdapUserAdmin)
|
50
gvaldap/ldapentities/models.py
Normal file
50
gvaldap/ldapentities/models.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
from django.conf import settings
|
||||
from django.utils.encoding import python_2_unicode_compatible
|
||||
from ldapdb.models.fields import (
|
||||
CharField,
|
||||
IntegerField,
|
||||
ListField,
|
||||
)
|
||||
import ldapdb.models as ldapmodels
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class LdapGroup(ldapmodels.Model):
|
||||
"""
|
||||
Class for representing an LDAP group entity.
|
||||
|
||||
"""
|
||||
# LDAP meta-data
|
||||
base_dn = settings.GROUP_BASE_DN
|
||||
object_classes = ['posixGroup']
|
||||
|
||||
# posixGroup attributes
|
||||
gid = IntegerField(db_column='gidNumber', unique=True)
|
||||
name = CharField(db_column='cn', max_length=200, primary_key=True)
|
||||
members = ListField(db_column='memberUid', blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class LdapUser(ldapmodels.Model):
|
||||
"""
|
||||
Class for representing an LDAP user entity.
|
||||
|
||||
"""
|
||||
base_dn = settings.USER_BASE_DN
|
||||
object_classes = ['account', 'posixAccount']
|
||||
|
||||
# posixAccount
|
||||
uid = IntegerField(db_column='uidNumber', unique=True)
|
||||
group = IntegerField(db_column='gidNumber')
|
||||
gecos = CharField(db_column='gecos')
|
||||
home_directory = CharField(db_column='homeDirectory')
|
||||
login_shell = CharField(db_column='loginShell', default='/bin/bash')
|
||||
username = CharField(db_column='uid', primary_key=True)
|
||||
password = CharField(db_column='userPassword')
|
||||
common_name = CharField(db_column='cn')
|
||||
|
||||
def __str__(self):
|
||||
return self.username
|
3
gvaldap/ldapentities/tests.py
Normal file
3
gvaldap/ldapentities/tests.py
Normal file
|
@ -0,0 +1,3 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
Loading…
Reference in a new issue