Add password expiration messages to user show/edit pages.

Add userhelper module to provide ui logic.
Fix uid/email suggest to lowercase first.
This commit is contained in:
Kevin McCarthy 2007-09-05 15:54:04 -07:00
parent 945713ca30
commit d036eb0ac9
7 changed files with 75 additions and 0 deletions

View File

@ -17,6 +17,7 @@ import ipa.ipaclient
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"

View File

@ -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):

View File

@ -0,0 +1 @@
# __init__.py

View File

@ -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)

View File

@ -140,6 +140,12 @@ body {
font-weight: bolder;
}
.warning_message {
font-size: 120%;
color: #ee0000;
font-weight: bolder;
}
.fielderror {
color: red;
font-weight: bold;

View File

@ -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>

View File

@ -8,6 +8,24 @@
<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">
<tr>