Lemonldap-Handlers-CAS

 view release on metacpan or  search on metacpan

lib/Lemonldap/Handlers/LoginCASLDAPFake.pm  view on Meta::CPAN

         'departement',
	  'grade',
	  'fonction',
	  );
	for( @T ) {
	  $session{"$_"} = $entry->get_value("$_") ;
         }
$self->{infosession} = \%session;

}

sub handler {
    my $r = shift;
    my $Stack_User;
    $log = $r->log;
    ###  1 tester le TGT  cookie
    my $entete2 = $r->headers_in();

    #Recuperation du Cookie
    my $idx_tmp      = $entete2->{'Cookie'};
    my $local_cookie = "CASTGC";
    my @tab          = split /;/, $idx_tmp;
    my $cookie;
    my $idrecup;
    my @base;
    foreach (@tab) {
        if (/$local_cookie=([^; ]+)/) {
            $cookie = $_;
        }
    }
    if ($cookie) {
        ($idrecup) = $cookie =~ /TGT-(.+)/;
    }

    if ( $Stack_User->{'AlreadyCreated'} ) {
        undef $Stack_User->{'error'};
    }
    else {
        $log                  = $r->log;
        $MyApplicationXmlFile = $r->dir_config('ConfigFile');
        $MyDomain             = lc( $r->dir_config('Domain') );
        $LoginPage            = $r->dir_config('LoginPage');
        $Major                = $r->dir_config('Organization');
        if ( !defined($Major) ) {
            $Major = "authz_headers";
        }
        $Parameters =
          Lemonldap::Config::Parameters->new( file => $MyApplicationXmlFile, );
        $Conf_Domain = $Parameters->getDomain($MyDomain);
        $Login_Url   = $Conf_Domain->{Portal};
        $Cookie_Name = $Conf_Domain->{Cookie};
        $page_html   = $Conf_Domain->{LoginCASPage};

################  enlevver ca ################

##############################################
        if ( !$html ) {
            my $file;
            open( $file, "<$page_html" );
            local $/;
            $/    = '';
            $html = <$file>;
            close $file;
        }

        $Ldap_Server        = $Conf_Domain->{ldap_server};
        $Ldap_Branch_People = $Conf_Domain->{ldap_branch_people};
        $Ldap_Dn_Manager    = $Conf_Domain->{DnManager};
        $Ldap_Pass_Manager  = $Conf_Domain->{passwordManager};
        $Ldap_Port          = $Conf_Domain->{ldap_port};
        $Ldap_Search_Bases  = $Ldap_Branch_People;
        if ( defined( $r->dir_config('LdapSearchBases') ) ) {
            $Ldap_Search_Bases =
              $r->dir_config('LdapSearchBases') . ":" . $Ldap_Search_Bases;
        }
        @base = split( /\s*:\s*/, $Ldap_Search_Bases );
        $MemcachedServer =
          $Parameters->formateLineHash(
            $Parameters->findParagraph( 'session', 'memcached' )
              ->{SessionParams} );
        $CookieName = $Conf_Domain->{Cookie};
        my $_username;
        $line_session = $Conf_Domain->{DefinitionSession};
        $Stack_User   = Lemonldap::Portal::Standard->new(
            'msg'            => $Messages,
            'setSessionInfo' => \&My_Session,
        );

        $Stack_User->{'AlreadyCreated'} = "true";
        $Stack_User->{line_session} = $line_session;

    }
    # compatibilité encore meilleure  avec lemonldap
    if (!$idrecup) {
    my $lemon_cookie = $CookieName;
    foreach (@tab) {
        if (/$lemon_cookie=([^; ]+)/) {
            $cookie = $_;
        }
    }
    if ($cookie) {
      ($idrecup) = ~ /=(.+)/;
	}
    }


    
    
    
    if ($idrecup) {    ## test itupon memcached
        my %_it;
        tie %_it, 'Apache::Session::Memorycached', $idrecup, $MemcachedServer;
        if ( $_it{username} ) {    # il n existe pas :
            $_username = $_it{username};
        }
        untie %_it;
    }

    my $UrlCode;
    my $UrlDecode;
    my $Erreur;



( run in 4.069 seconds using v1.01-cache-2.11-cpan-5e09290becf )