packages/ssoinabox-webui/root/usr/local/share/ssoinabox/htdocs/res/user-create-form.js
changeset 0 3906ca745819
child 4 2212b2ded8bf
equal deleted inserted replaced
-1:000000000000 0:3906ca745819
       
     1 $(function()
       
     2 	{
       
     3 		$('table.sort-me').tablesorter({
       
     4 				headers: {
       
     5 					4: { sorter: false }
       
     6 				}
       
     7 			});
       
     8 		
       
     9 		var updateCNAndUsername = function()
       
    10 			{
       
    11 				$(document.forms.userCreateForm.cn).val(
       
    12 						$(document.forms.userCreateForm.givenName).val() + ' ' +
       
    13 						$(document.forms.userCreateForm.surname).val()
       
    14 					);
       
    15 				
       
    16 				$(document.forms.userCreateForm.uid).val(
       
    17 						$(document.forms.userCreateForm.givenName).val().charAt(0).toLowerCase() +
       
    18 						$(document.forms.userCreateForm.surname).val().toLowerCase().replace(/[^a-z0-9]/g, '')
       
    19 					);
       
    20 			};
       
    21 		
       
    22 		$(document.forms.userCreateForm.givenName).blur(updateCNAndUsername);
       
    23 		$(document.forms.userCreateForm.surname).blur(updateCNAndUsername);
       
    24 		$(document.forms.userCreateForm.uid).blur(function()
       
    25 			{
       
    26 				var me = this;
       
    27 				$.get('/ajax.php?op=checkAvailability&uid=' + $(this).val(), function(response)
       
    28 					{
       
    29 						if ( typeof(response) == 'string' )
       
    30 						{
       
    31 							$(me).parents('.control-group').removeClass('success').addClass('error');
       
    32 							$('p.help-block', $(me).parent()).text(response);
       
    33 						}
       
    34 						else
       
    35 						{
       
    36 							$(me).parents('.control-group').removeClass('error').addClass('success');
       
    37 							$('p.help-block', $(me).parent()).text("Username is available");
       
    38 						}
       
    39 					}, 'json');
       
    40 			})
       
    41 			.focus(function()
       
    42 				{
       
    43 					$(this).parents('.control-group').removeClass('error').removeClass('success');
       
    44 					$('p.help-block', $(this).parent()).text("All lowercase. Will be used for logging in to the admin/resale portal, e-mail, etc.");
       
    45 				});
       
    46 			
       
    47 		var passwordValidate = function()
       
    48 			{
       
    49 				var status = $('p.compliance-status', $(this).parents('div.controls'));
       
    50 				var result = checkPasswordCompliance($(this).val());
       
    51 				if ( typeof(result) == 'boolean' && result )
       
    52 				{
       
    53 					$(this).parents('div.control-group').removeClass('error').addClass('success');
       
    54 					$(status).text('Password meets security requirements.');
       
    55 				}
       
    56 				else if ( typeof(result) == 'string' )
       
    57 				{
       
    58 					$(this).parents('div.control-group').removeClass('success').addClass('error');
       
    59 					$(status).text('Password does not meet security requirements: ' + result + '.');
       
    60 				}
       
    61 			};
       
    62 			
       
    63 		var passwordConfirmValidate = function()
       
    64 			{
       
    65 				var status = $('p.compliance-status', $(this).parents('div.controls'));
       
    66 				if ( $(this).val() == $('input[name="password"]', $(this).parents('div.modal-body')).val() )
       
    67 				{
       
    68 					$(this).parents('div.control-group').removeClass('error').addClass('success');
       
    69 					$(status).text('Passwords match.');
       
    70 				}
       
    71 				else
       
    72 				{
       
    73 					$(this).parents('div.control-group').removeClass('success').addClass('error');
       
    74 					$(status).text('Passwords do not match.');
       
    75 				}
       
    76 			}
       
    77 		
       
    78 		$(document.forms.userCreateForm.password).bind('keyup', passwordValidate);
       
    79 		$(document.forms.userCreateForm.password_confirm).bind('keyup', passwordConfirmValidate);
       
    80 		
       
    81 		$(document.forms.userResetForm.password).bind('keyup', passwordValidate);
       
    82 		$(document.forms.userResetForm.password_confirm).bind('keyup', passwordConfirmValidate);
       
    83 		
       
    84 		$('form[name="userCreateForm"], form[name="userResetForm"]').bind('submit', function()
       
    85 			{
       
    86 				if ( $('div.control-group.error', this).length )
       
    87 				{
       
    88 					$('div.control-group.error:first input:first', this).focus();
       
    89 					return false;
       
    90 				}
       
    91 			});
       
    92 		
       
    93 		$('.show-tooltip').tooltip();
       
    94 	});
       
    95 
       
    96 function checkPasswordCompliance(str)
       
    97 {
       
    98 	if ( str.length < 8 )
       
    99 		return 'must be at least 8 characters in length';
       
   100 	
       
   101 	if ( countUniqueChars(str) < 6 )
       
   102 		return 'must have at least 6 unique characters';
       
   103 	
       
   104 	if ( str.length <= 16 )
       
   105 	{
       
   106 		if ( !(/[a-z]/).test(str) )
       
   107 			return 'must contain at least one lowercase letter';
       
   108 		
       
   109 		if ( !(/[A-Z]/).test(str) )
       
   110 			return 'must contain at least one uppercase letter';
       
   111 		
       
   112 		if ( !(/[0-9]/).test(str) )
       
   113 			return 'must contain at least one digit (0-9)';
       
   114 		
       
   115 		if ( !(/[^A-Za-z0-9]/).test(str) )
       
   116 			return 'must contain at least one symbol';
       
   117 	}
       
   118 	
       
   119 	return true;
       
   120 }
       
   121 
       
   122 function countUniqueChars(str)
       
   123 {
       
   124 	var count = 0;
       
   125 	var uniq = '';
       
   126 	for ( var i = 0; i < str.length; i++ )
       
   127 	{
       
   128 		if ( uniq.indexOf(str.charAt(i)) == -1 )
       
   129 			uniq += str.charAt(i);
       
   130 	}
       
   131 	
       
   132 	return uniq.length;
       
   133 }
       
   134 
       
   135 function resetPassword(username)
       
   136 {
       
   137 	$('#userResetForm input[name="uid"]').val(username);
       
   138 	$('#userResetForm').bind('shown', function()
       
   139 		{
       
   140 			$('input[name="password"]', this).focus();
       
   141 		});
       
   142 	$('#userResetForm').modal('show');
       
   143 }