Skip to content

Commit 5fb621a

Browse files
committed
adding error message output
1 parent d1a972f commit 5fb621a

File tree

5 files changed

+71
-13
lines changed

5 files changed

+71
-13
lines changed

coder-base/apps/auth/app.js

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ exports.api_addpassword_handler = function( req, res ) {
335335
if ( !pass || pass === "" || !isValidPassword( pass ) ) {
336336
res.json({
337337
status: 'error',
338-
error: "Invalid password."
338+
error: getPasswordProblem( pass )
339339
});
340340
return;
341341
}
@@ -411,15 +411,15 @@ exports.api_changepassword_handler = function( req, res ) {
411411
|| !bcrypt.compareSync( oldpass, device_settings.password_hash ) ) {
412412
res.json({
413413
status: 'error',
414-
error: "Invalid password."
414+
error: "old password was incorrect"
415415
});
416416
return;
417417
}
418418

419419
if ( !pass || pass === "" || !isValidPassword( pass ) ) {
420420
res.json({
421421
status: 'error',
422-
error: "Invalid password."
422+
error: getPasswordProblem( pass )
423423
});
424424
return;
425425
}
@@ -565,12 +565,25 @@ var hostnameFromDeviceName = function( name ) {
565565
return hostname;
566566
};
567567

568+
var getPasswordProblem = function( pass ) {
569+
if ( !pass || pass === '' ) {
570+
return "the password is empty";
571+
}
572+
if ( pass.length < 6 ) {
573+
return "the password should contain at least 6 characters";
574+
}
575+
if ( !pass.match(/[a-z]/) ||
576+
!pass.match(/[A-Z0-9\-\_\.\,\;\:\'\"\[\]\{\}\!\@\#\$\%\^\&\*\(\)\\].*[A-Z0-9\-\_\.\,\;\:\'\"\[\]\{\}\!\@\#\$\%\^\&\*\(\)\\]/) ) {
577+
return "your password must contain a lower case letter and at least two upper case letters or numbers";
578+
}
579+
};
580+
568581
var isValidPassword = function( pass ) {
569582
if ( !pass || pass === '' ) {
570583
return false;
571584
}
572585
//at least 6 characters
573-
if ( pass.length <= 8 ) {
586+
if ( pass.length < 6 ) {
574587
return false;
575588
}
576589
//contains lower case

coder-base/apps/auth/meta.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"created": "2013-03-05",
3-
"modified": "2013-03-28",
3+
"modified": "2013-06-25",
44
"color": "#1abc9c",
55
"author": "Jason Striegel",
66
"name": "Auth",

coder-base/static/apps/auth/css/index.css

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,22 @@ h1 {
7979
border-color: rgba(255,0,0,0.5);
8080
}
8181

82+
.errormessage {
83+
border: 2px solid transparent;
84+
width: 376px;
85+
padding: 10px 10px;
86+
background-color: #e74c3c;
87+
color: #ffffff;
88+
min-height: 20px;
89+
line-height: 20px;
90+
font-size: 12px;
91+
font-family: Arial, sans-serif;
92+
border-radius: 3px;
93+
-webkit-font-smoothing: antialiased;
94+
margin-bottom: 24px;
95+
text-transform: uppercase;
96+
}
97+
8298
.submit {
8399
font-size: 21px;
84100
font-weight: bold;
@@ -93,6 +109,7 @@ h1 {
93109
}
94110
.submit:hover {
95111
background-color: rgba(0,0,0,1);
112+
cursor: pointer;
96113
}
97114

98115
.cancel {
@@ -106,6 +123,7 @@ h1 {
106123
}
107124
.cancel:hover {
108125
background-color: rgba(0,0,0,1);
126+
cursor: pointer;
109127
}
110128

111129

coder-base/static/apps/auth/js/index.js

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,11 @@ var testAddPasswordSubmitEnable = function() {
8787
var $form = $('#addpassword_form');
8888
var pass = $form.find('.pass').val();
8989
var pass_repeat = $form.find('.pass_repeat').val();
90+
$form.find('.pass, .pass_repeat').removeClass('error');
91+
$form.find('.errormessage').css('visibility','hidden');
92+
9093
if ( isValidPassword(pass) && pass === pass_repeat ) {
91-
$form.find('.submit').removeClass('disabled');
92-
$form.find('.pass, .pass_remove').removeClass('error');
94+
$form.find('.submit').removeClass('disabled');
9395
} else {
9496
$form.find('.submit').addClass('disabled');
9597
}
@@ -100,9 +102,10 @@ var testChangePasswordSubmitEnable = function() {
100102
var oldpass = $form.find('.oldpass').val();
101103
var pass = $form.find('.pass').val();
102104
var pass_repeat = $form.find('.pass_repeat').val();
105+
$form.find('.errormessage').css('visibility','hidden');
106+
$form.find('.oldpass, .pass, .pass_repeat').removeClass('error');
103107
if ( oldpass !== "" && isValidPassword(pass) && pass === pass_repeat ) {
104108
$form.find('.submit').removeClass('disabled');
105-
$form.find('.oldpass, .pass, .pass_remove').removeClass('error');
106109
} else {
107110
$form.find('.submit').addClass('disabled');
108111
}
@@ -249,16 +252,19 @@ var addPasswordClick = function() {
249252
$this = $(this);
250253
var $form = $('#addpassword_form');
251254

252-
$form.find('.pass, .pass_remove').removeClass('error');
255+
$form.find('.pass, .pass_repeat').removeClass('error');
256+
$form.find('.errormessage').css('visibility','hidden');
253257
var pass = $this.parent().find('.pass').val();
254258
var pass_repeat = $this.parent().find('.pass_repeat').val();
255259

256260
if ( !isValidPassword(pass) ) {
257261
$form.find('.pass').addClass('error');
262+
$form.find('.errormessage').text( getPasswordProblem(pass) ).css('visibility','visible');
258263
return;
259264
}
260265
if ( pass !== pass_repeat ) {
261266
$form.find('.pass_repeat').addClass('error');
267+
$form.find('.errormessage').text( "new password does not match" ).css('visibility','visible');
262268
return;
263269
}
264270

@@ -273,7 +279,7 @@ var addPasswordClick = function() {
273279
window.location.href="/app/auth";
274280
} else {
275281
$form.find('.pass').addClass('error');
276-
$form.find('.instructions').text( data.error );
282+
$form.find('.errormessage').text( data.error ).css('visibility','visible');
277283
}
278284
}
279285
);
@@ -284,21 +290,25 @@ var changePasswordClick = function() {
284290
$this = $(this);
285291
var $form = $('#changepassword_form');
286292

287-
$form.find('.oldpass, .pass, .pass_remove').removeClass('error');
293+
$form.find('.oldpass, .pass, .pass_repeat').removeClass('error');
294+
$form.find('.errormessage').css('visibility','hidden');
288295
var oldpass = $this.parent().find('.oldpass').val();
289296
var pass = $this.parent().find('.pass').val();
290297
var pass_repeat = $this.parent().find('.pass_repeat').val();
291298

292299
if ( oldpass === "" ) {
293300
$form.find('.oldpass').addClass('error');
301+
$form.find('.errormessage').text( "your current password is required" ).css('visibility','visible');
294302
return;
295303
}
296304
if ( !isValidPassword(pass) ) {
297305
$form.find('.pass').addClass('error');
306+
$form.find('.errormessage').text( getPasswordProblem(pass) ).css('visibility','visible');
298307
return;
299308
}
300309
if ( pass !== pass_repeat ) {
301310
$form.find('.pass_repeat').addClass('error');
311+
$form.find('.errormessage').text( "new password does not match" ).css('visibility','visible');
302312
return;
303313
}
304314

@@ -314,7 +324,7 @@ var changePasswordClick = function() {
314324
window.location.href="/app/auth";
315325
} else {
316326
$form.find('.oldpass').addClass('error');
317-
$form.find('.instructions').text( data.error );
327+
$form.find('.errormessage').text( data.error ).css('visibility','visible');
318328
}
319329
}
320330
);
@@ -335,12 +345,24 @@ var isValidDeviceName = function( name ) {
335345
return true;
336346
};
337347

348+
var getPasswordProblem = function( pass ) {
349+
if ( !pass || pass === '' ) {
350+
return "the password is empty";
351+
}
352+
if ( pass.length < 6 ) {
353+
return "the password should contain at least 6 characters";
354+
}
355+
if ( !pass.match(/[a-z]/) ||
356+
!pass.match(/[A-Z0-9\-\_\.\,\;\:\'\"\[\]\{\}\!\@\#\$\%\^\&\*\(\)\\].*[A-Z0-9\-\_\.\,\;\:\'\"\[\]\{\}\!\@\#\$\%\^\&\*\(\)\\]/) ) {
357+
return "your password must contain a lower case letter and at least two upper case letters or numbers";
358+
}
359+
};
338360
var isValidPassword = function( pass ) {
339361
if ( !pass || pass === '' ) {
340362
return false;
341363
}
342364
//at least 6 characters
343-
if ( pass.length <= 8 ) {
365+
if ( pass.length < 6 ) {
344366
return false;
345367
}
346368
//contains lower case

coder-base/views/apps/auth/index.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ <h1>Welcome to Coder for Pi</h1>
3737
<input class="pass" type="password" />
3838
</div>
3939
<div class="submit disabled">Let's Code</div>
40+
<div class="errormessage" style="visibility:hidden"></div>
4041
</div>
4142

4243
<div id="logout_form" class="form" style="display:none">
@@ -47,6 +48,7 @@ <h1>You Are Signed Out</h1>
4748
<input class="pass" type="password" />
4849
</div>
4950
<div class="submit disabled">Let's Code</div>
51+
<div class="errormessage" style="visibility:hidden"></div>
5052
</div>
5153

5254
<div id="configure_form" class="form" style="display:none">
@@ -57,6 +59,7 @@ <h1>Welcome to Coder for Pi</h1>
5759
<input class="device_name" type="text"/>
5860
</div>
5961
<div class="submit disabled">OK. Save My Coder's Name</div>
62+
<div class="errormessage" style="visibility:hidden"></div>
6063
</div>
6164

6265

@@ -72,6 +75,7 @@ <h1>Protect Your Coder</h1>
7275
<input class="pass_repeat" type="password"/>
7376
</div>
7477
<div class="submit disabled">Save My Password</div>
78+
<div class="errormessage" style="visibility:hidden"></div>
7579
</div>
7680

7781
<div id="changepassword_form" class="form" style="display:none">
@@ -91,6 +95,7 @@ <h1>Change Your Coder Password</h1>
9195
</div>
9296
<div class="submit disabled">Save My Password</div>
9397
<div class="cancel">Cancel</div>
98+
<div class="errormessage" style="visibility:hidden"></div>
9499
</div>
95100

96101
</div>

0 commit comments

Comments
 (0)