[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