mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
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:
parent
945713ca30
commit
d036eb0ac9
@ -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"
|
||||
|
||||
|
@ -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):
|
||||
|
1
ipa-server/ipa-gui/ipagui/helpers/__init__.py
Normal file
1
ipa-server/ipa-gui/ipagui/helpers/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
# __init__.py
|
23
ipa-server/ipa-gui/ipagui/helpers/userhelper.py
Normal file
23
ipa-server/ipa-gui/ipagui/helpers/userhelper.py
Normal 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)
|
@ -140,6 +140,12 @@ body {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.warning_message {
|
||||
font-size: 120%;
|
||||
color: #ee0000;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.fielderror {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user