source: server/trunk/web/lib/Sophie/Controller/Root.pm @ 65

Last change on this file since 65 was 65, checked in by nanardon, 14 years ago
  • manage user role
File size: 2.3 KB
Line 
1package Sophie::Controller::Root;
2use Moose;
3use namespace::autoclean;
4
5BEGIN { extends 'Catalyst::Controller' }
6
7#
8# Sets the actions in this controller to be registered with no prefix
9# so they function identically to actions created in MyApp.pm
10#
11__PACKAGE__->config(namespace => '');
12
13=head1 NAME
14
15Sophie::Controller::Root - Root Controller for Sophie
16
17=head1 DESCRIPTION
18
19[enter your description here]
20
21=head1 METHODS
22
23=cut
24
25sub begin : Private {
26    my ( $self, $c ) = @_;
27
28    if ($c->req->path =~ m:[^/]+\/+$:) {
29        my $path = $c->req->path;
30        $path =~ s:/*$::;
31        $c->res->redirect($c->uri_for("/$path"));
32        return;
33    }
34
35    if (!$c->stash->{sitepath}) {
36        my @path;
37        my @reqpath = split('/', $c->req->path);
38        foreach (@reqpath) {
39            push(@path, $_);
40            push(@{ $c->stash->{sitepath} }, { path => $c->uri_for('/', @path),
41                    name => $_ || '*' });
42        }
43    }
44
45    if (($c->req->query_keywords || '') =~ /([^\w]|^)json([^\w]|$)/ ||
46        exists($c->req->params ->{json})) {
47        $c->stash->{current_view} = 'Json';
48    }
49    if (($c->req->query_keywords || '') =~ /([^\w]|^)ajax([^\w]|$)/ ||
50        exists($c->req->params ->{ajax})) {
51        $c->stash->{current_view} = 'Ajax';
52    }
53
54    if ($c->action =~ m/^admin\//) {
55        if (!($c->user_exists && $c->check_user_roles($c->user, 'Admin'))) {
56            $c->res->redirect($c->uri_for('/login'));
57        }
58    }
59}
60
61=head2 index
62
63The root page (/)
64
65=cut
66
67sub index :Path :Args(0) {
68    my ( $self, $c ) = @_;
69
70    # Hello World
71}
72
73=head2 default
74
75Standard 404 error page
76
77=cut
78
79sub default :Path {
80    my ( $self, $c ) = @_;
81    $c->response->body( 'Page not found' );
82    $c->response->status(404);
83}
84
85=head2 end
86
87Attempt to render a view, if needed.
88
89=cut
90
91sub _end : ActionClass('RenderView') {}
92
93sub  end : Private {
94    my ( $self, $c ) = @_;
95    if (!$c->req->xmlrpc->method) {
96        $c->forward('_end');
97    } elsif (!$c->stash->{current_view}) {
98    }
99    $c->stash->{data} = $c->stash->{xmlrpc};
100    $c->model('Base')->storage->dbh->rollback;
101}
102
103=head1 AUTHOR
104
105Olivier Thauvin
106
107=head1 LICENSE
108
109This library is free software. You can redistribute it and/or modify
110it under the same terms as Perl itself.
111
112=cut
113
114__PACKAGE__->meta->make_immutable;
115
1161;
Note: See TracBrowser for help on using the repository browser.