Lemonldap-NG-Portal

 view release on metacpan or  search on metacpan

lib/Lemonldap/NG/Portal/Lib/SAML.pm  view on Meta::CPAN

        $self->checkLassoError($@);
        return;
    }

    my $content = $value;

    # If a string was provided, wrap it in a TextNode
    if ( !ref($content) ) {

        # Decode UTF-8
        $self->logger->debug("Decode UTF8 value $value") if $force_utf8;
        $value = decode( "utf8", $value )                if $force_utf8;
        $self->logger->debug("Create attribute value $value");

        eval { $content = Lasso::MiscTextNode->new(); };
        if ($@) {
            $self->checkLassoError($@);
            return;
        }
        $content->text_child(1);
        $content->content($value);
    }

    $saml2value->any($content);

    return $saml2value;
}

## @method int getEncryptionMode(string encryption_mode)
# Return Lasso encryption mode
# @param encryption_mode Encryption mode string
# @return Lasso encryption mode
sub getEncryptionMode {
    my ( $self, $encryption_mode ) = @_;

    return Lasso::Constants::ENCRYPTION_MODE_NAMEID
      if ( $encryption_mode =~ /^nameid$/i );
    return Lasso::Constants::ENCRYPTION_MODE_ASSERTION
      if ( $encryption_mode =~ /^assertion$/i );
    return Lasso::Constants::ENCRYPTION_MODE_NONE;
}

## @method boolean setProviderEncryptionMode(Lasso::Provider provider, int encryption_mode)
# Set encryption mode on a provider
# @param provider Lasso::Provider object
# @param encryption_mode Lasso encryption mode
# @return result
sub setProviderEncryptionMode {
    my ( $self, $provider, $encryption_mode ) = @_;

    eval {
        Lasso::Provider::set_encryption_mode( $provider, $encryption_mode );
    };

    return $self->checkLassoError($@);

}

## @method boolean updateSAMLSecondarySessions(string old_session_id, string new_session_id)
# Update _saml_id of secondary sessions when the session ID is changed (upgrade)
sub updateSAMLSecondarySessions {
    my ( $self, $req, $old_session_id, $new_session_id ) = @_;

    # Find SAML sessions
    my $saml_sessions =
      Lemonldap::NG::Common::Apache::Session->searchOn( $self->amOpts,
        "_saml_id", $old_session_id );

    if (
        my @saml_sessions_keys =
        grep { $saml_sessions->{$_}->{_session_kind} eq $self->sessionKind }
        keys %$saml_sessions
      )
    {

        foreach my $saml_session (@saml_sessions_keys) {

            # Get session
            $self->logger->debug("Retrieve SAML session $saml_session");

            my $samlSessionInfo = $self->getSamlSession($saml_session);

            # Update session
            if ($samlSessionInfo) {
                $samlSessionInfo->update( { '_saml_id' => $new_session_id } );
            }
        }
    }
    return;
}

## @method boolean deleteSAMLSecondarySessions(string session_id)
# Find and delete SAML sessions bounded to a primary session
# @param session_id Primary session ID
# @return result
sub deleteSAMLSecondarySessions {
    my ( $self, $session_id ) = @_;
    my $result = 1;

    # Find SAML sessions
    my $saml_sessions =
      Lemonldap::NG::Common::Apache::Session->searchOn( $self->amOpts,
        "_saml_id", $session_id );

    if (
        my @saml_sessions_keys =
        grep { $saml_sessions->{$_}->{_session_kind} eq $self->sessionKind }
        keys %$saml_sessions
      )
    {

        foreach my $saml_session (@saml_sessions_keys) {

            # Get session
            $self->logger->debug("Retrieve SAML session $saml_session");

            my $samlSessionInfo = $self->getSamlSession($saml_session);

            # Delete session
            if ( $samlSessionInfo->remove ) {
                $self->logger->debug("SAML session $saml_session deleted");



( run in 0.560 second using v1.01-cache-2.11-cpan-ceb78f64989 )