mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Set the e-mail attribute using the default domain name by default
https://fedorahosted.org/freeipa/ticket/2810
This commit is contained in:
committed by
Martin Kosek
parent
26dfbe61dd
commit
e4e5bd0595
@@ -28,6 +28,7 @@ from ipalib.request import context
|
||||
from ipalib import _, ngettext
|
||||
from ipalib import output
|
||||
from ipapython.ipautil import ipa_generate_password
|
||||
from ipapython.ipavalidate import Email
|
||||
import posixpath
|
||||
from ipalib.util import validate_sshpubkey, output_sshpubkey
|
||||
if api.env.in_server and api.env.context in ['lite', 'server']:
|
||||
@@ -367,19 +368,26 @@ class user(LDAPObject):
|
||||
),
|
||||
)
|
||||
|
||||
def _normalize_email(self, email, config=None):
|
||||
def _normalize_and_validate_email(self, email, config=None):
|
||||
if not config:
|
||||
config = self.backend.get_ipa_config()[1]
|
||||
|
||||
# check if default email domain should be added
|
||||
if email and 'ipadefaultemaildomain' in config:
|
||||
defaultdomain = config.get('ipadefaultemaildomain', [None])[0]
|
||||
if email:
|
||||
norm_email = []
|
||||
if not isinstance(email, (list, tuple)):
|
||||
email = [email]
|
||||
for m in email:
|
||||
if isinstance(m, basestring) and m.find('@') == -1:
|
||||
norm_email.append(m + u'@' + config['ipadefaultemaildomain'][0])
|
||||
if isinstance(m, basestring):
|
||||
if '@' not in m and defaultdomain:
|
||||
m = m + u'@' + defaultdomain
|
||||
if not Email(m):
|
||||
raise errors.ValidationError(name='email', error=_('invalid e-mail format: %(email)s') % dict(email=m))
|
||||
norm_email.append(m)
|
||||
else:
|
||||
if not Email(m):
|
||||
raise errors.ValidationError(name='email', error=_('invalid e-mail format: %(email)s') % dict(email=m))
|
||||
norm_email.append(m)
|
||||
return norm_email
|
||||
|
||||
@@ -509,7 +517,13 @@ class user_add(LDAPCreate):
|
||||
setattr(context, 'randompassword', entry_attrs['userpassword'])
|
||||
|
||||
if 'mail' in entry_attrs:
|
||||
entry_attrs['mail'] = self.obj._normalize_email(entry_attrs['mail'], config)
|
||||
entry_attrs['mail'] = self.obj._normalize_and_validate_email(entry_attrs['mail'], config)
|
||||
else:
|
||||
# No e-mail passed in. If we have a default e-mail domain set
|
||||
# then we'll add it automatically.
|
||||
defaultdomain = config.get('ipadefaultemaildomain', [None])[0]
|
||||
if defaultdomain:
|
||||
entry_attrs['mail'] = self.obj._normalize_and_validate_email(keys[-1], config)
|
||||
|
||||
if 'manager' in entry_attrs:
|
||||
entry_attrs['manager'] = self.obj._normalize_manager(entry_attrs['manager'])
|
||||
@@ -593,7 +607,7 @@ class user_mod(LDAPUpdate):
|
||||
)
|
||||
)
|
||||
if 'mail' in entry_attrs:
|
||||
entry_attrs['mail'] = self.obj._normalize_email(entry_attrs['mail'])
|
||||
entry_attrs['mail'] = self.obj._normalize_and_validate_email(entry_attrs['mail'])
|
||||
if 'manager' in entry_attrs:
|
||||
entry_attrs['manager'] = self.obj._normalize_manager(entry_attrs['manager'])
|
||||
validate_nsaccountlock(entry_attrs)
|
||||
|
||||
@@ -56,6 +56,7 @@ class test_attr(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
initials=[u'TU'],
|
||||
|
||||
@@ -807,6 +807,7 @@ class test_automember(Declarative):
|
||||
uid=[manager1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (manager1, api.env.domain)],
|
||||
displayname=[u'Michael Scott'],
|
||||
cn=[u'Michael Scott'],
|
||||
initials=[u'MS'],
|
||||
@@ -844,6 +845,7 @@ class test_automember(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
manager=[DN(('uid', 'mscott'), ('cn', 'users'), ('cn', 'accounts'), api.env.basedn)],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
|
||||
@@ -688,6 +688,7 @@ class test_group(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
initials=[u'TU'],
|
||||
@@ -804,6 +805,7 @@ class test_group(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[u'1000'],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
initials=[u'TU'],
|
||||
|
||||
@@ -105,6 +105,7 @@ class test_krbtpolicy(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
initials=[u'TU'],
|
||||
|
||||
@@ -171,6 +171,7 @@ class test_nesting(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
initials=[u'TU'],
|
||||
@@ -208,6 +209,7 @@ class test_nesting(Declarative):
|
||||
uid=[user2],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user2, api.env.domain)],
|
||||
displayname=[u'Test User2'],
|
||||
cn=[u'Test User2'],
|
||||
initials=[u'TU'],
|
||||
@@ -245,6 +247,7 @@ class test_nesting(Declarative):
|
||||
uid=[user3],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user3, api.env.domain)],
|
||||
displayname=[u'Test User3'],
|
||||
cn=[u'Test User3'],
|
||||
initials=[u'TU'],
|
||||
@@ -282,6 +285,7 @@ class test_nesting(Declarative):
|
||||
uid=[user4],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user4, api.env.domain)],
|
||||
displayname=[u'Test User4'],
|
||||
cn=[u'Test User4'],
|
||||
initials=[u'TU'],
|
||||
|
||||
@@ -282,6 +282,7 @@ class test_netgroup(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
initials=[u'TU'],
|
||||
@@ -318,6 +319,7 @@ class test_netgroup(Declarative):
|
||||
uid=[user2],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user2, api.env.domain)],
|
||||
displayname=[u'Test User2'],
|
||||
cn=[u'Test User2'],
|
||||
initials=[u'TU'],
|
||||
|
||||
@@ -109,6 +109,7 @@ class test_range(Declarative):
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
initials=[u'TU'],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
('cn','kerberos'),api.env.basedn)],
|
||||
|
||||
@@ -201,6 +201,7 @@ class test_selinuxusermap(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
initials=[u'TU'],
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
# Rob Crittenden <rcritten@redhat.com>
|
||||
# Pavel Zuna <pzuna@redhat.com>
|
||||
# Jason Gerard DeRose <jderose@redhat.com>
|
||||
# John Dennis <jdennis@redhat.com>
|
||||
#
|
||||
# Copyright (C) 2008, 2009 Red Hat
|
||||
# see file 'COPYING' for use and warranty information
|
||||
@@ -117,6 +116,7 @@ class test_user(Declarative):
|
||||
gidnumber=[fuzzy_digits],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
initials=[u'TU'],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
@@ -157,6 +157,7 @@ class test_user(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
memberof_group=[u'ipausers'],
|
||||
nsaccountlock=False,
|
||||
has_keytab=False,
|
||||
@@ -199,6 +200,7 @@ class test_user(Declarative):
|
||||
'displayname': [u'Test User1'],
|
||||
'cn': [u'Test User1'],
|
||||
'initials': [u'TU'],
|
||||
'mail': [u'%s@%s' % (user1, api.env.domain)],
|
||||
},
|
||||
],
|
||||
summary=u'1 user matched',
|
||||
@@ -244,6 +246,7 @@ class test_user(Declarative):
|
||||
has_password=False,
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
),
|
||||
],
|
||||
summary=u'1 user matched',
|
||||
@@ -284,6 +287,7 @@ class test_user(Declarative):
|
||||
has_password=False,
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
),
|
||||
],
|
||||
summary=u'2 users matched',
|
||||
@@ -427,6 +431,7 @@ class test_user(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
memberof_group=[u'ipausers'],
|
||||
nsaccountlock=False,
|
||||
has_keytab=False,
|
||||
@@ -461,6 +466,7 @@ class test_user(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
memberof_group=[u'ipausers'],
|
||||
nsaccountlock=False,
|
||||
has_keytab=False,
|
||||
@@ -485,6 +491,7 @@ class test_user(Declarative):
|
||||
uid=[renameduser1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
memberof_group=[u'ipausers'],
|
||||
nsaccountlock=False,
|
||||
has_keytab=False,
|
||||
@@ -515,6 +522,7 @@ class test_user(Declarative):
|
||||
uid=[user1],
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
memberof_group=[u'ipausers'],
|
||||
nsaccountlock=False,
|
||||
has_keytab=False,
|
||||
@@ -575,6 +583,7 @@ class test_user(Declarative):
|
||||
gidnumber=[fuzzy_digits],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
initials=[u'TU'],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
@@ -611,6 +620,7 @@ class test_user(Declarative):
|
||||
gidnumber=[fuzzy_digits],
|
||||
displayname=[u'Test User2'],
|
||||
cn=[u'Test User2'],
|
||||
mail=[u'%s@%s' % (user2, api.env.domain)],
|
||||
initials=[u'TU'],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
@@ -647,6 +657,7 @@ class test_user(Declarative):
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
memberof_group=[u'ipausers'],
|
||||
mail=[u'%s@%s' % (user2, api.env.domain)],
|
||||
nsaccountlock=False,
|
||||
has_keytab=False,
|
||||
has_password=False,
|
||||
@@ -676,6 +687,7 @@ class test_user(Declarative):
|
||||
has_password=False,
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
mail=[u'%s@%s' % (user2, api.env.domain)],
|
||||
manager=[user1],
|
||||
),
|
||||
],
|
||||
@@ -825,6 +837,7 @@ class test_user(Declarative):
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
initials=[u'TU'],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
street=[u'123 Maple Rd'],
|
||||
l=[u'Anytown'],
|
||||
st=[u'MD'],
|
||||
@@ -874,6 +887,7 @@ class test_user(Declarative):
|
||||
gidnumber=[fuzzy_digits],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
initials=[u'TU'],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
@@ -922,6 +936,7 @@ class test_user(Declarative):
|
||||
gidnumber=[fuzzy_digits],
|
||||
displayname=[u'Test User2'],
|
||||
cn=[u'Test User2'],
|
||||
mail=[u'%s@%s' % (user2, api.env.domain)],
|
||||
initials=[u'TU'],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
@@ -950,6 +965,7 @@ class test_user(Declarative):
|
||||
uidnumber=[fuzzy_digits],
|
||||
gidnumber=[fuzzy_digits],
|
||||
memberof_group=[u'ipausers'],
|
||||
mail=[u'%s@%s' % (user2, api.env.domain)],
|
||||
nsaccountlock=False,
|
||||
has_keytab=True,
|
||||
has_password=True,
|
||||
@@ -992,6 +1008,7 @@ class test_user(Declarative):
|
||||
gidnumber=[fuzzy_digits],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
initials=[u'TU'],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
@@ -1064,6 +1081,7 @@ class test_user(Declarative):
|
||||
gidnumber=[fuzzy_digits],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
initials=[u'TU'],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
@@ -1126,6 +1144,7 @@ class test_user(Declarative):
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
initials=[u'TU'],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
('cn','kerberos'),api.env.basedn)],
|
||||
@@ -1186,6 +1205,7 @@ class test_user(Declarative):
|
||||
gidnumber=[u'1000'],
|
||||
displayname=[u'Test User2'],
|
||||
cn=[u'Test User2'],
|
||||
mail=[u'%s@%s' % (user2, api.env.domain)],
|
||||
initials=[u'TU'],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
@@ -1238,6 +1258,7 @@ class test_user(Declarative):
|
||||
gidnumber=[fuzzy_digits],
|
||||
displayname=[u'Test User1'],
|
||||
cn=[u'Test User1'],
|
||||
mail=[u'%s@%s' % (user1, api.env.domain)],
|
||||
initials=[u'TU'],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
@@ -1273,6 +1294,7 @@ class test_user(Declarative):
|
||||
gidnumber=[u'1000'],
|
||||
displayname=[u'Test User2'],
|
||||
cn=[u'Test User2'],
|
||||
mail=[u'%s@%s' % (user2, api.env.domain)],
|
||||
initials=[u'TU'],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
@@ -1330,6 +1352,7 @@ class test_user(Declarative):
|
||||
displayname=[u'Second Admin'],
|
||||
cn=[u'Second Admin'],
|
||||
initials=[u'SA'],
|
||||
mail=[u'%s@%s' % (admin2, api.env.domain)],
|
||||
ipauniqueid=[fuzzy_uuid],
|
||||
krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
|
||||
('cn','kerberos'),api.env.basedn)],
|
||||
|
||||
Reference in New Issue
Block a user