Commit e03a89b6 authored by Xavier Thompson's avatar Xavier Thompson

slapformat: WIP: Improve user

parent 101bbecd
......@@ -418,19 +418,19 @@ class User(object):
self.groups = groups
def createUser(self):
grpname = 'grp_' + self.name if sys.platform == 'cygwin' else self.name
if not self.isGroupAvailable(grpname):
call(['groupadd', grpname])
user_parameter_list = ['-d', self.path, '-g', self.name, '-s', self.SHELL]
groupname = 'grp_' + self.name if sys.platform == 'cygwin' else self.name
if not self.groupExists(groupname):
call(['groupadd', groupname])
parameters = ['-d', self.path, '-g', self.name, '-s', self.SHELL]
if self.groups:
user_parameter_list.extend(['-G', ','.join(self.groups), '-a'])
user_parameter_list.append(self.name)
if self.isUserAvailable(self.name):
parameters.extend(['-G', ','.join(self.groups), '-a'])
parameters.append(self.name)
if self.userExists(self.name):
# if the user is already created and used we should not fail
call(['usermod'] + user_parameter_list, raise_on_error=False)
call(['usermod'] + parameters, raise_on_error=False)
else:
user_parameter_list.append('-r')
call(['useradd'] + user_parameter_list)
parameters.append('-r')
call(['useradd'] + parameters)
# lock the password of user
call(['passwd', '-l', self.name])
......@@ -439,7 +439,7 @@ class User(object):
return pw.pw_uid, pw.pw_gid
@classmethod
def isGroupAvailable(cls, name):
def groupExists(cls, name):
try:
grp.getgrnam(name)
return True
......@@ -447,13 +447,14 @@ class User(object):
return False
@classmethod
def isUserAvailable(cls, name):
def userExists(cls, name):
try:
pwd.getpwnam(name)
return True
except KeyError:
return False
# Utilities
def call(args, raise_on_error=True):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment