Author: spadkins
Date: Fri Aug 17 09:07:43 2007
New Revision: 9849
Added:
p5ee/trunk/App-Context/lib/App/Authentication/Htpasswd.pm
Log:
Used to validate_password in the htpasswd_file
Added: p5ee/trunk/App-Context/lib/App/Authentication/Htpasswd.pm
==============================================================================
--- (empty file)
+++ p5ee/trunk/App-Context/lib/App/Authentication/Htpasswd.pm Fri Aug 17
09:07:43 2007
@@ -0,0 +1,105 @@
+
+#############################################################################
+## $Id: Htpasswd.pm 9817 2007-07-30 22:46:19Z spadkins $
+#############################################################################
+
+package App::Authentication::Htpasswd;
+$VERSION = (q$Revision: 9817 $ =~ /(\d[\d\.]*)/)[0]; # VERSION numbers
generated by svn
+
+use App;
+use App::Authentication;
[EMAIL PROTECTED] = ( "App::Authentication" );
+
+use strict;
+
+=head1 NAME
+
+App::Authentication::Htpasswd - Interface for authentication using an htpasswd
file
+
+=head1 SYNOPSIS
+
+ use App;
+
+ $context = App->context();
+ $authentication = $context->service("Authentication"); # or ...
+ $authentication = $context->authentication();
+
+ if ($authentication->validate_password($username, $password)) {
+ ...
+ }
+
+=head1 DESCRIPTION
+
+An App::Authentication::Htpasswd service is a means by which a user may be
authenticated
+using an htpasswd file.
+
+=cut
+
+#############################################################################
+# PUBLIC METHODS
+#############################################################################
+
+=head1 Public Methods:
+
+=cut
+
+#############################################################################
+# validate_password()
+#############################################################################
+
+=head2 validate_password()
+
+ * Signature: $username = $auth->validate_password();
+ * Param: void
+ * Return: $username string
+ * Throws: App::Exception::Authentication
+ * Since: 0.01
+
+ Sample Usage:
+
+ $username = $auth->validate_password();
+
+=cut
+
+sub validate_password {
+ &App::sub_entry if ($App::trace);
+ my ($self, $username, $password) = @_;
+ my $valid = 0;
+
+ my $context = $self->{context};
+ my $htpasswd_file = $context->get_option("htpasswd_file");
+
+ if (-e $htpasswd_file) {
+ my ($uname, $pword);
+ if (open(PFILE, "< $htpasswd_file")) {
+ while (<PFILE>) {
+ chomp;
+ ($uname, $pword) = split(/:/);
+ last if ($uname eq $username);
+ $uname = "";
+ }
+ close(PFILE);
+ if ($uname) {
+ my $crypt = crypt($password, $pword);
+ $valid = ($pword eq $crypt) ? 1 : 0;
+ }
+ }
+ }
+ &App::sub_exit($valid) if ($App::trace);
+ return($valid);
+}
+
+=head1 ACKNOWLEDGEMENTS
+
+ * Author: Stephen Adkins <[EMAIL PROTECTED]>
+ * License: This is free software. It is licensed under the same terms as Perl
itself.
+
+=head1 SEE ALSO
+
+L<C<App::Context>|App::Context>,
+L<C<App::Service>|App::Service>
+
+=cut
+
+1;
+