Bot-Cobalt
view release on metacpan or search on metacpan
lib/Bot/Cobalt/Plugin/Auth.pm view on Meta::CPAN
package Bot::Cobalt::Plugin::Auth;
$Bot::Cobalt::Plugin::Auth::VERSION = '0.021003';
use strictures 2;
## "Standard" Auth module
##
## Commands:
## PRIVMSG:
## login <username> <passwd>
## chpass <oldpass> <newpass>
## user add
## user del
## user list
## user search
## user chpass
##
##
## Fairly basic access level system:
##
## - Users can have any numeric level.
## Generally unauthenticated users will be level 0
## Higher levels trump lower levels.
## SuperUsers (auth.conf) get access level 9999.
##
## - Plugins determine required levels for their respective commands
##
## Passwords are hashed via bcrypt and stored in YAML
## Location of the authdb is determined by auth.conf
##
## Loaded authdb exists in memory in $self->AccessList:
## ->AccessList = {
## $context => {
## $username => {
## Masks => ARRAY,
## Password => STRING (passwd hash),
## Level => INT (9999 if superuser),
## Flags => HASH,
## },
## },
## }
##
## Also see Bot::Cobalt::Core::ContextMeta::Auth
use Bot::Cobalt;
use Bot::Cobalt::Common;
use Bot::Cobalt::Error;
use Bot::Cobalt::Serializer;
use Scalar::Util 'reftype';
use Storable 'dclone';
use Try::Tiny;
use File::Spec;
### Constants, mostly for internal retvals:
sub ACCESS_LIST() { 0 }
sub DB_PATH() { 1 }
sub new {
bless [
+{}, ## ACCESS_LIST
'', ## DB_PATH
], shift
}
sub Cobalt_register {
my ($self, $core) = splice @_, 0, 2;
my $p_cfg = plugin_cfg( $self );
my $relative_path = $p_cfg->{Opts}->{AuthDB} ||
File::Spec->catfile( 'db', 'authdb.yml');
my $authdb = File::Spec->catfile(
$core->var,
File::Spec->splitpath($relative_path)
);
logger->debug("Using authdb path $authdb");
$self->_db_path($authdb);
## Read in main authdb:
my $alist = $self->_read_access_list;
unless ($alist) {
die "initial _read_access_list failed, check log\n";
}
$self->AccessList( $alist );
$self->_init_superusers;
register($self, 'SERVER',
'connected',
'disconnected',
'user_quit',
'user_left',
'self_left',
'self_kicked',
'user_kicked',
'nick_changed',
'private_msg',
);
( run in 2.900 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )