#!/usr/bin/env perl use Mojolicious::Lite; use Data::Dump qw(dump); use Cwd; # Documentation browser under "/perldoc" (this plugin requires Perl 5.10) plugin 'pod_renderer'; helper get_files => sub { my $self = shift; warn "XXXXX ", dump( $self->req->url->path->to_string ); my $path = $self->req->url->path->to_string; $path =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/ge; # url_unescape; $path =~ s{^.*~/}{}; $self->stash( full_path => $path ); return $self->redirect_to( $path ) if -f $path; my $cwd = getcwd; chdir $path; # need to chdir because glob seems to have limited length return values my $files = [ map { $_ .= '/' if -d $_; $_; } glob '*' ]; chdir $cwd; warn "# path ",dump($path, $files); $self->stash( files => $files ); }; get '/~/*path' => sub { my $self = shift; warn "no path"; $self->get_files; if ( -f $self->stash('full_path') ) { return $self->redirect_to( $self->stash( 'full_path' ) ); } $self->render('user'); }; get '/' => sub { my $self = shift; $self->render('index'); }; get '/_admin/users' => sub { my $self = shift; my @users = map { s{/secrets}{}; $_ } glob 'users/*/secrets'; $self->render('users', users => \@users ); }; app->start; __DATA__ @@ layouts/default.html.ep