Skip to content

Instantly share code, notes, and snippets.

@jjn1056
Created May 16, 2022 12:52
Show Gist options
  • Save jjn1056/b6c343d8436dfd31e9f1b37d4d097d5a to your computer and use it in GitHub Desktop.
Save jjn1056/b6c343d8436dfd31e9f1b37d4d097d5a to your computer and use it in GitHub Desktop.
package Example::Controller::Register;
use Moose;
use MooseX::MethodAttributes;
use Example::Syntax;
extends 'Catalyst::ControllerPerRequest';
has person => (
is=>'ro',
lazy=>1,
default=>sub($self) { $self->model('Schema::Person')->new_result(+{}) }
);
has register_view => (
is=>'ro',
lazy=>1,
default=>sub($self) { $self->view('Components::Register', person=>$self->person) }
);
sub root :Chained(/root) PathPart(register) Args(0) Does(Verbs) ($self, $c) {
return $c->redirect_to_action('#home') if $c->user;
}
sub GET :Action ($self, $c) {
return $self->register_view->http_ok;
}
sub POST :Action ($self, $c) {
my %params = $c->structured_body(
['person'],
'username', 'first_name', 'last_name',
'password', 'password_confirmation'
)->to_hash;
$self->person->set_columns_recursively(\%params)->insert;
return $self->person->valid ?
$c->redirect_to_action('#login') :
$self->register_view->http_bad_request;
}
__PACKAGE__->meta->make_immutable;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment