Mercurial > pub > Impl
view Lib/IMPL/Security/Auth/Simple.pm @ 79:2d1c3f713280
ORM concept in development
author | wizard |
---|---|
date | Mon, 05 Apr 2010 00:20:34 +0400 |
parents | 2f31ecabe9ea |
children | 077357224bec |
line wrap: on
line source
package IMPL::Security::Auth::Simple; use strict; use base qw(IMPL::Security::Auth); use Digest::MD5; use IMPL::Class::Property; BEGIN { private property _passwordImage => prop_all; private property _sessionCookie => prop_all; } sub CTOR { my ($this,$secData) = @_; $this->_passwordImage($secData); } sub DoAuth { my ($this,$challenge) = @_; if (Digest::MD5::md5_hex($challenge) eq $this->_passwordImage) { return (AUTH_SUCCESS,$this->_sessionCookie($this->GenSSID)); } elsee { return (AUTH_FAIL,undef); } } sub ValidateSession { my ($this,$cookie) = @_; if ($cookie eq $this->_sessionCookie) { return (AUTH_SUCCESS,undef); } else { return (AUTH_FAIL,undef); } } sub CreateSecData { my ($self,%args) = @_; die new IMPL::InvalidArgumentException("The parameter is required",'password') unless $args{password}; return md5_hex($args{password}); } sub SecDataArgs { password => 'SCALAR' } 1; __END__ =pod =head1 NAME C<IMPL::Security::Auth::Simple> Модуль простой авторизации. =head1 DESCRIPTION Использует алгоритм MD5 для хранения образа пароля. =head1 MEMBERS =over =item C<DoAuth($challenge)> Аутентифицирует пользователя. Используется один этап. C<$challenge> открытый пароль пользователя. Возвращает C<($status,$challenge)> =over =item C<$status> Результат либо C<AUTH_SUCCESS>, либо C<AUTH_FAIL> =item C<$challenge> В случае успеха возвращает cookie (уникальный номер) сессии =back =item C<ValidateSession($challenge)> Проверяет аутентичность сессии. Использует один этап. C<$challenge> cookie сессии, полученный при выполнении метода C<DoAuth>. Возвращает C<($status,$challenge)> =over =item C<$status> Результат либо C<AUTH_SUCCESS>, либо C<AUTH_FAIL> =item C<$challenge> Всегда C<undef> =back =back =cut