summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin McCarthy <kmccarth@redhat.com>2007-09-06 14:28:21 -0700
committerKevin McCarthy <kmccarth@redhat.com>2007-09-06 14:28:21 -0700
commitc821699b64cba075506ecafb187c36eaf866248d (patch)
tree9a38ae31916067b7a929d5c7a2bd8820d308a563
parent450e2661d5289b061cf3af78c96078802668565f (diff)
downloadfreeipa-c821699b64cba075506ecafb187c36eaf866248d.tar.gz
freeipa-c821699b64cba075506ecafb187c36eaf866248d.tar.xz
freeipa-c821699b64cba075506ecafb187c36eaf866248d.zip
Password changes:
- remove password generator button - add confirm password field
-rw-r--r--ipa-server/ipa-gui/ipagui/controllers.py2
-rw-r--r--ipa-server/ipa-gui/ipagui/forms/user.py42
-rw-r--r--ipa-server/ipa-gui/ipagui/static/css/style.css1
-rw-r--r--ipa-server/ipa-gui/ipagui/templates/usereditform.kid17
-rw-r--r--ipa-server/ipa-gui/ipagui/templates/usernewform.kid15
5 files changed, 66 insertions, 11 deletions
diff --git a/ipa-server/ipa-gui/ipagui/controllers.py b/ipa-server/ipa-gui/ipagui/controllers.py
index b984c2a05..538e66b40 100644
--- a/ipa-server/ipa-gui/ipagui/controllers.py
+++ b/ipa-server/ipa-gui/ipagui/controllers.py
@@ -197,7 +197,7 @@ class Root(controllers.RootController):
def userindex(self):
raise turbogears.redirect("/userlist")
- @expose()
+ # @expose()
def generate_password(self):
password = ""
generator = random.SystemRandom()
diff --git a/ipa-server/ipa-gui/ipagui/forms/user.py b/ipa-server/ipa-gui/ipagui/forms/user.py
index 859b3023d..334e61379 100644
--- a/ipa-server/ipa-gui/ipagui/forms/user.py
+++ b/ipa-server/ipa-gui/ipagui/forms/user.py
@@ -3,7 +3,9 @@ from turbogears import validators, widgets
class UserFields():
uid = widgets.TextField(name="uid", label="Login")
- userpassword = widgets.TextField(name="userpassword", label="Password")
+ userpassword = widgets.PasswordField(name="userpassword", label="Password")
+ userpassword_confirm = widgets.PasswordField(name="userpassword_confirm",
+ label="Confirm Password")
uidnumber = widgets.TextField(name="uidnumber", label="UID")
gidnumber = widgets.TextField(name="gidnumber", label="GID")
givenname = widgets.TextField(name="givenname", label="First name")
@@ -15,14 +17,6 @@ class UserFields():
label="Account Status",
options = [("", "active"), ("true", "inactive")])
- uid.validator = validators.PlainText(not_empty=True)
- userpassword.validator = validators.String(not_empty=True)
- givenname.validator = validators.String(not_empty=True)
- sn.validator = validators.String(not_empty=True)
- mail.validator = validators.Email(not_empty=True)
- # validators.PhoneNumber may be a bit too picky, requiring an area code
- telephonenumber.validator = validators.PlainText(not_empty=True)
-
uid_hidden = widgets.HiddenField(name="uid")
uidnumber_hidden = widgets.HiddenField(name="uidnumber")
gidnumber_hidden = widgets.HiddenField(name="gidnumber")
@@ -30,6 +24,20 @@ class UserFields():
user_orig = widgets.HiddenField(name="user_orig")
+class UserNewValidator(validators.Schema):
+ uid = validators.PlainText(not_empty=True)
+ userpassword = validators.String(not_empty=True)
+ userpassword_confirm = validators.String(not_empty=True)
+ givenname = validators.String(not_empty=True)
+ sn = validators.String(not_empty=True)
+ mail = validators.Email(not_empty=True)
+ # validators.PhoneNumber may be a bit too picky, requiring an area code
+ # telephonenumber = validators.PlainText(not_empty=False)
+
+ chained_validators = [
+ validators.FieldsMatch('userpassword', 'userpassword_confirm')
+ ]
+
class UserNewForm(widgets.Form):
params = ['user']
@@ -38,6 +46,8 @@ class UserNewForm(widgets.Form):
UserFields.uidnumber, UserFields.gidnumber,
UserFields.sn, UserFields.mail]
+ validator = UserNewValidator()
+
def __init__(self, *args, **kw):
super(UserNewForm,self).__init__(*args, **kw)
(self.template_c, self.template) = widgets.meta.load_kid_template("ipagui.templates.usernewform")
@@ -50,6 +60,18 @@ class UserNewForm(widgets.Form):
def has_foo(self):
return False
+class UserEditValidator(validators.Schema):
+ userpassword = validators.String(not_empty=False)
+ userpassword_confirm = validators.String(not_empty=False)
+ givenname = validators.String(not_empty=True)
+ sn = validators.String(not_empty=True)
+ mail = validators.Email(not_empty=True)
+ # validators.PhoneNumber may be a bit too picky, requiring an area code
+ # telephonenumber = validators.PlainText(not_empty=False)
+
+ chained_validators = [
+ validators.FieldsMatch('userpassword', 'userpassword_confirm')
+ ]
class UserEditForm(widgets.Form):
params = ['user']
@@ -60,6 +82,8 @@ class UserEditForm(widgets.Form):
UserFields.krbPasswordExpiration_hidden,
]
+ validator = UserEditValidator()
+
def __init__(self, *args, **kw):
super(UserEditForm,self).__init__(*args, **kw)
(self.template_c, self.template) = widgets.meta.load_kid_template("ipagui.templates.usereditform")
diff --git a/ipa-server/ipa-gui/ipagui/static/css/style.css b/ipa-server/ipa-gui/ipagui/static/css/style.css
index 5a38f3409..9654ebf15 100644
--- a/ipa-server/ipa-gui/ipagui/static/css/style.css
+++ b/ipa-server/ipa-gui/ipagui/static/css/style.css
@@ -31,6 +31,7 @@ body {
#header #headerinfo {
text-align:right;
+ padding-right:10px;
}
#header #headerinfo #login {
diff --git a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid
index 4d4269b87..6227c4440 100644
--- a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid
+++ b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid
@@ -56,8 +56,9 @@
<span py:replace="user.userpassword.display(value_for(user.userpassword))" />
<span py:if="tg.errors.get('userpassword')" class="fielderror"
py:content="tg.errors.get('userpassword')" />
- <span id="password_text">********</span>
+ <!--
+ <span id="password_text">********</span>
<input id="genpassword_button" type="button" value="Generate Password"
disabled="true"
onclick="new Ajax.Request('${tg.url('/generate_password')}',
@@ -89,6 +90,20 @@
}
}
</script>
+ -->
+ </td>
+ </tr>
+
+ <tr>
+ <th valign="top">
+ <label class="fieldlabel" for="${user.userpassword_confirm.field_id}"
+ py:content="user.userpassword_confirm.label" />:
+ </th>
+ <td valign="top">
+ <span py:replace="user.userpassword_confirm.display(
+ value_for(user.userpassword_confirm))" />
+ <span py:if="tg.errors.get('userpassword_confirm')" class="fielderror"
+ py:content="tg.errors.get('userpassword_confirm')" />
</td>
</tr>
diff --git a/ipa-server/ipa-gui/ipagui/templates/usernewform.kid b/ipa-server/ipa-gui/ipagui/templates/usernewform.kid
index 884483447..daf131432 100644
--- a/ipa-server/ipa-gui/ipagui/templates/usernewform.kid
+++ b/ipa-server/ipa-gui/ipagui/templates/usernewform.kid
@@ -92,6 +92,7 @@
<span py:if="tg.errors.get('userpassword')" class="fielderror"
py:content="tg.errors.get('userpassword')" />
+ <!--
<input type="button" value="Generate Password"
onclick="new Ajax.Request('${tg.url('/generate_password')}',
{
@@ -101,6 +102,20 @@
transport.responseText;
}
});" />
+ -->
+ </td>
+ </tr>
+
+ <tr>
+ <th>
+ <label class="fieldlabel" for="${user.userpassword_confirm.field_id}"
+ py:content="user.userpassword_confirm.label" />:
+ </th>
+ <td>
+ <span py:replace="user.userpassword_confirm.display(
+ value_for(user.userpassword_confirm))" />
+ <span py:if="tg.errors.get('userpassword_confirm')" class="fielderror"
+ py:content="tg.errors.get('userpassword_confirm')" />
</td>
</tr>