hi,
Using
$ mojo version
CORE
Perl (v5.20.1, linux)
Mojolicious (5.62, Tiger Face)
OPTIONAL
EV 4.0+ (4.18)
IO::Socket::Socks 0.64+ (not installed)
IO::Socket::SSL 1.84+ (2.005)
Net::DNS::Native (not installed)
when using the morbo development server, my code works fine. When using the
the hypotoad, the comparison in
@@smscode.html.ep
% layout 'default';
<h1> <%= "$smscode $random" %> </h1>
% if ( $smscode eq $random ) {
is false, so i get to see I type the correct sms code but the random code
hypnotoad knows of is an older one. That has probably to do with my total
newbieness of web development, sessions etc, but I have been banging my
head for a couple of hours already so it is time to ask for help.
This webapp is meant to be a self service password reset page for our
Active Directory users. I got the inspiration from
https://github.com/sciurus/gente but it does not fit our needs so I decided
to take a shot at it and rewrite it. We want to use a 2 factor
authentication system by sending an sms message to our users (we use an
e-mail to sms gateway). I plan on releasing it as free software as soon as
it is ready .
#!/usr/bin/env perl
use warnings;
use strict;
use Net::SMTP;
use Mojolicious::Lite;
use Mojo::Log;
app->log( Mojo::Log->new(
level => 'debug',
path => 'log/test.log',
)
);
# use this var for loggin stuff inside the web app
#my $log = app->log;
# global variables
my $mobile = "+telephonenr\@domain\.tld";
my $random;
my $smscode;
# Start http routes
get '/' => sub {
my $c = shift;
$c->render('username');
};
post '/' => sub {
my $c = shift;
$random = undef;
$random = _generate_random_string(6);
_sendemail($random, $mobile);
$c->stash( mobile => $mobile );
$c->render('smsform');
};
post '/smscode' => sub {
my $c = shift;
$c->stash( smscode => $c->param('smscode') );
$c->stash( random => $random );
$smscode = $c->param('smscode');
$c->render('smscode');
};
app->start;
#=== FUNCTION
================================================================
# NAME: _sendmail
# PURPOSE: send email to the sms gateway
# PARAMETERS: $smscode
# RETURNS: nothing
# DESCRIPTION:
# THROWS: no exceptions
# COMMENTS: logs the whole smtp conversation to the app debug log
# SEE ALSO: n/a
#===============================================================================
sub _sendemail {
my ( $random, $mobile ) = @_;
my $smtp = Net::SMTP->new(
Host => "mail.domain.tld",
Hello => "helo",
Timeout => 30,
Debug => 0,
);
app->log->debug( $smtp->message() );
$smtp->mail("smsreset\@domain.tld");
app->log->debug( $smtp->message() );
$smtp->to("$mobile\@domain\.tld");
app->log->debug( $smtp->message() );
$smtp->data();
app->log->debug( $smtp->message() );
$smtp->datasend( $random );
app->log->debug( $smtp->message() );
$smtp->dataend();
app->log->debug( $smtp->message() );
$smtp->quit();
}
sub _generate_random_string {
my ($length_of_randomstring) = @_;
my $random_string;
my @chars = ( 'a' .. 'z', '1' .. '9' );
for ( 1 .. $length_of_randomstring ) {
# rand @chars will generate a random
# number between 0 and scalar @chars
$random_string .= $chars[ rand @chars ];
}
return $random_string;
}
__DATA__
@@ username.html.ep
% layout 'default';
<%= form_for '/' => (method => 'post') => begin %>
Username:
<%= input_tag 'username' %>
<%= submit_button %>
<% end %>
@@smsform.html.ep
<%= form_for '/smscode' => (method => 'post') => begin %>
SMS code
<%= input_tag 'smscode' %>
<br>
<%= submit_button %>
<% end %>
@@smscode.html.ep
% layout 'default';
<h1> <%= "$smscode $random" %> </h1>
% if ( $smscode eq $random ) {
<h2> sms code: <%= $smscode %> </h2>
<%= form_for '/changepass' => (method => 'post') => begin %>
Old Password:
<%= input_tag 'old', type => 'password' %>
<br>
New Password:
<%= input_tag 'new', type => 'password' %>
<br>
<%= submit_button %>
<% end %>
<p> <%= link_to 'Back to the form' => '/' %> </p>
% }
% else {
<h1> you did not typed the right sms code! </h1>
<p> <%= link_to 'Back to the form' => '/' %> </p>
% }
@@ layouts/default.html.ep
<!doctype html><html>
<head><title><%= title %></title></head>
<body>
<h1> <%= title %> </h1>
<%= content %>
</body>
</html>
TIA.
Regards,
Natxo
--
You received this message because you are subscribed to the Google Groups
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.