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

Создан репозитарий
author Sergey
date Tue, 14 Jul 2009 12:54:37 +0400
parents
children 16ada169ca75
comparison
equal deleted inserted replaced
-1:000000000000 0:03e58a454b20
1 package Security::Auth::Simple;
2 use strict;
3 use Common;
4
5 our $Strict;
6
7 our @ISA = qw(Object);
8
9 sub Name {
10 return 'Simple';
11 }
12
13 sub ConstructAuthData {
14 my ($class,$SecData) = @_;
15 return new Security::Auth::Simple::AuthData(DataMD5 => $SecData);
16 }
17
18 sub NewAuthData {
19 my ($class,$SecData) = @_;
20 return new Security::Auth::Simple::AuthData(Data => $SecData);
21
22 }
23
24 package Security::Auth::Simple::AuthData;
25 use Common;
26 use Security;
27 use Security::Auth;
28 use Digest::MD5 qw(md5_hex);
29 our @ISA = qw(Object);
30
31 BEGIN {
32 DeclareProperty Data => ACCESS_READ;
33 DeclareProperty DataMD5 => ACCESS_READ;
34 }
35
36 sub CTOR {
37 my ($this,%args) = @_;
38
39 if ($args{'Data'}) {
40 $args{'DataMD5'}= $args{'Data'} ? md5_hex($args{'Data'}) : undef ;
41 $this->{$Data} = $args{'Data'};
42 }
43 $this->{$DataMD5} = $args{'DataMD5'};
44 }
45
46 sub DoAuth {
47 my ($this,$SecData) = @_;
48
49 if (not ($this->{$DataMD5} or $SecData) or $this->{$DataMD5} eq md5_hex($SecData)) {
50 if ($Strict) {
51 $this->{$Data} = Security::Auth::GenSSID;
52 $this->{$DataMD5} = md5_hex($this->{$Data});
53 } else {
54 $this->{$Data} = $SecData;
55 }
56 return Security::AUTH_SUCCESS;
57 } else {
58 return Security::AUTH_FAILED;
59 }
60 }
61
62 sub SessionAuthData {
63 my ($this) = @_;
64
65 return $this->{$DataMD5};
66 }
67
68 sub ClientAuthData {
69 my ($this) = @_;
70 return $this->{$Data};
71 }
72
73 1;