diff options
author | Kevin McCarthy <kmccarth@redhat.com> | 2007-09-05 15:54:04 -0700 |
---|---|---|
committer | Kevin McCarthy <kmccarth@redhat.com> | 2007-09-05 15:54:04 -0700 |
commit | d036eb0ac95b541c0e4ab65a03acf72bcc8e27a8 (patch) | |
tree | 8f06937d5bc78d21e97b89eba396576c1006e60e /ipa-server | |
parent | 945713ca30475bc1f87029cf98adb50b24812c8e (diff) | |
download | freeipa-d036eb0ac95b541c0e4ab65a03acf72bcc8e27a8.tar.gz freeipa-d036eb0ac95b541c0e4ab65a03acf72bcc8e27a8.tar.xz freeipa-d036eb0ac95b541c0e4ab65a03acf72bcc8e27a8.zip |
Add password expiration messages to user show/edit pages.
Add userhelper module to provide ui logic.
Fix uid/email suggest to lowercase first.
Diffstat (limited to 'ipa-server')
-rw-r--r-- | ipa-server/ipa-gui/ipagui/controllers.py | 7 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/forms/user.py | 2 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/helpers/__init__.py | 1 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/helpers/userhelper.py | 23 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/static/css/style.css | 6 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/useredit.kid | 18 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/usershow.kid | 18 |
7 files changed, 75 insertions, 0 deletions
diff --git a/ipa-server/ipa-gui/ipagui/controllers.py b/ipa-server/ipa-gui/ipagui/controllers.py index 5fb4be06b..047b51876 100644 --- a/ipa-server/ipa-gui/ipagui/controllers.py +++ b/ipa-server/ipa-gui/ipagui/controllers.py @@ -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" diff --git a/ipa-server/ipa-gui/ipagui/forms/user.py b/ipa-server/ipa-gui/ipagui/forms/user.py index b9b6f33d4..db4bd7d5b 100644 --- a/ipa-server/ipa-gui/ipagui/forms/user.py +++ b/ipa-server/ipa-gui/ipagui/forms/user.py @@ -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 --git a/ipa-server/ipa-gui/ipagui/helpers/__init__.py b/ipa-server/ipa-gui/ipagui/helpers/__init__.py new file mode 100644 index 000000000..143f486c0 --- /dev/null +++ b/ipa-server/ipa-gui/ipagui/helpers/__init__.py @@ -0,0 +1 @@ +# __init__.py diff --git a/ipa-server/ipa-gui/ipagui/helpers/userhelper.py b/ipa-server/ipa-gui/ipagui/helpers/userhelper.py new file mode 100644 index 000000000..2a2571dbe --- /dev/null +++ b/ipa-server/ipa-gui/ipagui/helpers/userhelper.py @@ -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 --git a/ipa-server/ipa-gui/ipagui/static/css/style.css b/ipa-server/ipa-gui/ipagui/static/css/style.css index 9ea86ae01..cefb63169 100644 --- a/ipa-server/ipa-gui/ipagui/static/css/style.css +++ b/ipa-server/ipa-gui/ipagui/static/css/style.css @@ -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 --git a/ipa-server/ipa-gui/ipagui/templates/useredit.kid b/ipa-server/ipa-gui/ipagui/templates/useredit.kid index db47ab298..1f31139d1 100644 --- a/ipa-server/ipa-gui/ipagui/templates/useredit.kid +++ b/ipa-server/ipa-gui/ipagui/templates/useredit.kid @@ -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 --git a/ipa-server/ipa-gui/ipagui/templates/usershow.kid b/ipa-server/ipa-gui/ipagui/templates/usershow.kid index 4e73eba35..b4ec46634 100644 --- a/ipa-server/ipa-gui/ipagui/templates/usershow.kid +++ b/ipa-server/ipa-gui/ipagui/templates/usershow.kid @@ -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> |