package Lemonldap::NG::Portal::Plugins::ForceAuthn;

use strict;
use Mouse;
use Lemonldap::NG::Portal::Main::Constants qw(PE_OK PE_MUSTAUTHN);

our $VERSION = '2.0.0';

extends 'Lemonldap::NG::Portal::Main::Plugin';

# INITIALIZATION

use constant forAuthUser => 'run';

sub init { 1 }

# RUNNING METHOD

sub run {
    my ( $self, $req ) = @_;
    if (    $req->env->{HTTP_HOST}
        and $self->conf->{portal} =~ /\Q$req->{env}->{HTTP_HOST}/ )
    {
        my $delta = time() - $req->{sessionInfo}->{_utime};
        $self->logger->debug( "Delta with last Authn -> " . $delta );

        $delta <= $self->conf->{portalForceAuthnInterval}
          ? return PE_OK
          : return PE_MUSTAUTHN;
    }
}

1;
