[Freeipa-devel] [PATCH] password expiration messages

Kevin McCarthy kmccarth at redhat.com
Wed Sep 5 22:48:52 UTC 2007


Add password expiration messages to user show/edit.
Small fix to uid and email suggestion - lowercase before generating.

-Kevin

-------------- next part --------------
# HG changeset patch
# User Kevin McCarthy <kmccarth at redhat.com>
# Date 1189032844 25200
# Node ID 0e5e5b22b477e9147b810e63b1c7c02fa15ebc09
# Parent  354f0a246e344b7404e00c0ed4402329c0bb4edc
Add password expiration messages to user show/edit pages.
Add userhelper module to provide ui logic.
Fix uid/email suggest to lowercase first.

diff -r 354f0a246e34 -r 0e5e5b22b477 ipa-server/ipa-gui/ipagui/controllers.py
--- a/ipa-server/ipa-gui/ipagui/controllers.py	Tue Sep 04 13:44:59 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/controllers.py	Wed Sep 05 15:54:04 2007 -0700
@@ -17,6 +17,7 @@ import ipa.user
 import ipa.user
 import xmlrpclib
 import forms.user
+from helpers import userhelper
 from ipa import ipaerror
 
 ipa.config.init_config()
@@ -203,6 +204,9 @@ class Root(controllers.RootController):
         if (len(givenname) == 0) or (len(sn) == 0):
             return ""
 
+        givenname = givenname.lower()
+        sn = sn.lower()
+
         uid = givenname[0] + sn[:7]
         try:
             client.get_user_by_uid(uid)
@@ -244,6 +248,9 @@ class Root(controllers.RootController):
         if (len(givenname) == 0) or (len(sn) == 0):
             return ""
 
+        givenname = givenname.lower()
+        sn = sn.lower()
+
         # TODO - get from config
         domain = "freeipa.org"
 
diff -r 354f0a246e34 -r 0e5e5b22b477 ipa-server/ipa-gui/ipagui/forms/user.py
--- a/ipa-server/ipa-gui/ipagui/forms/user.py	Tue Sep 04 13:44:59 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/forms/user.py	Wed Sep 05 15:54:04 2007 -0700
@@ -23,6 +23,7 @@ class UserFields():
     uid_hidden = widgets.HiddenField(name="uid")
     uidnumber_hidden = widgets.HiddenField(name="uidnumber")
     gidnumber_hidden = widgets.HiddenField(name="gidnumber")
+    krbPasswordExpiration_hidden = widgets.HiddenField(name="krbPasswordExpiration")
 
     user_orig = widgets.HiddenField(name="user_orig")
 
@@ -53,6 +54,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.krbPasswordExpiration_hidden,
               ]
 
     def __init__(self, *args, **kw):
diff -r 354f0a246e34 -r 0e5e5b22b477 ipa-server/ipa-gui/ipagui/helpers/__init__.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipa-server/ipa-gui/ipagui/helpers/__init__.py	Wed Sep 05 15:54:04 2007 -0700
@@ -0,0 +1,1 @@
+# __init__.py
diff -r 354f0a246e34 -r 0e5e5b22b477 ipa-server/ipa-gui/ipagui/helpers/userhelper.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipa-server/ipa-gui/ipagui/helpers/userhelper.py	Wed Sep 05 15:54:04 2007 -0700
@@ -0,0 +1,23 @@
+import sys
+import datetime
+
+from ipa import ipautil
+
+def password_expires_in(datestr):
+    """Returns the number of days that password expires in.  Returns a negative number
+       if the password is already expired."""
+    if (datestr == None) or (datestr == ""):
+        return sys.maxint
+
+    expdate = ipautil.parse_generalized_time(datestr)
+    if not expdate:
+        return sys.maxint
+
+    delta = expdate - datetime.datetime.now()
+    return delta.days
+
+def password_is_expired(days):
+    return days < 0
+
+def password_expires_soon(days):
+    return (not password_is_expired(days)) and (days < 7)
diff -r 354f0a246e34 -r 0e5e5b22b477 ipa-server/ipa-gui/ipagui/static/css/style.css
--- a/ipa-server/ipa-gui/ipagui/static/css/style.css	Tue Sep 04 13:44:59 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/static/css/style.css	Wed Sep 05 15:54:04 2007 -0700
@@ -140,6 +140,12 @@ body {
   font-weight: bolder;
 }
 
+.warning_message {
+  font-size: 120%;
+  color: #ee0000;
+  font-weight: bolder;
+}
+
 .fielderror {
   color: red;
   font-weight: bold;
diff -r 354f0a246e34 -r 0e5e5b22b477 ipa-server/ipa-gui/ipagui/templates/useredit.kid
--- a/ipa-server/ipa-gui/ipagui/templates/useredit.kid	Tue Sep 04 13:44:59 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/templates/useredit.kid	Wed Sep 05 15:54:04 2007 -0700
@@ -8,6 +8,24 @@
 <body>
     <h2>Edit Person</h2>
 
+<?python
+from ipagui.helpers import userhelper
+pw_expires_days = userhelper.password_expires_in(user.get("krbPasswordExpiration"))
+pw_expires_soon = userhelper.password_expires_soon(pw_expires_days)
+pw_is_expired = userhelper.password_is_expired(pw_expires_days)
+if pw_expires_days != 1:
+    days_suffix = "s"
+else:
+    days_suffix = ""
+?>
+
+    <div py:if='pw_expires_soon' class="warning_message">
+        Password will expire in ${pw_expires_days} day${days_suffix}
+    </div>
+    <div py:if='pw_is_expired' class="warning_message">
+        Password has expired
+    </div>
+
      ${form.display(action="userupdate", value=user)}
 </body>
 </html>
diff -r 354f0a246e34 -r 0e5e5b22b477 ipa-server/ipa-gui/ipagui/templates/usershow.kid
--- a/ipa-server/ipa-gui/ipagui/templates/usershow.kid	Tue Sep 04 13:44:59 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/templates/usershow.kid	Wed Sep 05 15:54:04 2007 -0700
@@ -7,6 +7,24 @@
 </head>
 <body>
     <h2>View Person</h2>
+
+<?python
+from ipagui.helpers import userhelper
+pw_expires_days = userhelper.password_expires_in(user.get("krbPasswordExpiration"))
+pw_expires_soon = userhelper.password_expires_soon(pw_expires_days)
+pw_is_expired = userhelper.password_is_expired(pw_expires_days)
+if pw_expires_days != 1:
+    days_suffix = "s"
+else:
+    days_suffix = ""
+?>
+
+    <div py:if='pw_expires_soon' class="warning_message">
+        Password will expire in ${pw_expires_days} day${days_suffix}
+    </div>
+    <div py:if='pw_is_expired' class="warning_message">
+        Password has expired
+    </div>
 
     <div class="formsection">Identity Details</div>
     <table class="formtable" cellpadding="2" cellspacing="0" border="0">
-------------- 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/20070905/14454eed/attachment.bin>


More information about the Freeipa-devel mailing list