diff options
-rwxr-xr-x | index.pl | 32 | ||||
-rw-r--r-- | templates/login.html.ep | 18 | ||||
-rw-r--r-- | templates/register.html.ep | 38 |
3 files changed, 88 insertions, 0 deletions
@@ -1,6 +1,7 @@ #!/usr/bin/env perl use Mojolicious::Lite; +use Mojolicious::Plugin::Authentication; use Cache::File; use DateTime; use DBI; @@ -33,6 +34,27 @@ my %action_type = ( undo => 3, ); +app->plugin(authentication => { + autoload_user => 1, + session_key => 'foodor', + load_user => sub { + my ($app, $uid) = @_; + if ($uid == 1) { + return { + name => 'derf', + }; + } + return undef; + }, + validate_user => sub { + my ($c, $username, $password, $extradata) = @_; + if ($username eq 'derf' and $password eq 'hallo') { + return 1; + } + return undef; + }, +}); + app->defaults( layout => 'default' ); app->attr( @@ -772,6 +794,16 @@ post '/x/geolocation' => sub { }; +get '/x/login' => sub { + my ($self) = @_; + $self->render('login'); +}; + +get '/x/register' => sub { + my ($self) = @_; + $self->render('register'); +}; + get '/*station' => sub { my ($self) = @_; my $station = $self->stash('station'); diff --git a/templates/login.html.ep b/templates/login.html.ep new file mode 100644 index 0000000..b9b79eb --- /dev/null +++ b/templates/login.html.ep @@ -0,0 +1,18 @@ +<div class="row"> + <form class="col s12"> + <div class="row"> + <div class="input-field col s12"> + <i class="material-icons prefix">account_circle</i> + <input id="user" type="text" class="validate"> + <label for="user">User</label> + </div> + </div> + <div class="row"> + <div class="input-field col s12"> + <i class="material-icons prefix">lock</i> + <input id="password" type="password" class="validate"> + <label for="password">Password</label> + </div> + </div> + </form> +</div> diff --git a/templates/register.html.ep b/templates/register.html.ep new file mode 100644 index 0000000..4431330 --- /dev/null +++ b/templates/register.html.ep @@ -0,0 +1,38 @@ +<div class="row"> + %= form_for '/x/register' => (class => 'col s12', method => 'POST') => begin + <div class="row"> + <div class="input-field col l6 m12 s12"> + <i class="material-icons prefix">account_circle</i> + <input id="account" type="text" class="validate"> + <label for="account">Name</label> + </div> + <div class="input-field col l6 m12 s12"> + <i class="material-icons prefix">email</i> + <input id="email" type="email" class="validate"> + <label for="email">Mail-Adresse</label> + </div> + <div class="input-field col l6 m12 s12"> + <i class="material-icons prefix">lock</i> + <input id="password" type="password" class="validate"> + <label for="password">Passwort</label> + </div> + <div class="input-field col l6 m12 s12"> + <i class="material-icons prefix">lock</i> + <input id="password2" type="password" class="validate"> + <label for="password2">Passwort wiederholen</label> + </div> + </div> + <div class="row"> + <div class="col s3 m3 l3"> + </div> + <div class="col s6 m6 l6 center-align"> + <button class="btn waves-effect waves-light" type="submit" name="action" value="register"> + Registrieren + <i class="material-icons right">send</i> + </button> + </div> + <div class="col s3 m3 l3"> + </div> + </div> + %= end +</div> |