Grimlock
view release on metacpan or search on metacpan
lib/Grimlock/Web/Controller/User.pm view on Meta::CPAN
sub load_user : Chained('base') PathPart('user') CaptureArgs(1) {
my ( $self, $c, $uid) = @_;
my $user = $c->model('Database::User')->find(
{
name => $uid
},
{
userid => $uid
},
{ prefetch => 'entries' }
);
$c->log->debug("FOUND IN LOAD" . $user->name);
$c->stash( user => $user );
}
sub list : Chained('base') PathPart('users') Args(0) ActionClass('REST'){
my ( $self, $c ) = @_;
}
sub list_GET {
my ( $self, $c ) = @_;
$self->status_ok($c,
entity => {
users => [ $c->model('Database::User')->all ]
},
);
}
sub login : Chained('base') PathPart('user/login') Args(0) ActionClass('REST') {
my ( $self, $c, ) = @_;
$c->stash( template => 'user/login.tt' );
}
sub login_GET {
my ( $self, $c ) = @_;
return $self->status_ok($c, {
entity => {
user => $c->user->obj->userid
}
}) if $c->user_exists;
}
sub login_POST {
my ( $self, $c ) = @_;
my $params ||= $c->req->data || $c->req->params;
if ( $c->authenticate({
name => $params->{'name'},
password => $params->{'password'}
})
) {
$c->res->redirect(
$c->uri_for_action(
'/user/browse', [ $c->user->obj->userid ]
)
);
}
$c->flash( message => "Incorrect credentials" );
$c->res->redirect(
$c->uri_for_action('/user/login')
);
}
sub logout : Chained('base') PathPart('user/logout') Args(0) ActionClass('REST') {
}
sub logout_GET {
my ( $self, $c ) = @_;
$c->logout;
$self->status_ok($c,
entity => {
message => "logged out successfully"
}
);
}
sub create : Chained('base') PathPart('user') Args(0) ActionClass('REST') {}
sub create_POST {
my ( $self, $c ) = @_;
my $params ||= $c->req->data || $c->req->params;
my $user;
try {
$user = $c->model('Database::User')->create({
name => $params->{'name'},
password => $params->{'password'},
email => $params->{'email'} || "",
}) || die "Can't create user: $!";
$c->set_authenticated($c->find_user({ name => $user->name}));
return $self->status_created($c,
location => $c->uri_for_action('/user/browse', [ $user->name ]),
entity => {
user => $user,
message => "User created successfully!"
}
);
} catch {
return $self->status_bad_request($c,
message => $_
);
};
}
sub browse : Chained('load_user') PathPart('') Args(0) ActionClass('REST') {
my ( $self, $c ) = @_;
my $user = $c->stash->{'user'} ;
$c->stash( user => $user );
}
sub browse_GET {
my ( $self, $c ) = @_;
my $user = $c->stash->{'user'};
( run in 2.356 seconds using v1.01-cache-2.11-cpan-f56aa216473 )