App-Context
view release on metacpan or search on metacpan
lib/App/Context/HTTP.pm view on Meta::CPAN
$user_agent = $context->user_agent();
=cut
sub user_agent {
&App::sub_entry if ($App::trace);
my $self = shift;
my $user_agent = $self->{user_agent};
&App::sub_exit($user_agent) if ($App::trace);
return($user_agent);
}
#############################################################################
# PUBLIC METHODS
#############################################################################
=head1 Public Methods:
=cut
#############################################################################
# user()
#############################################################################
=head2 user()
The user() method returns the username of the authenticated user.
The special name, "guest", refers to the unauthenticated (anonymous) user.
* Signature: $username = $self->user();
* Param: void
* Return: string
* Throws: <none>
* Since: 0.01
Sample Usage:
$username = $context->user();
In a request/response environment, this turns out to be a convenience
method which gets the authenticated user from the current Request object.
=cut
sub user {
&App::sub_entry if ($App::trace);
my $self = shift;
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");
}
else {
$user = 'guest';
$effective_user = 'guest';
}
}
$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) = @_;
$self->{user} = $user;
delete $self->{effective_user};
&App::sub_exit() if ($App::trace);
}
1;
( run in 1.591 second using v1.01-cache-2.11-cpan-39bf76dae61 )