56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""passbook LDAP Models"""
 | 
						|
 | 
						|
from django.db import models
 | 
						|
from django.utils.translation import gettext as _
 | 
						|
 | 
						|
from passbook.core.models import Policy, Source, User
 | 
						|
 | 
						|
 | 
						|
class LDAPSource(Source):
 | 
						|
    """LDAP Authentication source"""
 | 
						|
 | 
						|
    TYPE_ACTIVE_DIRECTORY = 'ad'
 | 
						|
    TYPE_GENERIC = 'generic'
 | 
						|
    TYPES = (
 | 
						|
        (TYPE_ACTIVE_DIRECTORY, _('Active Directory')),
 | 
						|
        (TYPE_GENERIC, _('Generic')),
 | 
						|
    )
 | 
						|
 | 
						|
    server_uri = models.TextField()
 | 
						|
    bind_cn = models.TextField()
 | 
						|
    bind_password = models.TextField()
 | 
						|
    type = models.CharField(max_length=20, choices=TYPES)
 | 
						|
 | 
						|
    domain = models.TextField()
 | 
						|
    base_dn = models.TextField()
 | 
						|
    create_user = models.BooleanField(default=False)
 | 
						|
    reset_password = models.BooleanField(default=True)
 | 
						|
 | 
						|
    form = 'passbook.ldap.forms.LDAPSourceForm'
 | 
						|
 | 
						|
    @property
 | 
						|
    def get_login_button(self):
 | 
						|
        raise NotImplementedError()
 | 
						|
 | 
						|
    class Meta:
 | 
						|
 | 
						|
        verbose_name = _('LDAP Source')
 | 
						|
        verbose_name_plural = _('LDAP Sources')
 | 
						|
 | 
						|
class LDAPGroupMembershipPolicy(Policy):
 | 
						|
    """Policy to check if a user is in a certain LDAP Group"""
 | 
						|
 | 
						|
    dn = models.TextField()
 | 
						|
    source = models.ForeignKey('LDAPSource', on_delete=models.CASCADE)
 | 
						|
 | 
						|
    form = 'passbook.ldap.forms.LDAPGroupMembershipPolicyForm'
 | 
						|
 | 
						|
    def passes(self, user: User):
 | 
						|
        """Check if user instance passes this policy"""
 | 
						|
        raise NotImplementedError()
 | 
						|
 | 
						|
    class Meta:
 | 
						|
 | 
						|
        verbose_name = _('LDAP Group Membership Policy')
 | 
						|
        verbose_name_plural = _('LDAP Group Membership Policys')
 |