Make registration page better
This commit is contained in:
parent
e03100ef4b
commit
01ad8acd9a
|
@ -2,6 +2,7 @@ package unix_dog::Controller::Register;
|
|||
use Mojo::Base 'Mojolicious::Controller', -signatures;
|
||||
use Net::LDAPS;
|
||||
use Net::LDAP::Extension::SetPassword;
|
||||
use Net::LDAP::Constant qw(LDAP_NO_SUCH_OBJECT);
|
||||
use Email::Simple;
|
||||
use Email::Sender::Simple;
|
||||
use Email::Sender::Transport::Sendmail;
|
||||
|
@ -16,24 +17,29 @@ sub register($self) {
|
|||
$v->required('username', 'trim')->size(1,32)->like(qr/^([a-z_][a-z0-9_-]*[\$]?)$/);
|
||||
$v->required('password')->size(8, 256);
|
||||
$v->required('email')->size(1, 512);
|
||||
$v->required('pub-key')->size(1,4096);
|
||||
$v->required('pubkey')->size(1,4096);
|
||||
$v->required('bio')->size(1, 2048);
|
||||
|
||||
if ($v->has_error) {
|
||||
$self->stash(err => 'Your input was invalid. Please try again.');
|
||||
return $self->render('register/registerPage');
|
||||
}
|
||||
|
||||
my $username = $self->param('username');
|
||||
my $password = $self->param('password');
|
||||
my $email = $self->param('email');
|
||||
my $pubkeys = $self->param('pub-key');
|
||||
my $pubkeys = $self->param('pubkey');
|
||||
my $bio = $self->param('bio');
|
||||
my $fromIP = $self->tx->remote_address;
|
||||
|
||||
|
||||
$self->stash(email => $email);
|
||||
$self->stash(username => $username);
|
||||
$self->stash(email => $email);
|
||||
$self->stash(pubkeys => $pubkeys);
|
||||
$self->stash(bio => $bio);
|
||||
|
||||
if ($v->has_error) {
|
||||
my $err = "Your input was invalid. Please try again.";
|
||||
my @failed = $v->failed;
|
||||
$self->stash(err => $err);
|
||||
$self->stash(failed => @failed);
|
||||
$self->stash(v => $v);
|
||||
return $self->render('register/registerPage');
|
||||
}
|
||||
|
||||
my $config = $self->config;
|
||||
return Mojo::IOLoop->subprocess->run_p(sub {
|
||||
|
@ -59,6 +65,20 @@ sub register($self) {
|
|||
my $nextUID = int($uidEntry->get_value('uidnumber'));
|
||||
my $nextGID = int($uidEntry->get_value('gidnumber'));
|
||||
|
||||
$mesg = $ldap->search(
|
||||
base => 'ou=Dogs,dc=unix,dc=dog',
|
||||
filter => '(uid=' .$username. ')',
|
||||
);
|
||||
$mesg->code and die $mesg->error;
|
||||
$mesg->count == 0 or die 'That username is already in use.';
|
||||
|
||||
$mesg = $ldap->search(
|
||||
base => 'ou=Dogs,ou=Unverified,dc=unix,dc=dog',
|
||||
filter => '(uid='. $username .')',
|
||||
);
|
||||
$mesg->code and die $mesg->error;
|
||||
$mesg->count == 0 or die 'That username is already in use.';
|
||||
|
||||
$mesg = $ldap->modify(
|
||||
$uidEntry,
|
||||
replace => {
|
||||
|
@ -74,7 +94,7 @@ sub register($self) {
|
|||
$userDN,
|
||||
attrs => [
|
||||
cn => $username,
|
||||
mail => $email,
|
||||
mail => $username . '@unix.dog',
|
||||
sshPublicKey => (split "\n", $pubkeys),
|
||||
objectClass => [
|
||||
'top',
|
||||
|
|
|
@ -151,3 +151,7 @@ textarea {
|
|||
#header-content a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
label.field-with-error {
|
||||
color: red;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,14 @@
|
|||
<p class="error">
|
||||
<%= $err %>
|
||||
</p>
|
||||
<% if (my $failed = stash 'failed' and my $v = stash 'v') { %>
|
||||
<ul class="error">
|
||||
<% foreach my $fn (@{$failed}) { %>
|
||||
<% my ($check, $result, @args) = @{$v->error($fn)}; %>
|
||||
<li><%= $fn %>: <%= $check %> <%= join "-", @args %></li>
|
||||
<% } %>
|
||||
</ul>
|
||||
<% } %>
|
||||
<% } %>
|
||||
<p>
|
||||
Before registering for UNIX.dog, please be sure you agree
|
||||
|
@ -24,34 +32,28 @@
|
|||
information over LDAP under cn=username,ou=Dogs,dc=unix,dc=dog.
|
||||
</p>
|
||||
|
||||
<form action="/register" method="POST">
|
||||
%= form_for register => (method => 'POST') => begin
|
||||
<p>
|
||||
<label for="username">Username:</label>
|
||||
<input type="text" id="username" name="username">
|
||||
%= label_for username => 'Username:'
|
||||
%= text_field 'username', id=>'username'
|
||||
</p>
|
||||
<p>
|
||||
<label for="password">Password:</label>
|
||||
<input type="password" id="password" name="password">
|
||||
%= label_for password => 'Password:'
|
||||
%= password_field 'password', id=>'password'
|
||||
</p>
|
||||
<p>
|
||||
<label for="email">EMail:</label>
|
||||
<input type="email" id="email" name="email">
|
||||
%= label_for email => 'EMail:'
|
||||
%= email_field 'email', id=>'email'
|
||||
</p>
|
||||
<p>
|
||||
<label for="pub-key">
|
||||
Put your SSH keys here.
|
||||
Separate them by a newline if you have multiple.
|
||||
</label>
|
||||
%= label_for pubkey => 'Put your SSH keys here. Separate them by a newline if you have multiple.'
|
||||
<br>
|
||||
<textarea name="pub-key" id="pub-key"></textarea>
|
||||
%= text_area 'pubkey', id=>'pubkey'
|
||||
</p>
|
||||
<p>
|
||||
<label for="bio">
|
||||
Tell us a bit about yourself here.
|
||||
Feel free to put some links, too :)
|
||||
</label>
|
||||
%= label_for bio => 'Tell us a bit about yourself here. Feel free to put some links, too :)'
|
||||
<br>
|
||||
<textarea name="bio" id="bio"></textarea>
|
||||
%= text_area 'bio', id=>'bio'
|
||||
</p>
|
||||
<input type="submit" value="Submit!" id="submit">
|
||||
</form>
|
||||
%= submit_button
|
||||
% end
|
||||
|
|
Loading…
Reference in New Issue