mirror of https://github.com/jumpserver/jumpserver
				
				
				
			
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
from django.conf import settings
 | 
						|
from django.utils.translation import gettext_lazy as _
 | 
						|
 | 
						|
from .base import BaseMFA
 | 
						|
from ..backends.radius import RadiusBackend
 | 
						|
from ..const import MFAType
 | 
						|
 | 
						|
mfa_failed_msg = _("Radius verify code invalid")
 | 
						|
 | 
						|
 | 
						|
class MFARadius(BaseMFA):
 | 
						|
    name = MFAType.Radius.value
 | 
						|
    display_name = MFAType.Radius.name
 | 
						|
    placeholder = _("Radius verification code")
 | 
						|
 | 
						|
    def _check_code(self, code=None):
 | 
						|
        assert self.is_authenticated()
 | 
						|
        backend = RadiusBackend()
 | 
						|
        username = self.user.username
 | 
						|
        user = backend.authenticate(
 | 
						|
            None, username=username, password=code
 | 
						|
        )
 | 
						|
        ok = user is not None
 | 
						|
        msg = '' if ok else mfa_failed_msg
 | 
						|
        return ok, msg
 | 
						|
 | 
						|
    def is_active(self):
 | 
						|
        return True
 | 
						|
 | 
						|
    @staticmethod
 | 
						|
    def global_enabled():
 | 
						|
        return settings.OTP_IN_RADIUS
 | 
						|
 | 
						|
    def get_enable_url(self) -> str:
 | 
						|
        return ''
 | 
						|
 | 
						|
    def can_disable(self):
 | 
						|
        return False
 | 
						|
 | 
						|
    def disable(self):
 | 
						|
        return ''
 | 
						|
 | 
						|
    @staticmethod
 | 
						|
    def help_text_of_disable():
 | 
						|
        return _("Radius global enabled, cannot disable")
 | 
						|
 | 
						|
    def get_disable_url(self) -> str:
 | 
						|
        return ''
 |