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.

Reply via email to