Concierge-Sessions
view release on metacpan or search on metacpan
lib/Concierge/Sessions/File.pm view on Meta::CPAN
my ($class, %args) = @_;
my $self = $class->SUPER::new(%args);
$self->{storage_dir} = $args{storage_dir} || '/tmp/sessions';
unless (-d $self->{storage_dir}) {
unless (mkdir $self->{storage_dir}) {
croak "Failed to create storage directory '$self->{storage_dir}': $!";
}
}
unless (chmod 0700, $self->{storage_dir}) {
croak "Failed to set permissions on storage directory '$self->{storage_dir}': $!";
}
return $self;
}
sub create_session {
my ($self, %args) = @_;
return { success => 0, message => "Cannot create session without user_id" }
lib/Concierge/Sessions/File.pm view on Meta::CPAN
my $session_id = $self->generate_session_id();
my $session_file = File::Spec->catfile($self->{storage_dir}, $session_id);
# Write over session file if it already exists (unlikely)
my $fh;
unless (open $fh, '>', $session_file) {
return { success => 0, message => "Cannot create session file: $!" };
}
unless (chmod 0600, $session_file) {
close $fh;
return { success => 0, message => "Cannot set session file permissions: $!" };
}
# Build session_info structure
my $now = time();
# Handle session timeout: 'indefinite' or numeric value in seconds
my $timeout = $args{session_timeout} || $self->{session_timeout};
my $expiration;
( run in 1.467 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )