Selaa lähdekoodia

HUE-4447 [auth] Force create a home directory if a user has a profile with it

Thomas Poepping 9 vuotta sitten
vanhempi
commit
00d96c9

+ 6 - 7
apps/useradmin/src/useradmin/views.py

@@ -294,7 +294,7 @@ def edit_user(request, username=None):
       # Ensure home directory is created, if necessary.
       if form.cleaned_data.get('ensure_home_directory'):
         try:
-          ensure_home_directory(request.fs, instance.username)
+          ensure_home_directory(request.fs, get_profile(request.user))
         except (IOError, WebHdfsException), e:
           request.error(_('Cannot make home directory for user %s.') % instance.username)
 
@@ -483,7 +483,7 @@ def add_ldap_users(request):
       if users and form.cleaned_data['ensure_home_directory']:
         for user in users:
           try:
-            ensure_home_directory(request.fs, user.username)
+            ensure_home_directory(request.fs, get_profile(user))
           except (IOError, WebHdfsException), e:
             request.error(_("Cannot make home directory for user %s.") % user.username)
 
@@ -554,7 +554,7 @@ def add_ldap_groups(request):
             unique_users.add(user)
         for user in unique_users:
           try:
-            ensure_home_directory(request.fs, user.username)
+            ensure_home_directory(request.fs, get_profile(user))
           except (IOError, WebHdfsException), e:
             raise PopupException(_("Exception creating home directory for LDAP user %s in group %s.") % (user, group), detail=e)
 
@@ -635,7 +635,7 @@ def sync_ldap_users_and_groups(connection, is_ensuring_home_directory=False, fs=
   if is_ensuring_home_directory:
     for user in users:
       try:
-        ensure_home_directory(fs, user.username)
+        ensure_home_directory(fs, get_profile(user))
       except (IOError, WebHdfsException), e:
         raise PopupException(_("The import may not be complete, sync again."), detail=e)
 
@@ -677,14 +677,13 @@ def sync_ldap_groups(connection, failed_users=None):
   return groups
 
 
-def ensure_home_directory(fs, username):
+def ensure_home_directory(fs, userprofile):
   """
   Adds a users home directory if it doesn't already exist.
 
   Throws IOError, WebHdfsException.
   """
-  home_dir = '/user/%s' % username
-  fs.do_as_user(username, fs.create_home_dir, home_dir)
+  fs.do_as_user(username, fs.create_home_dir, userprofile.home_directory)
 
 
 def sync_unix_users_and_groups(min_uid, max_uid, min_gid, max_gid, check_shell):

+ 3 - 2
desktop/core/src/desktop/auth/views.py

@@ -124,10 +124,11 @@ def dt_login(request, from_modal=False):
           request.session.delete_test_cookie()
 
         auto_create_home_backends = ['AllowAllBackend', 'LdapBackend', 'SpnegoDjangoBackend']
-        if is_first_login_ever or any(backend in backend_names for backend in auto_create_home_backends):
+        if is_first_login_ever or any(backend in backend_names for backend in auto_create_home_backends)\
+                or (userprofile and userprofile.home_directory):
           # Create home directory for first user.
           try:
-            ensure_home_directory(request.fs, user.username)
+            ensure_home_directory(request.fs, userprofile)
           except (IOError, WebHdfsException), e:
             LOG.error(_('Could not create home directory.'), exc_info=e)
             request.error(_('Could not create home directory.'))