[Freeipa-devel] [PATCH] edit protected fields

Kevin McCarthy kmccarth at redhat.com
Mon Sep 10 17:04:12 UTC 2007


This patch adds a checkbox to the edit person page, to toggle editing
"protected" fields - currently uidnumber, gidnumber, and password.

-Kevin

-------------- next part --------------
# HG changeset patch
# User Kevin McCarthy <kmccarth at redhat.com>
# Date 1189443753 25200
# Node ID 17eb647a011bcf7d0c0a54dcf48f6d60ce1e932d
# Parent  530e225e14080cae2f36464a4cd2bf18b425b9be
Edit protected fields checkbox on user edit page.
(Password updating still doesn't work due to ACI though)

diff -r 530e225e1408 -r 17eb647a011b ipa-server/ipa-gui/ipagui/controllers.py
--- a/ipa-server/ipa-gui/ipagui/controllers.py	Mon Sep 10 08:55:36 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/controllers.py	Mon Sep 10 10:02:33 2007 -0700
@@ -145,6 +145,12 @@ class Root(controllers.RootController):
                 new_user.setValue('nsAccountLock', 'true')
             else:
                 new_user.setValue('nsAccountLock', None)
+            if kw.get('userpassword'):
+                new_user.setValue('userpassword', kw.get('userpassword'))
+            if kw.get('uidnumber'):
+                new_user.setValue('uidnumber', kw.get('uidnumber'))
+            if kw.get('gidnumber'):
+                new_user.setValue('gidnumber', kw.get('gidnumber'))
 
             #
             # this is a hack until we decide on the policy for names/cn/sn/givenName
diff -r 530e225e1408 -r 17eb647a011b ipa-server/ipa-gui/ipagui/forms/user.py
--- a/ipa-server/ipa-gui/ipagui/forms/user.py	Mon Sep 10 08:55:36 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/forms/user.py	Mon Sep 10 10:02:33 2007 -0700
@@ -77,7 +77,7 @@ class UserEditForm(widgets.Form):
 
     fields = [UserFields.givenname, UserFields.sn, UserFields.mail,
               UserFields.uid_hidden, UserFields.user_orig,
-              UserFields.uidnumber_hidden, UserFields.gidnumber_hidden,
+              UserFields.uidnumber, UserFields.gidnumber,
               UserFields.krbPasswordExpiration_hidden,
               ]
 
diff -r 530e225e1408 -r 17eb647a011b ipa-server/ipa-gui/ipagui/static/css/style.css
--- a/ipa-server/ipa-gui/ipagui/static/css/style.css	Mon Sep 10 08:55:36 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/static/css/style.css	Mon Sep 10 10:02:33 2007 -0700
@@ -149,6 +149,10 @@ body {
 }
 
 .small {
+  font-size: small;
+}
+
+.xsmall {
   font-size: x-small;
 }
 
diff -r 530e225e1408 -r 17eb647a011b ipa-server/ipa-gui/ipagui/templates/master.kid
--- a/ipa-server/ipa-gui/ipagui/templates/master.kid	Mon Sep 10 08:55:36 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/templates/master.kid	Mon Sep 10 10:02:33 2007 -0700
@@ -28,7 +28,7 @@
       <div id="logo">
         <a href="${tg.url('/')}"><img 
         src="${tg.url('/static/images/logo.png')}"
-        border="0"
+        border="0" alt="homepage"
         /></a>
       </div>
       <div id="headerinfo">
diff -r 530e225e1408 -r 17eb647a011b ipa-server/ipa-gui/ipagui/templates/useredit.kid
--- a/ipa-server/ipa-gui/ipagui/templates/useredit.kid	Mon Sep 10 08:55:36 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/templates/useredit.kid	Mon Sep 10 10:02:33 2007 -0700
@@ -6,7 +6,16 @@
 <title>Edit Person</title>
 </head>
 <body>
+
+  <div>
+    <div style="float:right">
+      <input type="checkbox"
+          onclick="toggleProtectedFields(this);">
+        <span class="small">edit protected fields</span>
+      </input>
+    </div>
     <h2>Edit Person</h2>
+  </div>
 
 <?python
 from ipagui.helpers import userhelper
diff -r 530e225e1408 -r 17eb647a011b ipa-server/ipa-gui/ipagui/templates/usereditform.kid
--- a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid	Mon Sep 10 08:55:36 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid	Mon Sep 10 10:02:33 2007 -0700
@@ -1,6 +1,26 @@
 <div xmlns:py="http://purl.org/kid/ns#"
   class="simpleroster">
   <form action="${action}" name="${name}" method="${method}" class="tableform">
+
+  <script type="text/javascript">
+    function toggleProtectedFields(checkbox) {
+      passwordField = document.getElementById('form_userpassword');
+      passwordConfirmField = document.getElementById('form_userpassword_confirm');
+      uidnumberField = document.getElementById('form_uidnumber');
+      gidnumberField = document.getElementById('form_gidnumber');
+      if (checkbox.checked) {
+        passwordField.disabled = false;
+        passwordConfirmField.disabled = false;
+        uidnumberField.disabled = false;
+        gidnumberField.disabled = false;
+      } else {
+        passwordField.disabled = true;
+        passwordConfirmField.disabled = true;
+        uidnumberField.disabled = true;
+        gidnumberField.disabled = true;
+      }
+    }
+  </script>
 
 
   <div py:for="field in hidden_fields"
@@ -56,6 +76,10 @@
           <span py:replace="user.userpassword.display(value_for(user.userpassword))" />
           <span py:if="tg.errors.get('userpassword')" class="fielderror"
               py:content="tg.errors.get('userpassword')" />
+
+          <script type="text/javascript">
+              document.getElementById('form_userpassword').disabled = true;
+          </script>
 
           <!-- 
           <span id="password_text">********</span>
@@ -71,7 +95,7 @@
                 });" />
           <br />
           <input type="checkbox"
