Mercurial > pub > Impl
view Lib/Security/Auth/Simple.pm @ 40:ac21a032e7a9
bnf parser in progress
author | Sergey |
---|---|
date | Thu, 10 Dec 2009 17:43:39 +0300 |
parents | 03e58a454b20 |
children | 16ada169ca75 |
line wrap: on
line source
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;