/usr/share/perl5/Dancer/Plugin/Auth/Extensible/Provider/Unix.pm is in libdancer-plugin-auth-extensible-perl 0.30-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | package Dancer::Plugin::Auth::Extensible::Provider::Unix;
use strict;
use base 'Dancer::Plugin::Auth::Extensible::Provider::Base';
use Authen::Simple::PAM;
use Unix::Passwd::File;
=head1 NAME
Dancer::Plugin::Auth::Extensible::Unix - authenticate *nix system accounts
=head1 DESCRIPTION
An authentication provider for L<Dancer::Plugin::Auth::Extensible> which
authenticates Linux/Unix system accounts.
Uses L<Unix::Passwd::File> to read user details, and L<Authen::Simple::PAM> to
perform authentication via PAM.
The C<get_user_details> call for this provider will return information from the
C<passwd> file - expect C<gecos>, C<gid>, C<uid>, C<home>, C<shell>, C<uid>.
Unix group membership is used as a reasonable facsimile for roles - this seems
sensible.
=cut
sub authenticate_user {
my ($class, $username, $password) = @_;
my $pam = Authen::Simple::PAM->new( service => 'login' );
return $pam->authenticate($username, $password);
}
sub get_user_details {
my ($class, $username) = @_;
my $result = Unix::Passwd::File::get_user(
user => $username
);
return if $result->[0] != 200;
return $result->[2];
}
sub get_user_roles {
my ($class, $username) = @_;
my $result = Unix::Passwd::File::get_user_groups(user => $username);
return if $result->[0] != 200;
return $result->[2];
}
1;
|