-              onclick="togglePassword(this);"><span class="small">edit</span></input>
+              onclick="togglePassword(this);"><span class="xsmall">edit</span></input>
           <script type="text/javascript">
             document.getElementById('form_userpassword').style.display='none';
 
@@ -104,6 +128,10 @@
                value_for(user.userpassword_confirm))" />
           <span py:if="tg.errors.get('userpassword_confirm')" class="fielderror"
               py:content="tg.errors.get('userpassword_confirm')" />
+
+          <script type="text/javascript">
+              document.getElementById('form_userpassword_confirm').disabled = true;
+          </script>
         </td>
       </tr>
 
@@ -113,7 +141,14 @@
             py:content="user.uidnumber.label" />:
         </th>
         <td>
-          ${value_for(user.uidnumber)}
+          <span py:replace="user.uidnumber.display(
+               value_for(user.uidnumber))" />
+          <span py:if="tg.errors.get('uidnumber')" class="fielderror"
+              py:content="tg.errors.get('uidnumber')" />
+
+          <script type="text/javascript">
+              document.getElementById('form_uidnumber').disabled = true;
+          </script>
         </td>
       </tr>
 
@@ -123,7 +158,14 @@
             py:content="user.gidnumber.label" />:
         </th>
         <td>
-          ${value_for(user.gidnumber)}
+          <span py:replace="user.gidnumber.display(
+               value_for(user.gidnumber))" />
+          <span py:if="tg.errors.get('gidnumber')" class="fielderror"
+              py:content="tg.errors.get('gidnumber')" />
+
+          <script type="text/javascript">
+              document.getElementById('form_gidnumber').disabled = true;
+          </script>
         </td>
       </tr>
     </table>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 2228 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20070910/d5ad07b4/attachment.bin>


More information about the Freeipa-devel mailing list