Concierge-Auth
view release on metacpan or search on metacpan
examples/06-file-management.pl view on Meta::CPAN
#!/usr/bin/env perl
=head1 NAME
06-file-management.pl - Authentication file management example
=head1 DESCRIPTION
Demonstrates file operations, backup management, and multi-file
authentication scenarios using Concierge::Auth.
=cut
use strict;
use warnings;
use Concierge::Auth;
use File::Temp qw(tempdir tempfile);
use File::Spec;
print "=== File Management Examples ===\n\n";
# Create temporary directory for demo files
my $temp_dir = tempdir(CLEANUP => 1);
print "Working in temporary directory: $temp_dir\n\n";
print "--- Basic File Operations ---\n";
# Create primary auth file
my $primary_file = File::Spec->catfile($temp_dir, 'primary_users.db');
my $auth1 = Concierge::Auth->new({file => $primary_file});
print "Created primary auth file: " . $auth1->pfile() . "\n";
print "Field separator: '" . $auth1->psep() . "'\n";
# Add some users to primary file
my @primary_users = (
['alice', 'password123'],
['bob', 'secure_pass'],
['charlie', 'strong_password']
);
print "\nPopulating primary file:\n";
for my $user_data (@primary_users) {
my ($username, $password) = @$user_data;
my ($success, $message) = $auth1->setPwd($username, $password);
printf " %-10s: %s\n", $username, $success ? "â added" : "â failed";
}
print "\n--- Alternative Separators ---\n";
# Create auth file with pipe separator
my $pipe_file = File::Spec->catfile($temp_dir, 'pipe_users.db');
my $auth2 = Concierge::Auth->new({file => $pipe_file, sep => '|'});
print "Created pipe-separated file: " . $auth2->pfile() . "\n";
print "Field separator: '" . $auth2->psep() . "'\n";
# Add users to pipe-separated file
for my $user_data (@primary_users) {
my ($username, $password) = @$user_data;
$auth2->setPwd($username, $password);
}
# Create auth file with comma separator
my $csv_file = File::Spec->catfile($temp_dir, 'csv_users.db');
my $auth3 = Concierge::Auth->new({file => $csv_file, sep => ','});
print "Created comma-separated file: " . $auth3->pfile() . "\n";
print "Field separator: '" . $auth3->psep() . "'\n";
examples/06-file-management.pl view on Meta::CPAN
=item * B<Switching> - Change files on existing auth objects
=item * B<Validation> - Check file existence and readability
=item * B<Clearing> - Remove all users while keeping file
=item * B<Removal> - Delete file completely
=back
=head2 Security Features
=over 4
=item * Files created with restrictive permissions (0600)
=item * Atomic file operations with locking
=item * Backup file cleanup
=item * Safe in-place editing
=back
=head1 MULTI-FILE PATTERNS
=head2 Role-Based Separation
my %auth_systems = (
users => Concierge::Auth->new({file => 'users.db'}),
admins => Concierge::Auth->new({file => 'admins.db'}),
api => Concierge::Auth->new({file => 'api_keys.db'})
);
=head2 Environment Separation
my $env = $ENV{APP_ENV} || 'development';
my $auth = Concierge::Auth->new({
file => "users_$env.db"
});
=head2 Application Separation
my %apps = (
web => Concierge::Auth->new({file => 'web_users.db'}),
mobile => Concierge::Auth->new({file => 'mobile_users.db'}),
cli => Concierge::Auth->new({file => 'cli_users.db'})
);
=head1 BEST PRACTICES
=over 4
=item * Use absolute paths for auth files
=item * Place auth files outside web-accessible directories
=item * Use restrictive directory permissions (0700)
=item * Implement regular backup strategies
=item * Monitor file access and modifications
=item * Use separate files for different security levels
=back
=head1 SEE ALSO
L<Concierge::Auth>, 07-error-handling.pl, 04-session-management.pl
=cut
( run in 0.963 second using v1.01-cache-2.11-cpan-df04353d9ac )