diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2019-02-22 21:56:19 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2019-02-22 21:56:19 +0100 | 
| commit | d32c2ad1b916dc1dcb4703433d70f822d67f6f9d (patch) | |
| tree | 376f242d716912bd9878654f73e846fee2555022 | |
| parent | 5bc5f638680a9faae2f1bc3309b0b0f998e6884d (diff) | |
prepare account support
| -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> | 
