+ $c->res->redirect($c->uri_for_action('index'));
+}
+
+=head2 register
+
+Register a new account.
+
+=cut
+
+sub register :Local :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash(form => $self->register_form);
+
+ my $new_account = $c->model('DB::Account')->new_result({});
+ $self->register_form->process(
+ item => $new_account,
+ params => $c->req->params
+ );
+
+ if (!$self->register_form->is_valid) {
+ if ($c->req->method eq 'POST') {
+ $c->stash->{error} = "The form has a validation error. Try again...";
+ }
+ return;
+ }
+
+ $c->flash->{message} = "Registration complete. ";
+ $c->forward('login');
+}
+
+=head2 register_validate
+
+Check whether or not a username is available.
+
+=cut
+
+sub register_validate :Local :Args(0) {
+ my ($self, $c) = @_;
+
+ my $id = $c->req->param('fieldId');
+ my $username = $c->req->param('fieldValue');
+
+ if ($username) {
+ my $account = $c->model('DB::Account')->find({username => $username});
+ if (!$account) {
+ $c->stash->{json} = ["$id", 1, "This username is available. Nice!"];
+ }
+ else {
+ $c->stash->{json} = ["$id", 0, "This username is taken."];
+ }
+ }
+ else {
+ $c->stash->{json} = ["$id", 0, "Invalid arguments to check script."];
+ }
+ $c->forward('View::JSON');
+}
+
+=head2 access_denied
+
+Standard 403 error page
+
+=cut
+
+sub access_denied :Private {
+ my ($self, $c) = @_;
+ $c->res->body('Access denied.');
+ $c->res->status(403);
+}
+
+=head2 missing
+
+Standard 404 error page
+
+=cut
+
+sub missing :Private {
+ my ($self, $c) = @_;
+ $c->res->body('Page not found.');
+ $c->res->status(404);