The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

WebPrototypes::Registration - (Experimental) Plack application for registering a new user

VERSION

version 0.002

SYNOPSIS

    # connecting with DBIx::Class
    {
        package My::Register;
        use parent 'WebPrototypes::Registration';
        use Plack::Util::Accessor qw( schema );

        sub find_user {
            my( $self, $name ) = @_;
            return $self->schema->resultset( 'User' )->search({ username =>  $name })->next;
        }

        sub create_user {
            my( $self, %fields ) = @_;
            return $self->schema->resultset( 'User' )->create({ %fields });
        }
    }

    use Plack::Builder;

    my $app = My::Register->new( schema => $schema );

    builder {
        mount "/register" => builder {
            $app->to_app;
        };
    };

DESCRIPTION

This application implements a user registration mechanism. After the registration and email address verification letter is sent.

The examples here are with DBIx::Class but they can be easily ported to other storage layers.

This application uses the Template Method design pattern.

PURE VIRTUAL METHODS

These methods need to be overriden in subclass.

find_user ( name )

Should return a true value if the name is already registered

create_user ( attributes )

Should create the user object.

VIRTUAL METHODS

These methods have defaults - but should probably be overriden anyway.

wrap_text ( text )

Should return the html page containing the passed text fragment. By default it just adds the html and body tags.

build_reply ( page_body )

Should return the PSGI response data structure.

Should create the email containing the link.

send_mail ( mail )

Should send the mail (created by build_mail).

OTHER METHODS

call ( env )

SEE ALSO

Plack Plack::Middleware::Auth::Form

AUTHOR

Zbigniew Lukasiak <zby@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2011 by Zbigniew Lukasiak <zby@cpan.org>.

This is free software, licensed under:

  The Artistic License 2.0 (GPL Compatible)