misc: fix check of nrn with zero as remainder (#24504)

This commit is contained in:
Frédéric Péters 2018-06-13 16:48:02 +02:00
parent d4a976fddd
commit f6ab6ba4c5
1 changed files with 15 additions and 2 deletions

View File

@ -28,6 +28,19 @@ from authentic2 import utils
from authentic2.a2_rbac.utils import get_default_ou
def check_nrn(nrn):
remainder = (97 - int(nrn[:9])) % 97
if remainder == 0:
remainder = 97
return int(remainder) == int(nrn[-2:])
def check_nrn_y2k(nrn):
remainder = (97 - int('2' + nrn[:9])) % 97
if remainder == 0:
remainder = 97
return int(remainder) == int(nrn[-2:])
class AuthenticAdapter(DefaultAdapter):
def auth_login(self, request, user):
utils.login(request, user, 'fedict')
@ -128,9 +141,9 @@ class AuthenticAdapter(DefaultAdapter):
if nrn[:6] == '0000001': # unknown date
birthdate = ''
else:
if (97 - int(nrn[:9])) % 97 == int(nrn[-2:]):
if check_nrn(nrn):
birthdate = '%s/%s/19%s' % (nrn[4:6], nrn[2:4], nrn[:2])
elif (97 - int('2' + nrn[:9])) % 97 == int(nrn[-2:]):
elif check_nrn_y2k(nrn):
birthdate = '%s/%s/20%s' % (nrn[4:6], nrn[2:4], nrn[:2])
else:
birthdate = ''