Re-enable adding new users via the web interface

[?]
Nov 5, 2013, 11:41 AM
MQMF2LBWWPW2SOZKC3O7P4TBJJ3V6RBVQ52OYA4KCGXS7G6SHWQAC

Dependencies

  • [2] AWMM5OGV Use delete instead of delete_all
  • [3] D44B24QC Store the account type ("hydra" or "persona") explicitly in the database
  • [4] LZVO64YG Merge in the first bits of the API work
  • [5] 2G63HKCH Fix some wellformedness issues
  • [6] SZYDW2DG hydra: added some user admin
  • [7] XJRJ4J7M Add user registration
  • [8] 7KF7YZDR Disable account creation for now
  • [9] LSZLZHJY Allow users to edit their own settings
  • [10] CGVKJQPI Show a user's roles in the preferences page
  • [11] XUKHBDR5 Prevent Persona users from setting a password
  • [12] LCLCU6FN Don't show a password reset button for Persona accounts
  • [13] JARRBLZD Bootstrapify the Hydra forms (except the project and jobset edit pages)
  • [14] GTXYNFUK Merge branch 'master' into persona

Change contents

  • replacement in src/lib/Hydra/Controller/User.pm at line 127
    [4.1][4.1:31]()
    die "Not implemented!\n";
    [4.1]
    [4.1560]
    accessDenied($c, "User registration is currently not implemented.") unless isAdmin($c);
  • edit in src/lib/Hydra/Controller/User.pm at line 134
    [4.1728][4.1728:1834]()
    my $fullName = trim $c->req->params->{fullname};
    my $password = trim $c->req->params->{password};
  • edit in src/lib/Hydra/Controller/User.pm at line 135
    [4.1873][4.1873:2000]()
    $c->stash->{fullname} = $fullName;
    sub fail {
    my ($c, $msg) = @_;
    $c->stash->{errorMsg} = $msg;
    }
  • replacement in src/lib/Hydra/Controller/User.pm at line 136
    [4.2001][4.2001:2150]()
    return fail($c, "You did not enter the correct digits from the security image.")
    unless $c->validate_captcha($c->req->param('captcha'));
    [4.2001]
    [4.2150]
    error($c, "You did not enter the correct digits from the security image.")
    unless isAdmin($c) || $c->validate_captcha($c->req->param('captcha'));
  • replacement in src/lib/Hydra/Controller/User.pm at line 139
    [4.2151][4.2151:2301]()
    return fail($c, "Your user name is invalid. It must start with a lower-case letter followed by lower-case letters, digits, dots or underscores.")
    [4.2151]
    [4.2301]
    error($c, "Your user name is invalid. It must start with a lower-case letter followed by lower-case letters, digits, dots or underscores.")
  • replacement in src/lib/Hydra/Controller/User.pm at line 142
    [4.2343][4.2343:2399]()
    return fail($c, "Your user name is already taken.")
    [4.2343]
    [4.2399]
    error($c, "Your user name is already taken.")
  • edit in src/lib/Hydra/Controller/User.pm at line 144
    [4.2452][4.2452:2608](),[4.2608][4.809:852]()
    return fail($c, "Your must specify your full name.") if $fullName eq "";
    return fail($c, "You must specify a password of at least 6 characters.")
    unless isValidPassword($password);
  • edit in src/lib/Hydra/Controller/User.pm at line 145
    [4.2643][4.2643:2769]()
    return fail($c, "The passwords you specified did not match.")
    if $password ne trim $c->req->params->{password2};
  • edit in src/lib/Hydra/Controller/User.pm at line 148
    [4.2898][4.2898:2934]()
    , fullname => $fullName
  • replacement in src/lib/Hydra/Controller/User.pm at line 152
    [4.3030][4.884:923]()
    setPassword($user, $password);
    [4.3030]
    [4.3030]
    updatePreferences($c, $user);
  • replacement in src/lib/Hydra/Controller/User.pm at line 156
    [4.955][4.955:1028]()
    $c->authenticate({username => $userName, password => $password})
    [4.955]
    [4.1028]
    $c->set_authenticated({username => $userName})
  • edit in src/lib/Hydra/Controller/User.pm at line 164
    [4.1127]
    [4.1127]
    sub updatePreferences {
    my ($c, $user) = @_;
  • edit in src/lib/Hydra/Controller/User.pm at line 168
    [4.1128]
    [4.24935]
    my $password = trim($c->req->params->{password} // "");
    if ($user->type eq "hydra" && ($user->password eq "!" || $password ne "")) {
    error($c, "You must specify a password of at least 6 characters.")
    unless isValidPassword($password);
    error($c, "The passwords you specified did not match.")
    if $password ne trim $c->req->params->{password2};
    setPassword($user, $password);
    }
    my $fullName = trim($c->req->params->{fullname} // "");
    error($c, "Your must specify your full name.") if $fullName eq "";
    my $emailAddress = trim($c->req->params->{emailaddress} // "");
    # FIXME: validate email address?
    $user->update(
    { fullname => $fullName
    , emailonerror => $c->stash->{params}->{"emailonerror"} ? 1 : 0
    });
    if (isAdmin($c)) {
    $user->update({ emailaddress => $emailAddress })
    if $user->type eq "hydra";
    $user->userroles->delete;
    $user->userroles->create({ role => $_ })
    foreach paramToList($c, "roles");
    }
    }
  • edit in src/lib/Hydra/Controller/User.pm at line 286
    [4.3041][4.25914:25971](),[4.25971][4.3094:3095](),[4.3094][4.3094:3095]()
    my $fullName = trim $c->stash->{params}->{fullname};
  • replacement in src/lib/Hydra/Controller/User.pm at line 287
    [4.3137][4.3137:3273](),[4.3273][4.25972:26048](),[4.26048][4.3349:3366](),[4.3349][4.3349:3366](),[4.3366][4.26049:26111](),[4.26111][3.151:208](),[3.208][4.3455:3653](),[4.265][4.3455:3653](),[4.3455][4.3455:3653](),[4.3653][4.26112:26183](),[4.26183][4.3720:3801](),[4.3720][4.3720:3801](),[4.3801][2.492:530](),[2.530][4.3843:3956](),[4.3843][4.3843:3956]()
    error($c, "Your must specify your full name.") if $fullName eq "";
    $user->update(
    { fullname => $fullName
    , emailonerror => $c->stash->{params}->{"emailonerror"} ? 1 : 0
    });
    my $password = $c->stash->{params}->{password} // "";
    if ($user->type eq "hydra" && $password ne "") {
    error($c, "You must specify a password of at least 6 characters.")
    unless isValidPassword($password);
    error($c, "The passwords you specified did not match.")
    if $password ne trim $c->stash->{params}->{password2};
    setPassword($user, $password);
    }
    if (isAdmin($c)) {
    $user->userroles->delete;
    $user->userroles->create({ role => $_})
    foreach paramToList($c, "roles");
    }
    [4.3137]
    [4.3956]
    updatePreferences($c, $user);
  • replacement in src/root/user.tt at line 37
    [4.5437][3.774:819]()
    [% IF !create && user.type == 'hydra' %]
    [4.5437]
    [4.5437]
    [% IF create || user.type == 'hydra' %]
  • edit in src/root/user.tt at line 53
    [4.5860][4.5860:5869]()
    <!--
  • replacement in src/root/user.tt at line 56
    [4.5979][4.4816:4929]()
    <input type="text" class="span3" name="emailaddress" [% HTML.attributes(value => user.emailaddress) %]/>
    [4.5979]
    [4.6099]
    <input type="text" class="span3" name="emailaddress" [% IF !create && user.type == 'persona' %]disabled="disabled"[% END %] [%+ HTML.attributes(value => user.emailaddress) %]/>
  • edit in src/root/user.tt at line 59
    [4.18733][4.6113:6121]()
    -->
  • replacement in src/root/user.tt at line 60
    [4.18937][4.18937:18958](),[4.18958][4.6122:6222](),[4.6222][4.4930:5073](),[4.5073][4.6356:6390](),[4.5592][4.6356:6390](),[4.6356][4.6356:6390]()
    [% IF !create %]
    <div class="control-group">
    <div class="controls">
    <label class="checkbox">
    <input type="checkbox" name="emailonerror" [% IF emailonerror; 'checked="checked"'; END %]/>Receive evaluation error notifications
    </label>
    </div>
    [4.6138]
    [4.6390]
    <div class="control-group">
    <div class="controls">
    <label class="checkbox">
    <input type="checkbox" name="emailonerror" [% IF emailonerror; 'checked="checked"'; END %]/>Receive evaluation error notifications
    </label>
  • replacement in src/root/user.tt at line 66
    [4.6403][4.6403:6417]()
    [% END %]
    [4.6403]
    [4.6417]
    </div>
  • replacement in src/root/user.tt at line 68
    [4.6418][4.0:21]()
    [% IF !create %]
    [4.6418]
    [4.6470]
    [% IF !create || c.check_user_roles('admin') %]
  • replacement in src/root/user.tt at line 80
    [4.6813][4.6813:6833]()
    [% IF create %]
    [4.6813]
    [4.6833]
    [% IF create && !c.check_user_roles('admin') %]