View | Details | Raw Unified | Return to bug 18298
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/member-password.tt (-6 / +19 lines)
Lines 6-19 Link Here
6
<script type="text/JavaScript">
6
<script type="text/JavaScript">
7
//<![CDATA[
7
//<![CDATA[
8
8
9
    function generate_password() {
10
        // Always generate a strong password
11
        var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
12
        var length = [% minPasswordLength %];
13
        var password='';
14
        for ( var i = 0 ; i < length ; i++){
15
            password += chars.charAt(Math.floor(Math.random()*chars.length));
16
        }
17
        return password;
18
    }
9
    $(document).ready(function() {
19
    $(document).ready(function() {
10
        $("body").on('click', "#fillrandom",function(e) {
20
        $("body").on('click', "#fillrandom",function(e) {
11
            e.preventDefault();
21
            e.preventDefault();
12
            $.get("/cgi-bin/koha/members/member-password.pl?member=[% userid %]", function(response) {
22
            var password = '';
13
                var defaultnewpass = $(response).find("#defaultnewpassfield").val();
23
            var pattern_regex = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{[% minPasswordLength %],}/;
14
                $("#newpassword").after("<input type=\"text\" name=\"newpassword\"  id=\"newpassword\" value=\"" + defaultnewpass + "\">").remove();
24
            while ( ! pattern_regex.test( password ) ) {
15
                $("#newpassword2").after("<input type=\"text\" name=\"newpassword2\" id=\"newpassword2\" value=\"" + defaultnewpass + "\">").remove();
25
                password = generate_password();
16
            });
26
            }
27
            $("#newpassword").val(password);
28
            $("#newpassword").attr('type', 'text');
29
            $("#newpassword2").val(password);
30
            $("#newpassword2").attr('type', 'text');
17
        });
31
        });
18
        $("div.hint").eq(0).after(" <div class=\"hint\"><a href=\"#\" id=\"fillrandom\">"+_("Click to fill with a randomly generated suggestion. ")+"<strong>"+_("Passwords will be displayed as text")+"</strong>.</a></div>");
32
        $("div.hint").eq(0).after(" <div class=\"hint\"><a href=\"#\" id=\"fillrandom\">"+_("Click to fill with a randomly generated suggestion. ")+"<strong>"+_("Passwords will be displayed as text")+"</strong>.</a></div>");
19
33
Lines 120-126 Link Here
120
134
121
</div>
135
</div>
122
</div>
136
</div>
123
<input type="hidden" name="defaultnewpassfield" id="defaultnewpassfield" value="[% defaultnewpassword %]" />
124
<div class="loading hide"><strong>Processing...</strong><img src="[% interface %]/[% theme %]/img/loading.gif" alt="" /></div>
137
<div class="loading hide"><strong>Processing...</strong><img src="[% interface %]/[% theme %]/img/loading.gif" alt="" /></div>
125
<div class="yui-b">
138
<div class="yui-b">
126
[% INCLUDE 'circ-menu.inc' %]
139
[% INCLUDE 'circ-menu.inc' %]
(-)a/members/member-password.pl (-13 lines)
Lines 93-110 if ( $newpassword && !scalar(@errors) ) { Link Here
93
        push( @errors, 'BADUSERID' );
93
        push( @errors, 'BADUSERID' );
94
    }
94
    }
95
}
95
}
96
else {
97
    my $userid = $bor->{'userid'};
98
99
    my $chars              = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
100
    my $length             = int( rand(2) ) + C4::Context->preference("minPasswordLength");
101
    my $defaultnewpassword = '';
102
    for ( my $i = 0 ; $i < $length ; $i++ ) {
103
        $defaultnewpassword .= substr( $chars, int( rand( length($chars) ) ), 1 );
104
    }
105
106
    $template->param( defaultnewpassword => $defaultnewpassword );
107
}
108
96
109
if ( $category_type eq 'C') {
97
if ( $category_type eq 'C') {
110
    my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']});
98
    my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']});
111
- 

Return to bug 18298