packages/ssoinabox-webui/root/usr/local/share/ssoinabox/htdocs/res/user-create-form.js
changeset 4 2212b2ded8bf
parent 0 3906ca745819
equal deleted inserted replaced
3:a044870a9d3d 4:2212b2ded8bf
    88 					$('div.control-group.error:first input:first', this).focus();
    88 					$('div.control-group.error:first input:first', this).focus();
    89 					return false;
    89 					return false;
    90 				}
    90 				}
    91 			});
    91 			});
    92 		
    92 		
       
    93 		setupSSHKeyUI();
       
    94 		
    93 		$('.show-tooltip').tooltip();
    95 		$('.show-tooltip').tooltip();
    94 	});
    96 	});
    95 
    97 
    96 function checkPasswordCompliance(str)
    98 function checkPasswordCompliance(str)
    97 {
    99 {
   139 		{
   141 		{
   140 			$('input[name="password"]', this).focus();
   142 			$('input[name="password"]', this).focus();
   141 		});
   143 		});
   142 	$('#userResetForm').modal('show');
   144 	$('#userResetForm').modal('show');
   143 }
   145 }
       
   146 
       
   147 function binToByteArray(str)
       
   148 {
       
   149 	var arr = [], str = escape(str);
       
   150 	
       
   151 	for ( var i = 0; i < str.length; i++ )
       
   152 	{
       
   153 		var chr = str.charAt(i);
       
   154 		switch(chr)
       
   155 		{
       
   156 		case '%':
       
   157 			if ( str.charAt(i+1) == 'u' && str.substr(i+2, 4).match(/[A-F0-9]{4}/) )
       
   158 			{
       
   159 				arr.push(parseInt(str.substr(i+2, 2), 16));
       
   160 				arr.push(parseInt(str.substr(i+4, 2), 16));
       
   161 				i += 4;
       
   162 				break;
       
   163 			}
       
   164 			else if ( str.substr(i+1, 2).match(/[A-F0-9]{2}/) )
       
   165 			{
       
   166 				arr.push(parseInt(str.substr(i+1, 2), 16));
       
   167 				i += 2;
       
   168 				break;
       
   169 			}
       
   170 		default:
       
   171 			arr.push(str.charCodeAt(i));
       
   172 		}
       
   173 	}
       
   174 	
       
   175 	return arr;
       
   176 }
       
   177 
       
   178 function setupSSHKeyUI()
       
   179 {
       
   180 	if ( typeof(document.forms.addSSHKey) !== 'object' )
       
   181 		return;
       
   182 	
       
   183 	$('div.btn.ssh-key a.close').click(function()
       
   184 		{
       
   185 			$(this).parents('div.btn.ssh-key').remove();
       
   186 		});
       
   187 	
       
   188 	$(document.forms.addSSHKey).submit(function()
       
   189 		{
       
   190 			$('#modal-addssh div.control-group').removeClass('error');
       
   191 			
       
   192 			var keyValue = $('#newSSHKey').val();
       
   193 			if ( (keyValue.split(/ /)).length < 2 )
       
   194 			{
       
   195 				$('#modal-addssh div.control-group').addClass('error');
       
   196 				return false;
       
   197 			}
       
   198 			
       
   199 			var keyValue = keyValue.split(/ /);
       
   200 			var keyType = keyValue[0];
       
   201 			var keyEncoded = keyValue[1];
       
   202 			
       
   203 			if ( typeof(ssh_key_lengths[keyType]) != 'object' )
       
   204 			{
       
   205 				$('#modal-addssh div.control-group').addClass('error');
       
   206 				return false;
       
   207 			}
       
   208 			
       
   209 			var keyLength = keyEncoded.length * 0.75 - keyEncoded.replace(/[^=]/g, '').length;
       
   210 			var keyBits = typeof(ssh_key_lengths[keyType][keyLength]) == 'number' ? ssh_key_lengths[keyType][keyLength] : 0;
       
   211 			var keyName = ssh_key_lengths[keyType].name;
       
   212 			var keyFingerprint = (rstr2hex(rstr_md5(Base64.decode(keyEncoded), 8))).split(/(..)/).join(':').replace(/(^:|:$)/g, '').replace(/::/g, ':');
       
   213 			
       
   214 			$('<div />')
       
   215 				.addClass('btn').addClass('btn-warning').addClass('ssh-key')
       
   216 				.append($('<div />')
       
   217 					.addClass('pull-right')
       
   218 					.append($('<a />')
       
   219 						.addClass('close')
       
   220 						.html('&times;')
       
   221 						.click(function()
       
   222 							{
       
   223 								$(this).parents('div.btn.ssh-key').remove();
       
   224 							})
       
   225 						)
       
   226 					)
       
   227 				.append($('<span />')
       
   228 					.addClass('label')
       
   229 					.append($('<span />')
       
   230 						.addClass('type')
       
   231 						.text(keyName)
       
   232 						)
       
   233 					.append(' ')
       
   234 					.append($('<span />')
       
   235 						.addClass('bits')
       
   236 						.text(keyBits)
       
   237 						)
       
   238 					.append('-bit')
       
   239 					)
       
   240 				.append(' ')
       
   241 				.append($('<span />')
       
   242 					.addClass('fingerprint')
       
   243 					.text(keyFingerprint)
       
   244 					)
       
   245 				.append($('<input />')
       
   246 					.attr('type', 'hidden')
       
   247 					.attr('name', 'sshPublicKey[]')
       
   248 					.val(keyType + ' ' + keyEncoded)
       
   249 					)
       
   250 				.prependTo('.put-ssh-keys-here');
       
   251 				
       
   252 			$('#newSSHKey').val('');
       
   253 			$('#modal-addssh').modal('hide');
       
   254 			
       
   255 			return false;
       
   256 		});
       
   257 }