diff Lib/Security/Auth/Simple.pm @ 0:03e58a454b20

Создан репозитарий
author Sergey
date Tue, 14 Jul 2009 12:54:37 +0400
parents
children 16ada169ca75
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Lib/Security/Auth/Simple.pm	Tue Jul 14 12:54:37 2009 +0400
@@ -0,0 +1,73 @@
+package Security::Auth::Simple;
+use strict;
+use Common;
+
+our $Strict;
+
+our @ISA = qw(Object);
+
+sub Name {
+    return 'Simple';
+}
+
+sub ConstructAuthData {
+    my ($class,$SecData) = @_;
+    return new Security::Auth::Simple::AuthData(DataMD5 => $SecData);
+}
+
+sub NewAuthData {
+    my ($class,$SecData) = @_;
+    return new Security::Auth::Simple::AuthData(Data => $SecData);
+    
+}
+
+package Security::Auth::Simple::AuthData;
+use Common;
+use Security;
+use Security::Auth;
+use Digest::MD5 qw(md5_hex);
+our @ISA = qw(Object);
+
+BEGIN {
+    DeclareProperty Data => ACCESS_READ;
+    DeclareProperty DataMD5 => ACCESS_READ;
+}
+
+sub CTOR {
+    my ($this,%args) = @_;
+    
+    if ($args{'Data'}) {
+        $args{'DataMD5'}= $args{'Data'} ? md5_hex($args{'Data'}) : undef ;
+        $this->{$Data} = $args{'Data'};
+    }
+    $this->{$DataMD5} = $args{'DataMD5'};
+}
+
+sub DoAuth {
+    my ($this,$SecData) = @_;
+    
+    if (not ($this->{$DataMD5} or $SecData) or $this->{$DataMD5} eq md5_hex($SecData)) {
+        if ($Strict) {
+            $this->{$Data} = Security::Auth::GenSSID;
+            $this->{$DataMD5} = md5_hex($this->{$Data});
+        } else {
+            $this->{$Data} = $SecData;
+        }
+        return Security::AUTH_SUCCESS;
+    } else {
+        return Security::AUTH_FAILED;
+    }
+}
+
+sub SessionAuthData {
+    my ($this) = @_;
+    
+    return $this->{$DataMD5};
+}
+
+sub ClientAuthData {
+    my ($this) = @_;
+    return $this->{$Data};
+}
+
+1;