
sunnavy at bestpractical
Jul 2, 2012, 8:57 AM
Post #1 of 1
(90 views)
Permalink
|
|
rt branch, 4.0/mobile-login, created. rt-4.0.4-145-gc95ba42
|
|
The branch, 4.0/mobile-login has been created at c95ba42703f2d0d0eb2db5cd322c45aa463ece7a (commit) - Log ----------------------------------------------------------------- commit 208e39e486861da72e91807d587f25f9a6e3a6d0 Author: sunnavy <sunnavy [at] bestpractical> Date: Wed Dec 14 13:27:10 2011 +0800 show mobile login on mobile clients diff --git a/lib/RT/Interface/Web.pm b/lib/RT/Interface/Web.pm index 2e8a8f9..14843ac 100644 --- a/lib/RT/Interface/Web.pm +++ b/lib/RT/Interface/Web.pm @@ -256,6 +256,10 @@ sub HandleRequest { # Process per-page authentication callbacks $HTML::Mason::Commands::m->callback( %$ARGS, CallbackName => 'Auth', CallbackPage => '/autohandler' ); + if ( $ARGS->{'NotMobile'} ) { + $HTML::Mason::Commands::session{'NotMobile'} = 1; + } + unless ( _UserLoggedIn() ) { _ForceLogout(); @@ -276,11 +280,18 @@ sub HandleRequest { # Specially handle /index.html so that we get a nicer URL elsif ( $m->request_comp->path eq '/index.html' ) { my $next = SetNextPage(RT->Config->Get('WebURL')); - $m->comp('/NoAuth/Login.html', next => $next, actions => [$msg]); + $m->comp( + (MobileClient() ? '/m/login' : '/NoAuth/Login.html'), + next => $next, + actions => [$msg || ()] + ); $m->abort; } else { - TangentForLogin(results => ($msg ? LoginError($msg) : undef)); + TangentForLogin( + results => ( $msg ? LoginError($msg) : undef ), + ( MobileClient() ? (mobile => 1) : () ), + ); } } } diff --git a/share/html/NoAuth/Login.html b/share/html/NoAuth/Login.html index b33bb0a..83a4c79 100755 --- a/share/html/NoAuth/Login.html +++ b/share/html/NoAuth/Login.html @@ -49,4 +49,9 @@ my ($good, $msg) = RT::Interface::Web::AttemptPasswordAuthentication(\%ARGS); $ARGS{'actions'} = [$msg] if not $good and $msg; </%init> + +% if ( $ARGS{'mobile'} ) { +<& /m/login, %ARGS &> +% } else { <& /Elements/Login, %ARGS &> +% } diff --git a/share/html/m/_elements/wrapper b/share/html/m/_elements/wrapper index e15ab46..4bff8ce 100644 --- a/share/html/m/_elements/wrapper +++ b/share/html/m/_elements/wrapper @@ -50,8 +50,7 @@ $title => '' $show_home_button => 1 </%args> <%init> -if ($m->request_args->{'NotMobile'}) { - $session{'NotMobile'} = 1; +if ($session{'NotMobile'}) { RT::Interface::Web::Redirect(RT->Config->Get('WebURL')); $m->abort(); } commit c95ba42703f2d0d0eb2db5cd322c45aa463ece7a Author: sunnavy <sunnavy [at] bestpractical> Date: Wed Dec 14 13:36:07 2011 +0800 basic login test diff --git a/t/web/login.t b/t/web/login.t new file mode 100644 index 0000000..33240f5 --- /dev/null +++ b/t/web/login.t @@ -0,0 +1,86 @@ +use strict; +use warnings; + +use RT::Test tests => 21; + +my ( $baseurl, $m ) = RT::Test->started_ok; + +my $ticket = RT::Test->create_ticket( + Subject => 'ticket_foo', + Queue => 'General', +); + +my ( $user, $pass ) = ( 'root', 'password' ); + +diag "normal login"; +{ + $m->get($baseurl); + $m->title_is('Login'); + is( $m->uri, $baseurl, "right url" ); + $m->submit_form( + form_id => 'login', + fields => { + user => $user, + pass => $pass, + } + ); + + $m->title_is( 'RT at a glance', 'logged in' ); + + $m->follow_link_ok( { text => 'Logout' }, 'follow logout' ); + $m->title_is( 'Logout', 'logout' ); +} + +diag "tangent login"; + +{ + $m->get( $baseurl . '/Ticket/Display.html?id=1' ); + $m->title_is('Login'); + $m->submit_form( + form_id => 'login', + fields => { + user => $user, + pass => $pass, + } + ); + like( $m->uri, qr{/Ticket/Display\.html}, 'normal ticket page' ); + $m->follow_link_ok( { text => 'Logout' }, 'follow logout' ); +} + +diag "mobile normal login"; +{ + + # default browser in android 2.3.6 + $m->agent( +"Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus One Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" + ); + + $m->get($baseurl); + is( $m->uri, $baseurl, "right url" ); + $m->content_contains( "/m/index.html?NotMobile=1", 'mobile login' ); + $m->submit_form( + form_id => 'login', + fields => { + user => $user, + pass => $pass, + } + ); + is( $m->uri, $baseurl . '/m/', "mobile url" ); + $m->follow_link_ok( { text => 'Logout' }, 'follow logout' ); + like( $m->uri, qr{/NoAuth/Login\.html}, 'back to login page' ); +} + +diag "mobile tangent login"; +{ + $m->get( $baseurl . '/Ticket/Display.html?id=1' ); + $m->content_contains( "/m/index.html?NotMobile=1", 'mobile login' ); + $m->submit_form( + form_id => 'login', + fields => { + user => $user, + pass => $pass, + } + ); + like( $m->uri, qr{/m/ticket/show}, 'mobile ticket page' ); +} + ----------------------------------------------------------------------- _______________________________________________ Rt-commit mailing list Rt-commit [at] lists http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-commit
|