소스 검색

HUE-9605 [core] change_default_password config Not working in latest hue versions (#1448)

* HUE-9605 [core] change_default_password config Not working in latest hue versions (asnaik)

* HUE-9605 [core] change_default_password config Not working in latest hue versions -- pylint (asnaik)

* HUE-9605 [core] change_default_password config Not working in latest hue versions --pylint (asnaik)

Co-authored-by: Akhil Naik <asnaik@cloudere.com>
Asnaik HWX 5 년 전
부모
커밋
b43ffd7dac
3개의 변경된 파일49개의 추가작업 그리고 75개의 파일을 삭제
  1. 21 60
      apps/useradmin/src/useradmin/templates/change_password.mako
  2. 27 14
      apps/useradmin/src/useradmin/views.py
  3. 1 1
      desktop/core/src/desktop/auth/views.py

+ 21 - 60
apps/useradmin/src/useradmin/templates/change_password.mako

@@ -21,10 +21,13 @@ from useradmin.hue_password_policy import is_password_policy_enabled, get_passwo
 
 <%namespace name="layout" file="layout.mako" />
 
-${ commonheader(_('Hue Users'), "useradmin", user, request) | n,unicode }
+% if not is_embeddable:
+  ${ commonheader(_('Hue Users'), "useradmin", user, request) | n,unicode }
+% endif
+
 ${ layout.menubar(section='users') }
 
-<div class="useradmin container-fluid">
+<div id="editUserComponents"  class="useradmin container-fluid">
   <div class="card card-small">
     <h1 class="card-heading simple">${_('Hue Users - Change password: %(username)s') % dict(username=username)}</h1>
 
@@ -64,72 +67,30 @@ ${ layout.menubar(section='users') }
     </form>
   </div>
 </div>
-
-<script src="${ static('desktop/js/hue.routie.js') }" type="text/javascript" charset="utf-8"></script>
-<script>
-  routie.setPathname('/useradmin');
-</script>
-
-
 <script type="text/javascript">
-
 $(document).ready(function(){
  var currentStep = "step1";
-
- routie({
-    "step1":function () {
-      showStep("step1");
-    }
-  });
-
-  function showStep(step) {
-    currentStep = step;
-    if (step != "step1") {
-      $("#backBtn").removeClass("disabled");
-    } else {
-      $("#backBtn").addClass("disabled");
-    }
-
-    if (step != $(".stepDetails:last").attr("id")) {
-      $("#nextBtn").removeClass("disabled");
-    } else {
-      $("#nextBtn").addClass("disabled");
-    }
-
-    $("a.step").parent().removeClass("active");
-    $("a.step[href='#" + step + "']").parent().addClass("active");
-    $(".stepDetails").hide();
-    $("#" + step).show();
-  }
-
-  function validateStep(step) {
-    var proceed = true;
-    $("#" + step).find("[validate=true]").each(function () {
-      if ($(this).val().trim() == "") {
-        proceed = false;
-        routie(step);
-        $(this).parents(".control-group").addClass("error");
-        $(this).parent().find(".help-inline").remove();
-        $(this).after("<span class=\"help-inline\"><strong>${ _('This field is required.') }</strong></span>");
+  var $editUserComponents = $('#editUserComponents');
+  % if is_embeddable:
+  $editUserComponents.find('#editForm').attr('action', window.location.pathname.substr((window.HUE_BASE_URL + '/hue').length).replace(/\/$/, ''));
+  $editUserComponents.find('#editForm').ajaxForm({
+    dataType:  'json',
+    success: function(data) {
+      if (data && data.status == -1) {
+        renderUseradminErrors(data.errors);
+      }
+      else if (data && data.url) {
+        huePubSub.publish('open.link', data.url);
+        $.jHueNotify.info("${ _('User information updated correctly') }");
       }
-    });
-    return proceed;
-  }
-
-  $("[validate=true]").change(function () {
-    $(this).parents(".control-group").removeClass("error");
-    $(this).parent().find(".help-inline").remove();
-  });
-
-  $("#editForm").on("submit", function(){
-    if validateStep("step1") {
-      return true;
     }
-    return false;
-  })
+  });
+  % endif
 });
 </script>
 
 ${layout.commons()}
 
+%if not is_embeddable:
 ${ commonfooter(request, messages) | n,unicode }
+%endif

+ 27 - 14
apps/useradmin/src/useradmin/views.py

@@ -400,7 +400,7 @@ def edit_user(request, username=None):
         if is_admin(request.user):
           return redirect(reverse('about:index'))
         else:
-          return redirect(reverse('desktop_views_home'))
+          return JsonResponse({'url': '/hue'})
       elif is_admin(request.user):
         if is_embeddable:
           return JsonResponse({'url': '/hue' + reverse(list_users)})
@@ -432,7 +432,9 @@ def edit_user(request, username=None):
     })
   else:
     if request.method == 'POST' and is_embeddable:
-      return JsonResponse({'status': -1, 'errors': [{'id': f.id_for_label, 'message': list(map(antixss, f.errors))} for f in form if f.errors]})
+      return JsonResponse({'status': -1,
+                           'errors': [{'id': f.id_for_label, 'message': list(map(antixss, f.errors))} for f in form if
+                                      f.errors]})
     else:
       return render('edit_user.mako', request, {
         'form': form,
@@ -887,7 +889,7 @@ def sync_unix_users_and_groups(min_uid, max_uid, min_gid, max_gid, check_shell):
     members = group.gr_mem
     for member in members:
       if member not in user_groups:
-        user_groups[member] = [ hue_group ]
+        user_groups[member] = [hue_group]
       else:
         user_groups[member].append(hue_group)
 
@@ -924,7 +926,7 @@ def _check_remove_last_super(user_obj):
     return
 
   # Is there any other active superuser left?
-  all_active_su = User.objects.filter(is_superuser__exact = True, is_active__exact = True)
+  all_active_su = User.objects.filter(is_superuser__exact=True, is_active__exact=True)
   num_active_su = all_active_su.count()
 
   if num_active_su < 1:
@@ -1089,14 +1091,16 @@ def _import_ldap_members(connection, group, ldap_info, count=0, max_count=1, fai
     LOG.debug("Importing posix user %s into group %s" % (smart_str(posix_member), smart_str(group.name)))
     user_info = None
     try:
-      user_info = connection.find_users(posix_member, search_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(), user_name_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(), find_by_dn=False)
+      user_info = connection.find_users(posix_member, search_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(),
+                                        user_name_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(), find_by_dn=False)
     except LdapSearchException as e:
       LOG.warn("Failed to find LDAP users: %s" % e)
 
     if user_info:
       users = _import_ldap_users_info(connection, user_info, failed_users=failed_users)
       if users:
-        LOG.debug("Adding member %s represented as users (should be a single user) %s to group %s" % (smart_str(posix_member), smart_str(users), smart_str(group.name)))
+        LOG.debug("Adding member %s represented as users (should be a single user) %s to group %s" % (
+        smart_str(posix_member), smart_str(users), smart_str(group.name)))
         group.user_set.add(*users)
 
 
@@ -1125,7 +1129,8 @@ def _sync_ldap_members(connection, group, ldap_info, count=0, max_count=1, faile
       user = ldap_access.get_ldap_user(username=user_info['username'])
       group.user_set.add(user)
     except User.DoesNotExist:
-      LOG.warn("Synchronizing user %s with group %s failed. User does not exist." % (smart_str(user_info['dn']), smart_str(group.name)))
+      LOG.warn("Synchronizing user %s with group %s failed. User does not exist." % (
+      smart_str(user_info['dn']), smart_str(group.name)))
 
   for group_info in groups_info:
     LOG.debug("Synchronizing group %s" % smart_str(group_info['dn']))
@@ -1140,7 +1145,8 @@ def _sync_ldap_members(connection, group, ldap_info, count=0, max_count=1, faile
     LOG.debug("Synchronizing posix user %s with group %s" % (smart_str(posix_member), smart_str(group.name)))
     users_info = []
     try:
-      users_info = connection.find_users(posix_member, search_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(), user_name_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(), find_by_dn=False)
+      users_info = connection.find_users(posix_member, search_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(),
+                                         user_name_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(), find_by_dn=False)
     except LdapSearchException as e:
       LOG.warn("Failed to find LDAP users: %s" % e)
 
@@ -1149,7 +1155,8 @@ def _sync_ldap_members(connection, group, ldap_info, count=0, max_count=1, faile
         user = ldap_access.get_ldap_user(username=user_info['username'])
         group.user_set.add(user)
       except User.DoesNotExist:
-        LOG.warn("Synchronizing posix user %s with group %s failed. User does not exist." % (smart_str(posix_member), smart_str(group.name)))
+        LOG.warn("Synchronizing posix user %s with group %s failed. User does not exist." % (
+        smart_str(posix_member), smart_str(group.name)))
 
 
 def _import_ldap_nested_groups(connection, groupname_pattern, import_members=False, recursive_import_members=False,
@@ -1264,7 +1271,8 @@ def _import_ldap_suboordinate_groups(connection, groupname_pattern, import_membe
 
       for member in members:
         LOG.debug("Importing user %s" % smart_str(member))
-        group.user_set.add( *( _import_ldap_users(connection, member, import_by_dn=True, failed_users=failed_users) or [] ) )
+        group.user_set.add(
+          *(_import_ldap_users(connection, member, import_by_dn=True, failed_users=failed_users) or []))
 
     # Sync users
     if sync_users:
@@ -1304,21 +1312,26 @@ def _import_ldap_suboordinate_groups(connection, groupname_pattern, import_membe
           # which are defined by 'uid'.
           user_info = None
           try:
-            user_info = connection.find_users(posix_member, search_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(), user_name_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(), find_by_dn=False)
+            user_info = connection.find_users(posix_member, search_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(),
+                                              user_name_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(),
+                                              find_by_dn=False)
           except LdapSearchException as e:
             LOG.warn("Failed to find LDAP user: %s" % e)
 
           if user_info:
             users = _import_ldap_users_info(connection, user_info, import_by_dn=False, failed_users=failed_users)
             if users:
-              LOG.debug("Adding member %s represented as users (should be a single user) %s to group %s" % (smart_str(posix_member), smart_str(users), smart_str(group.name)))
+              LOG.debug("Adding member %s represented as users (should be a single user) %s to group %s" % (
+              smart_str(posix_member), smart_str(users), smart_str(group.name)))
               group.user_set.add(*users)
 
       if sync_users:
         for posix_member in posix_members:
           user_info = []
           try:
-            user_info = connection.find_users(posix_member, search_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(), user_name_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(), find_by_dn=False)
+            user_info = connection.find_users(posix_member, search_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(),
+                                              user_name_attr=desktop.conf.LDAP.USERS.USER_NAME_ATTR.get(),
+                                              find_by_dn=False)
           except LdapSearchException as e:
             LOG.warn("Failed to find LDAP user: %s" % e)
 
@@ -1369,4 +1382,4 @@ def _import_ldap_groups(connection, groupname_pattern, import_members=False, rec
 
 
 def _get_failed_operation_text(username, operation):
-    return '%(username)s is not allowed to perform %(operation)s' % {'username': username, 'operation': operation}
+  return '%(username)s is not allowed to perform %(operation)s' % {'username': username, 'operation': operation}

+ 1 - 1
desktop/core/src/desktop/auth/views.py

@@ -155,7 +155,7 @@ def dt_login(request, from_modal=False):
           LOG.error('Could not create home directory at login for %s.' % user, exc_info=e)
 
         if require_change_password(userprofile):
-          return HttpResponseRedirect(urlresolvers.reverse('useradmin.views.edit_user', kwargs={'username': user.username}))
+          return HttpResponseRedirect('/hue' + urlresolvers.reverse('useradmin.views.edit_user', kwargs={'username': user.username}))
 
         userprofile.first_login = False
         userprofile.last_activity = datetime.now()