keycloak-memoizeit

KEYCLOAK-3170 Users with only view-users and impersonate

7/15/2016 2:52:21 AM

Details

diff --git a/themes/src/main/resources/theme/base/admin/resources/js/app.js b/themes/src/main/resources/theme/base/admin/resources/js/app.js
index e5cd7c1..1f6f5a8 100755
--- a/themes/src/main/resources/theme/base/admin/resources/js/app.js
+++ b/themes/src/main/resources/theme/base/admin/resources/js/app.js
@@ -2126,18 +2126,22 @@ module.directive('kcReadOnly', function() {
                 }
             }
 
+            var filterIgnored = function(i, e){
+                return !e.attributes['kc-read-only-ignore'];
+            }
+
             scope.$watch(attrs.kcReadOnly, function(readOnly) {
                 if (readOnly) {
-                    element.find('input').each(disable);
-                    element.find('button').each(disable);
-                    element.find('select').each(disable);
-                    element.find('textarea').each(disable);
+                    element.find('input').filter(filterIgnored).each(disable);
+                    element.find('button').filter(filterIgnored).each(disable);
+                    element.find('select').filter(filterIgnored).each(disable);
+                    element.find('textarea').filter(filterIgnored).each(disable);
                 } else {
-                    element.find('input').each(enable);
-                    element.find('input').each(enable);
-                    element.find('button').each(enable);
-                    element.find('select').each(enable);
-                    element.find('textarea').each(enable);
+                    element.find('input').filter(filterIgnored).each(enable);
+                    element.find('input').filter(filterIgnored).each(enable);
+                    element.find('button').filter(filterIgnored).each(enable);
+                    element.find('select').filter(filterIgnored).each(enable);
+                    element.find('textarea').filter(filterIgnored).each(enable);
                 }
             });
         }
diff --git a/themes/src/main/resources/theme/base/admin/resources/partials/user-detail.html b/themes/src/main/resources/theme/base/admin/resources/partials/user-detail.html
index fb00666..c06e5b5 100755
--- a/themes/src/main/resources/theme/base/admin/resources/partials/user-detail.html
+++ b/themes/src/main/resources/theme/base/admin/resources/partials/user-detail.html
@@ -117,7 +117,7 @@
                 <label class="col-md-2 control-label" for="impersonate">{{:: 'impersonate-user' | translate}}</label>
 
                 <div class="col-md-6">
-                    <button id="impersonate" data-ng-show="access.impersonation" class="btn btn-default" data-ng-click="impersonate()">{{:: 'impersonate' | translate}}</button>
+                    <button id="impersonate" data-ng-show="access.impersonation" kc-read-only-ignore class="btn btn-default" data-ng-click="impersonate()">{{:: 'impersonate' | translate}}</button>
                 </div>
                 <kc-tooltip>{{:: 'impersonate-user.tooltip' | translate}}</kc-tooltip>
             </div>