summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2019-02-22 21:56:19 +0100
committerDaniel Friesel <derf@finalrewind.org>2019-02-22 21:56:19 +0100
commitd32c2ad1b916dc1dcb4703433d70f822d67f6f9d (patch)
tree376f242d716912bd9878654f73e846fee2555022
parent5bc5f638680a9faae2f1bc3309b0b0f998e6884d (diff)
prepare account support
-rwxr-xr-xindex.pl32
-rw-r--r--templates/login.html.ep18
-rw-r--r--templates/register.html.ep38
3 files changed, 88 insertions, 0 deletions
diff --git a/index.pl b/index.pl
index 4b5bc9b..5a7e598 100755
--- a/index.pl
+++ b/index.pl
@@ -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>