Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Perl Cvs P5ee > [svn:p5ee] r994...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 1 of 1 Topic 590 of 718
Post > Topic >>

[svn:p5ee] r9944 - p5ee/trunk/App-Context/lib/App/Context

by spadkins@[EMAIL PROTECTED] Sep 13, 2007 at 01:05 PM

Author: spadkins
Date: Thu Sep 13 13:05:34 2007
New Revision: 9944

Modified:
   p5ee/trunk/App-Context/lib/App/Context/HTTP.pm

Log:
Changes for application login logoff

Modified: p5ee/trunk/App-Context/lib/App/Context/HTTP.pm
==============================================================================
--- p5ee/trunk/App-Context/lib/App/Context/HTTP.pm	(original)
+++ p5ee/trunk/App-Context/lib/App/Context/HTTP.pm	Thu Sep 13 13:05:34
2007
@[EMAIL PROTECTED]
 -135,26 +135,46 @[EMAIL PROTECTED]
     my ($self) = @[EMAIL PROTECTED]
 
     my $timer = $self->{options}{"app.Context.timer"};
+    my $app   = $self->{options}{app};
     my $content_description = "Unknown";
     $self->start_timer() if ($timer);
-    eval {
-        $self->dispatch_events_begin();
 
+    $self->dispatch_events_begin();
+
+    eval {
+        my $user = $self->user();
+        my $authorization = $self->authorization();
         my $events = $self->{events};
-        my ($event, $service, $name, $method, $args);
+        my ($event, $service_type, $service_name, $method, $args);
         my $results = "";
         # my $display_current_widget = 1;
 
         while ($#$events > -1) {
             $event = ****ft(@[EMAIL PROTECTED]
);
-            ($service, $name, $method, $args) = @[EMAIL PROTECTED]
            $results = $self->call($service, $name, $method, $args);
-            $args = join(",", @[EMAIL PROTECTED]
) if (ref($args) eq "ARRAY");
-            $self->lap_timer("$service($name).$method($args)") if
($timer);
-        }
-        my $type = $self->so_get("default","ctype","SessionObject");
-        $name = $self->so_get("default","cname");
-        $results = $self->service($type, $name);
+            ($service_type, $service_name, $method, $args) = @[EMAIL PROTECTED]
            if
($authorization->is_authorized("/App/$service_type/$service_name/$method",
$user)) {
+                $results = $self->call($service_type, $service_name,
$method, $args);
+                $args = join(",", @[EMAIL PROTECTED]
) if (ref($args) eq "ARRAY");
+               
$self->lap_timer("$service_type($service_name).$method($args)") if
($timer);
+                $user = $self->user();
+            }
+        }
+        $service_type = $self->so_get("default","ctype","SessionObject");
+        $service_name = $self->so_get("default","cname");
+
+        if
($authorization->is_authorized("/App/$service_type/$service_name", $user))
{
+            # do nothing
+        }
+        else {
+            if ($self->session_object_exists("login_${app}")) {
+                $service_name = "login_${app}";
+            }
+            else {
+                $service_name = "login";
+            }
+        }
+
+        $results = $self->service($service_type, $service_name);
 
         my $response = $self->response();
         my $ref = ref($results);
@[EMAIL PROTECTED]
 -169,7 +189,7 @[EMAIL PROTECTED]
         }
         else {
             $response->content($results->internals());
-            $content_description = "$type($name).internals()";
+            $content_description =
"$service_type($service_name).internals()";
         }
 
         $self->send_response();
@[EMAIL PROTECTED]
 -504,26 +524,78 @[EMAIL PROTECTED]
 sub user {
     &App::sub_entry if ($App::trace);
     my $self = ****ft;
-    my $user = $self->request()->user();
-    $self->{user} = $user;
-    my $switchable_users = $self->get_option("switchable_users");
-    if ($switchable_users && $switchable_users =~ /\b$user\b/) {
-        # check more carefully ...
-        if ($switchable_users eq $user ||
-            $switchable_users =~ /:$user:/ ||
-            $switchable_users =~ /^$user:/ ||
-            $switchable_users =~ /:$user$/) {
-            my $effective_user = $self->so_get("default","u");
-            if ($effective_user) {
-                $user = $effective_user;
-                $self->{effective_user} = $effective_user;
+    my $user = $self->{effective_user} || $self->{user};
+
+    if (!$user) {
+        my $options = $self->{options};
+        my ($effective_user);
+        my $authenticated = 0;
+
+        if ($options->{app_auth_required}) {
+            # Bypass Basic Authentication, /../..?u=username&p=password
+            my $password = $self->so_get("default","p");
+            $user = $self->so_get("default","u");
+            if (defined $password && defined $user) {
+                my $authentication = $self->authentication();
+                if ( $authentication->validate_password($user, $password)
) {
+                    $authenticated = 1;
+                    $effective_user = $self->so_get("default","eu");
+                }
             }
         }
+        else {
+            $user = $self->request()->user();
+
+            my $p_pass = $self->so_get("default","p");
+            my $u_user = $self->so_get("default","u");
+            if (defined $p_pass && defined $u_user) {
+                my $authentication = $self->authentication();
+                if ( $authentication->validate_password($u_user, $p_pass)
) {
+                    $authenticated = 1;
+                    $user = $self->so_get("default","u");
+                    $effective_user = $self->so_get("default","u");
+                }
+            }
+
+            $authenticated = 1;
+            $effective_user = $self->so_get("default","u");
+        }
+
+        $user = "guest" if (!$authenticated);
+        $ENV{REMOTE_USER} = $user;
+        $self->{user} = $user;
+
+        if ($user && $authenticated) {
+            my $switchable_users = $self->get_option("switchable_users");
+            if ($switchable_users && $switchable_users =~ /\b$user\b/) {
+                # check more carefully ...
+                if ($switchable_users eq $user ||
+                    $switchable_users =~ /:$user:/ ||
+                    $switchable_users =~ /^$user:/ ||
+                    $switchable_users =~ /:$user$/) {
+                    if ($effective_user) {
+                        $user = $effective_user;
+                        $self->{effective_user} = $effective_user;
+                    }
+                }
+            }
+        }
+
+        $self->so_set("default", "user", $user);
     }
+
     &App::sub_exit($user) if ($App::trace);
     return $user;
 }
 
+sub set_user {
+    &App::sub_entry if ($App::trace);
+    my ($self, $user) = @[EMAIL PROTECTED]
    $self->{user} = $user;
+    delete $self->{effective_user};
+    &App::sub_exit() if ($App::trace);
+}
+
 #04899 000.000000 000.000000 Start 2006/06/28 21:56:52.827139 GET        
   [222.252.72.65] localhost
 #04899 000.023569 000.023569 MarketVision[8] Controller code loaded
 #04899 000.394568 000.418137 MarketVision[666] code loaded, vars
initialized
 




 1 Posts in Topic:
[svn:p5ee] r9944 - p5ee/trunk/App-Context/lib/App/Context
spadkins@[EMAIL PROTECTED  2007-09-13 13:05:34 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Mon Oct 6 15:40:54 CDT 2008.