summaryrefslogtreecommitdiff
path: root/httemplate/elements/random_pass.html
blob: 1517a55d70e0dd6b278f15acf9a3ef6181943328 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<INPUT TYPE="button" VALUE="<% emt($label) %>" onclick="randomPass()">
<SCRIPT TYPE="text/javascript">
function randomPass() {
  var pw_set = <% $pw_set |js_string %>;
  var lower = <% $lower |js_string %>;
  var upper = <% $upper |js_string %>;
  var digit = <% $digit |js_string %>;
  var punct = <% $punct |js_string %>;
  var pass=[];
  pass.push(lower.charAt(Math.floor(Math.random() * lower.length)));
  pass.push(upper.charAt(Math.floor(Math.random() * upper.length)));
  pass.push(digit.charAt(Math.floor(Math.random() * digit.length)));
  pass.push(punct.charAt(Math.floor(Math.random() * punct.length)));
  var i=0;
  while(i < 4) {
    i++;
    pass.push(pw_set.charAt(Math.floor(Math.random() * pw_set.length)));
  }
  for(var j, x, i = pass.length; i; j = Math.floor(Math.random() * i), x = pass[--i], pass[i] = pass[j], pass[j] = x);
  pass = pass.join('');
  document.getElementById('<% $id %>').value = pass;
}
</SCRIPT>
<%init>
my $id = shift;
my $label = shift || 'Generate';
my $pw_set = join('', FS::Password_Mixin->pw_set);
my $lower = join('', $pw_set =~ /[[:lower:]]/g);
my $upper = join('', $pw_set =~ /[[:upper:]]/g);
my $digit = join('', $pw_set =~ /[[:digit:]]/g);
my $punct = join('', $pw_set =~ /[[:punct:]]/g);

</%init>