/**
 * Action de déplacement de saisies dans le constructeur de formulaires
 *
 * @return void
**/
function action_deplacer_saisie_dist()
{
    include_spip('inc/session');
    $session = _request('session');
    $identifiant = _request('saisie');
    $ou = _request('ou');
    // On récupère le formulaire à son état actuel
    $formulaire_actuel = session_get($session);
    if (!$formulaire_actuel) {
        return '';
    }
    include_spip('inc/saisies');
    $saisies_actuelles = saisies_lister_par_identifiant($formulaire_actuel);
    if (!isset($saisies_actuelles[$identifiant])) {
        return '';
    }
    // tester @id et [@id] (fieldset)
    if ($ou and !isset($saisies_actuelles[$ou]) and !isset($saisies_actuelles[substr($ou, 1, -1)])) {
        return '';
    }
    // on deplace ou c'est demande...
    $formulaire_actuel = saisies_deplacer($formulaire_actuel, $identifiant, $ou);
    // On sauve tout ca
    $formulaire_actuel = session_set($session, $formulaire_actuel);
}
예제 #2
0
/**
 * Form token validation
 * @param  array $validations The array of validation rules
 * @return void
 */
function form_validate($validations = null)
{
    if (!isset($_POST['lc_formToken_' . _cfg('formTokenName')])) {
        Validation::addError('', _t('Invalid form token.'));
        return false;
    }
    $token = _decrypt(session_get(_cfg('formTokenName')));
    $postedToken = _decrypt(_post($_POST['lc_formToken_' . _cfg('formTokenName')]));
    $result = false;
    # check token first
    if ($token == $postedToken) {
        # check referer if it is requesting in the same site
        if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] && _cfg('siteDomain')) {
            $siteDomain = _cfg('siteDomain');
            $siteDomain = preg_replace('/^www\\./', '', $siteDomain);
            $parsedURL = parse_url($_SERVER['HTTP_REFERER']);
            $parsedURL['host'] = preg_replace('/^www\\./', '', $parsedURL['host']);
            if (strcasecmp($siteDomain, $parsedURL['host']) == 0) {
                $result = true;
            }
        }
    }
    if ($result == false) {
        Validation::addError('', _t('Error occured during form submission. Please refresh the page to try again.'));
        return false;
    }
    if ($validations && Validation::check($validations) === false) {
        return false;
    }
    return true;
}
예제 #3
0
 function XedReplaceForm()
 {
     parent::MailForm();
     $this->parseSettings('inc/app/xed/forms/replace/settings.php');
     $this->widgets['find']->setValue(session_get('xed_source_find'));
     $this->widgets['replace']->setValue(session_get('xed_source_replace'));
 }
function formulaires_editer_champs_extras_traiter_dist($objet, $redirect = '')
{
    $retour = array('redirect' => $redirect);
    $table = table_objet_sql($objet);
    include_spip('inc/iextras');
    $saisies = iextras_champs_extras_definis($table);
    $nouvelles_saisies = session_get('constructeur_formulaire_champs_extras_' . $table);
    $diff = saisies_comparer_par_identifiant($saisies, $nouvelles_saisies);
    $extras = array();
    include_spip('inc/cextras');
    // supprimer les champs supprimes
    champs_extras_supprimer($table, $diff['supprimees']);
    // ajouter les nouveaux champs;
    champs_extras_creer($table, $diff['ajoutees']);
    // modifier les champs modifies;
    if ($diff['modifiees']) {
        $anciennes = saisies_lister_par_identifiant($saisies);
        $anciennes = array_intersect_key($anciennes, $diff['modifiees']);
        champs_extras_modifier($table, $diff['modifiees'], $anciennes);
    }
    # champs_extras_modifier($table, # modifiees nouvelles, # modifiees anciennes);
    ecrire_meta("champs_extras_" . $table, serialize($nouvelles_saisies));
    $retour['message_ok'] = 'Super !';
    return $retour;
}
예제 #5
0
 public function testSessions()
 {
     $expected = "Session var " . rand();
     session_set('my_sess_var', $expected);
     $session_var = session_get('my_sess_var');
     $this->assertEquals($session_var, $expected);
 }
예제 #6
0
/**
 * Un parametre permet de forcer le statut (exemple: plugin antispam)
 *
 * http://code.spip.net/@inc_forum_insert_dist
 *
 * @param $objet
 * @param $id_objet
 * @param $id_forum
 *   en reponse a
 * @param null $force_statut
 * @return bool
 */
function inc_forum_insert_dist($objet, $id_objet, $id_forum, $force_statut = null)
{
    if (!in_array($force_statut, array('privrac', 'privadm'))) {
        if (!strlen($objet) or !intval($id_objet)) {
            spip_log("Erreur insertion forum sur objet='{$objet}', id_objet={$id_objet}", 'forum.' . _LOG_ERREUR);
            return 0;
        }
    }
    spip_log("insertion de forum {$force_statut} sur {$objet} {$id_objet} (+{$id_forum})", 'forum');
    include_spip('inc/filtres');
    include_spip('inc/modifier');
    include_spip('inc/session');
    $champs = objet_info('forum', 'champs_editables');
    $c = collecter_requests($champs, array());
    $c['statut'] = 'off';
    $c['objet'] = $objet;
    $c['id_objet'] = $id_objet;
    $c['auteur'] = sinon(session_get('nom'), session_get('session_nom'));
    $c['email_auteur'] = sinon(session_get('email'), session_get('session_email'));
    $c = pipeline('pre_edition', array('args' => array('table' => 'spip_forum', 'id_objet' => $id_forum, 'action' => 'instituer'), 'data' => forum_insert_statut($c, $force_statut)));
    $id_reponse = forum_insert_base($c, $id_forum, $objet, $id_objet, $c['statut'], _request('ajouter_mot'));
    if (!$id_reponse) {
        spip_log("Echec insertion forum sur {$objet} {$id_objet} (+{$id_forum})", 'forum.' . _LOG_ERREUR);
    } else {
        spip_log("forum insere' {$id_reponse} sur {$objet} {$id_objet} (+{$id_forum})", 'forum');
    }
    return $id_reponse;
}
예제 #7
0
/**
 * Shows a notice (e.g., "Item deleted.") if one is set.
 */
function cms_alert()
{
    if (!cms_is_alert()) {
        return '';
    }
    $notice = session_get('sitellite_alert');
    session_set('sitellite_alert', null);
    return template_simple('alert.spt', array('msg' => $notice));
}
예제 #8
0
 static function restoreFromSession()
 {
     if (($message = session_get('flashMessage')) && ($type = session_get('flashMessageType'))) {
         $GLOBALS['flashMessage'] = $message;
         // Already has a trailing <br/>
         $GLOBALS['flashMessageType'] = $type;
         session_unsetVariable('flashMessage');
         session_unsetVariable('flashMessageType');
     }
 }
예제 #9
0
 private static function isLogin()
 {
     if (!($userid = session_get('USERID'))) {
         if (Request::isAjax()) {
             exit(json_encode(array('code' => -1, 'msg' => 'please login')));
         } else {
             exit(app::run(array('home', 'page', 'login')));
         }
     }
     return $userid;
 }
예제 #10
0
/**
The permission engine.

This function decides wether a specific function is allowed or not
depending the rights of the current user.

@param $dir	Directory in which  the action should happen. If this parameter is
		NULL the engine relys on the global permissions of the user.
		
@param $file	File on which the action should happen, if this parameter is NULL
		the permission engine relys on the permission of the directory.

@param $action
		One ore more action of the action set (see permissions_get) which sould
		be exectuted.
		More actions are seperated by a &.
		
		Example:

		"read&write&password" grants only if user has all three permissions

@return	true if the action is granted, false otherwise

@remarks	Until now the permission engine does not support directory or
		file based actions, so only the global actions are treated. The paramers
		$dir and $file are ignored. This is for later use. However, if possible,
		provide the $dir and $file parameters so the code does not have to
		be chaned if the permission engine will support this features in
		the future.
*/
function permissions_grant($dir, $file, $action)
{
    // determine if a user has logged in
    $user = session_get("s_user");
    // if no user is logged in, use the global permissions
    if (!isset($user)) {
        return permissions_global($dir, $file, $action);
    }
    // check if the user currently logged in has the given rights
    return permissions_grant_user($user, $dir, $file, $action);
}
예제 #11
0
/**
 * Cette notification s'exécute quand on valide un message 'prop'osé.
 *
 * On va notifier ceux qui ne l'ont
 * pas été à la notification forumposte (sachant que les deux peuvent se
 * suivre si le forum est validé directement ('pos' ou 'abo')
 *
 * @pipeline_appel notifications_destinataires
 * @see inc/forum_insert.php
 *
 * @param string $quoi
 * @param int $id_forum
 * @param array $options
 */
function notifications_forumvalide_dist($quoi, $id_forum, $options)
{
    $t = sql_fetsel("*", "spip_forum", "id_forum=" . intval($id_forum));
    if (!$t or @$t['statut'] == 'perso') {
        return;
    }
    // plugin notification si present
    $prevenir_auteurs = isset($GLOBALS['notifications']['prevenir_auteurs']) and $GLOBALS['notifications']['prevenir_auteurs'];
    // sinon voie normale
    if ($t['objet'] == 'article' and !$prevenir_auteurs) {
        $s = sql_getfetsel('accepter_forum', 'spip_articles', "id_article=" . $t['id_objet']);
        if (!$s) {
            $s = substr($GLOBALS['meta']["forums_publics"], 0, 3);
        }
        $prevenir_auteurs = (strpos(@$GLOBALS['meta']['prevenir_auteurs'], ",{$s},") !== false or @$GLOBALS['meta']['prevenir_auteurs'] === 'oui');
        // compat
    }
    include_spip('inc/texte');
    include_spip('inc/filtres');
    include_spip('inc/autoriser');
    include_spip('inc/session');
    // Qui va-t-on prevenir ?
    $tous = array();
    // Ne pas ecrire au posteur du message, ni au moderateur qui valide le forum,
    $pasmoi = array_filter(array($t['email_auteur'], session_get('email')));
    // 1. Les auteurs de l'objet lie au forum
    // seulement ceux qui n'ont
    // pas le droit de le moderer (les autres l'ont recu plus tot)
    if ($prevenir_auteurs) {
        $result = sql_select("auteurs.*", "spip_auteurs AS auteurs, spip_auteurs_liens AS lien", "lien.objet=" . sql_quote($t['objet']) . " AND lien.id_objet=" . intval($t['id_objet']) . " AND auteurs.id_auteur=lien.id_auteur");
        while ($qui = sql_fetch($result)) {
            if ($qui['email']) {
                if (!autoriser('modererforum', $t['objet'], $t['id_objet'], $qui['id_auteur'])) {
                    $tous[] = $qui['email'];
                } else {
                    $pasmoi[] = $qui['email'];
                }
            }
        }
    }
    $options['forum'] = $t;
    $destinataires = pipeline('notifications_destinataires', array('args' => array('quoi' => $quoi, 'id' => $id_forum, 'options' => $options), 'data' => $tous));
    // Nettoyer le tableau
    // en enlevant les exclus
    notifications_nettoyer_emails($destinataires, $pasmoi);
    //
    // Envoyer les emails
    //
    $email_notification_forum = charger_fonction('email_notification_forum', 'inc');
    foreach ($destinataires as $email) {
        $texte = $email_notification_forum($t, $email);
        notifications_envoyer_mails($email, $texte);
    }
}
예제 #12
0
/**
 * Action effectuant 1 action dans la liste des actions à réaliser
 * sur les plugins.
 *
 * Cette action sera relancée tant qu'il reste des actions à faire
 */
function action_actionner_dist()
{
    // droits
    include_spip('inc/autoriser');
    if (!autoriser('configurer', '_plugins')) {
        include_spip('inc/minipres');
        echo minipres();
        exit;
    }
    include_spip('inc/svp_actionner');
    include_spip('inc/headers');
    $actionneur = new Actionneur();
    $actionneur->get_actions();
    if ($actionneur->one_action()) {
        // si SVP a été enlevé des actifs, on redirige sur la fin...
        // sinon cette page d'action/actionner devient introuvable.
        // dans ce cas précis, les autres actions prévues venant après la desactivation de SVP
        // ne pourront être traitees... SVP n'étant plus là !
        if ($actionneur->tester_si_svp_desactive()) {
            $url = _request('redirect');
        } else {
            $url = generer_action_auteur('actionner', '', _request('redirect'));
        }
        // en mode pas à pas, on affiche un bilan entre chaque action
        // et on demande a l'utilistateur de cliquer pour realiser
        // l'action suivante.
        include_spip('inc/config');
        if (lire_config('svp/mode_pas_a_pas') == 'oui') {
            include_spip('inc/minipres');
            $pres = $actionneur->presenter_actions();
            $btn = "<a href='{$url}'>[ Action Suivante ]</a>";
            $styles = "\n\t\t\t\t<style type='text/css'>\n\t\t\t\t#minipres #actionner .fail {color:#c30000;}\n\t\t\t\t#minipres #actionner ul {margin-left: 0.5em;}\n\t\t\t\t#minipres #actionner li {list-style-type:square; margin-left: 0.5em;}\n\t\t\t\t</style>";
            echo minipres(_T('svp:installation_en_cours'), $pres . '<br /><br />' . $btn . $styles);
            die;
        }
        redirige_par_entete(str_replace('&amp;', '&', $url));
    }
    foreach ($actionneur->done as $done) {
        if ($done['todo'] == 'on') {
            if ($voir = session_get('svp_admin_plugin_voir') and $voir == 'inactif') {
                session_set('svp_admin_plugin_voir', 'actif');
            }
            break;
        }
    }
    include_spip('inc/svp_depoter_local');
    svp_actualiser_paquets_locaux();
    if (!_request('redirect')) {
        $GLOBALS['redirect'] = generer_url_ecrire('admin_plugin');
    } else {
        $GLOBALS['redirect'] = str_replace('&amp;', '&', _request('redirect'));
    }
}
예제 #13
0
 /**
  * ### Verifies the given CSRF-Token against the session token
  *
  * @return bool
  */
 public static function verifyCSRF()
 {
     if (getenv('CSRF_EVERYWHERE')) {
         $given = Input::get('csrf-token');
         $set = session_get('csrf_token');
         if ($given === $set) {
             return true;
         }
     } else {
         return true;
     }
     return false;
 }
예제 #14
0
/**
 * Surcharge plugin panier/action/remplir_panier.php
 * ajout du numéro de départ d'abonnement
 */
function action_remplir_panier($arg = null)
{
    if (is_null($arg)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
    }
    // le numero en cours
    $num_encours = sql_fetsel("reference", "spip_produits", "statut = 'publie' AND id_rubrique = '2' AND reference LIKE '%v%'", "", "reference DESC");
    $num_encours = str_replace("v", "", $num_encours);
    // On récupère les infos de l'argument
    @(list($objet, $id_objet, $quantite, $numero) = explode('-', $arg));
    if ($objet == 'produit') {
        $numero = '-1';
    }
    if ($objet == 'abonnement') {
        if (intval($numero) <= 0) {
            $numero = intval($num_encours);
            if (_DEBUG_VACARME) {
                spip_log("action remplir panier {$objet} {$id_objet} {$numero} : numero inférieur ou égal à zéro", 'vacarme_debug');
            }
        }
    }
    $id_objet = intval($id_objet);
    $quantite = intval($quantite) ? intval($quantite) : 1;
    // Il faut cherche le panier du visiteur en cours
    include_spip('inc/session');
    $id_panier = session_get('id_panier');
    // S'il n'y a pas de panier, on le crée
    if (!$id_panier) {
        include_spip('inc/paniers');
        $id_panier = paniers_creer_panier();
    }
    // On ne fait que s'il y a bien un panier existant et un objet valable
    if ($id_panier > 0 and $objet and $id_objet and $numero) {
        // Il faut maintenant chercher si cet objet précis est *déjà* dans le panier
        $quantite_deja = intval(sql_getfetsel('quantite', 'spip_paniers_liens', array('id_panier = ' . $id_panier, 'objet = ' . sql_quote($objet), 'id_objet = ' . $id_objet, 'numero =' . $numero)));
        //spip_log('quantite deja ='.$quantite_deja,'ajoutpanier');
        // Si on a déjà une quantité, on fait une mise à jour
        if ($quantite_deja > 0) {
            sql_updateq('spip_paniers_liens', array('quantite' => $quantite_deja + $quantite), 'id_panier = ' . $id_panier . ' and objet = ' . sql_quote($objet) . ' and id_objet = ' . $id_objet . ' and numero = ' . $numero);
        } else {
            sql_insertq('spip_paniers_liens', array('id_panier' => $id_panier, 'objet' => $objet, 'id_objet' => $id_objet, 'quantite' => $quantite, 'numero' => $numero));
        }
        // le numéro de départ d'un abonnement
        /*if ($objet == 'abonnement') {
             sql_updateq('spip_paniers_liens',array('numero' => $numero),'id_panier = '.$id_panier.' and id_objet ='.$id_objet);
          }*/
        // Mais dans tous les cas on met la date du panier à jour
        sql_updateq('spip_paniers', array('date' => 'NOW()'), 'id_panier = ' . $id_panier);
    }
}
예제 #15
0
function session_restore_messages()
{
    if (!session_exists()) {
        return false;
    }
    $messages = session_get('wfpl_messages');
    if ($messages !== false) {
        $messages = string_to_array($messages);
        if (!(isset($GLOBALS['wfpl_messages']) && is_array($GLOBALS['wfpl_messages']))) {
            $GLOBALS['wfpl_messages'] = array();
        }
        # messages from the previous run happened first
        $GLOBALS['wfpl_messages'] = array_merge($messages, $GLOBALS['wfpl_messages']);
    }
    session_clear('wfpl_messages');
}
예제 #16
0
 private function initUserData()
 {
     # set marker to init the plugin session vars in case there weren't any available
     if (!@session_get_string('plugin_mite_status_session_vars')) {
         session_set('plugin_mite_status_session_vars', 'init');
     }
     # initialize the plugin session vars if marked as such
     if (session_get_string('plugin_mite_status_session_vars') == 'init' || session_get_string('plugin_mite_status_session_vars') == 'reinit') {
         $this->initSessionVars();
         session_set('plugin_mite_status_session_vars', 'isCurrent');
     }
     # init instance properties
     $this->a_projects = $this->decodeAndOrderByValue(session_get('plugin_mite_user_projects'), 'name');
     $this->a_services = $this->decodeAndOrderByValue(session_get('plugin_mite_user_services'), 'name');
     $this->a_bindings = session_get('plugin_mite_user_bindungs');
 }
예제 #17
0
 function remove($name, $primary_id, $foreign_id, $table, $field1, $field2)
 {
     if (!$primary_id || $primary_id == 'false') {
         $list = session_get($name . '_joiner');
         if (!is_array($list)) {
             $list = array();
         }
         foreach ($list as $k => $v) {
             if ($v == $foreign_id) {
                 unset($list[$k]);
             }
         }
         session_set($name . '_joiner', $list);
         return true;
     }
     return db_execute(sprintf('delete from %s where %s = ? and %s = ?', $table, $field1, $field2), $primary_id, $foreign_id);
 }
예제 #18
0
 public function login_success()
 {
     $args = get_login_args();
     if ($this->session->userdata('pinet_args')) {
         // If the session has the args, use it
         $args = $this->session->userdata('pinet_args');
         $args = json_decode($args);
         session_del('pinet_args');
     }
     $token = session_get('pinet_token');
     $args->token = $token;
     $query = array();
     foreach ($args as $k => $v) {
         if (!in_array($k, array('callback', 'oauth_details'))) {
             $query[] = $k . '=' . $v;
         }
     }
     redirect($args->callback . '?' . implode('&', $query));
 }
 public function testForSessionDelete()
 {
     // 1.
     session_delete('name');
     $this->assertNull(session_get('name'));
     // 2.
     session_delete('foo');
     $this->assertNull(session_get('foo'));
     // 3.
     session_delete('animals');
     $this->assertNull(session_get('animals'));
     // 4.
     session_delete('user.fullName');
     session_delete('user.address.street.room');
     session_delete('user.address.zip');
     $this->assertEqual(session_get('user'), array('firstName' => 'Sithu', 'lastName' => 'Kyaw', 'age' => 31, 'phone' => '123456', 'address' => array('street' => array('no' => 1, 'street' => 'Main Street'), 'city' => 'Yangon', 'country' => 'Myanmar')));
     // 5.
     session_delete('user');
     $this->assertNull(session_get('user'));
 }
예제 #20
0
/**
 * Validate the security token for the given form name based on tokens
 * stored in the user's session.  While checking stored tokens, any that
 * are more than 3 days old will be purged.
 * @param string Form name
 * @return boolean Form is valid
 */
function form_security_validate($p_form_name)
{
    $t_tokens = session_get('form_security_tokens', array());
    # Short-circuit if we don't have any tokens for the given form name
    if (!isset($t_tokens[$p_form_name]) || !is_array($t_tokens[$p_form_name]) || count($t_tokens[$p_form_name]) < 1) {
        trigger_error(ERROR_FORM_TOKEN_INVALID, ERROR);
        return false;
    }
    # Get the form input
    $t_form_token = $p_form_name . '_token';
    $t_input = gpc_get_string($t_form_token, '');
    # No form input
    if ('' == $t_input) {
        trigger_error(ERROR_FORM_TOKEN_INVALID, ERROR);
        return false;
    }
    # Generate a date string of three days ago
    $t_date = date('Ymd', time() - 3 * 24 * 60 * 60);
    # Check all stored security tokens, purging old ones as necessary
    $t_tokens_kept = array();
    $t_valid = false;
    foreach ($t_tokens[$p_form_name] as $t_token) {
        $t_token_date = substr($t_token, 0, 8);
        # Newer than three days, check for match, keep otherwise
        if ($t_date < $t_token_date) {
            if ($t_token == $t_input) {
                $t_valid = true;
            } else {
                $t_tokens_kept[] = $t_token;
            }
        }
    }
    # Store only the unpurged tokens in the session
    $t_tokens[$p_form_name] = $t_tokens_kept;
    session_set('form_security_tokens', $t_tokens);
    if (!$t_valid) {
        trigger_error(ERROR_FORM_TOKEN_INVALID, ERROR);
    }
    return $t_valid;
}
<?php

require_once "../../phplib/util.php";
util_assertNotMirror();
util_assertNotLoggedIn();
$error = util_getRequestParameter('error');
$errorDescription = util_getRequestParameter('error_description');
$code = util_getRequestParameter('code');
$state = util_getRequestParameter('state');
$provider = session_get('openid_connect_provider');
try {
    $oidc = new OpenIDConnect($provider);
    if ($error) {
        throw new OpenIDException($errorDescription);
    }
    if (!$code || !$state || $state != session_get('openid_connect_state')) {
        throw new OpenIDException('Răspuns incorect de la server');
    }
    if (!$provider) {
        throw new OpenIDException('Sesiune coruptă');
    }
    $token = $oidc->requestToken($code);
    $data = $oidc->getUserInfo($token);
    if (!isset($data['sub'])) {
        throw new OpenIDException('Date incorecte de la furnizor');
    }
} catch (OpenIDException $e) {
    FlashMessage::add('Eroare la autentificare: ' . $e->getMessage());
    util_redirect('login.php');
}
// With OpenID connect, the user is uniquely identified by (provider, sub).
예제 #22
0
    ?>
> <a href="<?php 
    print admin_url();
    ?>
view:settings"> <span class="mw-icon-gear " style="font-size: 24px;"></span> <strong>
                  <?php 
    _e("Settings");
    ?>
                  </strong> </a> </li>
                  <li id="main-menu-toggle"> <a href="javascript:;"><span class="mw-icon-menu"></span></a> </li>
                </ul>
      </li>
            </ul>
    <?php 
    $past_page = site_url() . '?editmode=y';
    $last_page_front = session_get('last_content_id');
    if ($last_page_front == false) {
        if (isset($_COOKIE['last_page'])) {
            $last_page_front = $_COOKIE['last_page'];
        }
    }
    if ($last_page_front != false) {
        $cont_by_url = mw()->content_manager->get_by_id($last_page_front, true);
        if (isset($cont_by_url) and $cont_by_url == false) {
            $past_page = mw()->content_manager->get("order_by=updated_at desc&limit=1");
            $past_page = mw()->content_manager->link($past_page[0]['id']);
        } else {
            $past_page = mw()->content_manager->link($last_page_front);
        }
    } else {
        $past_page = mw()->content_manager->get("order_by=updated_at desc&limit=1");
예제 #23
0
/**
 * Initialize the appropriate session handler.
 * @param string Session ID
 */
function session_init( $p_session_id=null ) {
	global $g_session, $g_session_handler;

	switch( utf8_strtolower( $g_session_handler ) ) {
		case 'php':
			$g_session = new MantisPHPSession( $p_session_id );
			break;

		case 'adodb':

			# Not yet implemented
		case 'memcached':

			# Not yet implemented
		default:
			trigger_error( ERROR_SESSION_HANDLER_INVALID, ERROR );
			break;
	}

	if ( ON == config_get_global( 'session_validation' ) && session_get( 'secure_session', false ) ) {
		session_validate( $g_session );
	}
}
예제 #24
0
파일: autoriser.php 프로젝트: JLuc/SPIP
/**
 * Autorisation de prévisualiser un contenu
 *
 * @param  string $faire Action demandée
 * @param  string $type  Type d'objet sur lequel appliquer l'action
 * @param  int    $id    Identifiant de l'objet
 * @param  array  $qui   Description de l'auteur demandant l'autorisation
 * @param  array  $opt   Options de cette autorisation
 * @return bool          true s'il a le droit, false sinon
**/
function autoriser_previsualiser_dist($faire, $type, $id, $qui, $opt)
{
    // Le visiteur a-t-il un statut prevu par la config ?
    if (strpos($GLOBALS['meta']['preview'], "," . $qui['statut'] . ",") !== false) {
        return test_previsualiser_objet_champ($type, $id, $qui, $opt);
    }
    // Sinon, on regarde s'il a un jeton (var_token) et on lui pose
    // le cas echeant une session contenant l'autorisation
    // de l'utilisateur ayant produit le jeton
    if ($token = _request('var_previewtoken')) {
        include_spip('inc/session');
        session_set('previewtoken', $token);
    }
    // A-t-on un token valable ?
    if (is_array($GLOBALS['visiteur_session']) and $token = session_get('previewtoken') and preg_match('/^(\\d+)\\*(.*)$/', $token, $r) and $action = 'previsualiser' and include_spip('inc/securiser_action') and ($r[2] == _action_auteur($action, $r[1], null, 'alea_ephemere') or $r[2] == _action_auteur($action, $r[1], null, 'alea_ephemere_ancien'))) {
        return true;
    }
    return false;
}
예제 #25
0
		window.close ();
	// --></script>';
	exit;
}
*/
// settings stuff
global $cgi;
$root = 'inc/app';
loader_import('saf.File.Directory');
if (empty($cgi->format)) {
    $cgi->format = 'html';
}
// get the path root from the boxchooser-path session variable,
// and if not then default to /inc/data.
$data = array('location' => '/inc/app', 'boxes' => array(), 'name' => $parameters['name']);
$path = session_get('boxchooser_path');
if (!$path) {
    $path = $root;
    $data['base_nice_url'] = "Standard Boxes";
} else {
    $data['base_nice_url'] = $path;
}
$applications = parse_ini_file('inc/conf/auth/applications/index.php');
// get all the data
$dir = new Dir($path);
foreach ($dir->readAll() as $file) {
    if ($file != 'CVS' && strpos($file, '.') !== 0) {
        if (file_exists($path . '/' . $file . '/conf/config.ini.php')) {
            $config_file = parse_ini_file($path . '/' . $file . '/conf/config.ini.php');
            if (!$config_file['boxchooser']) {
                continue;
예제 #26
0
<?php

// settings stuff
global $cgi;
if (empty($cgi->format)) {
    $cgi->format = 'html';
}
// get the path root from the imagechooser-path session variable,
// and if not then default to /pix.
$path = session_get('imagechooser_path');
if (!$path) {
    $path = '/pix';
}
$data = array('location' => false, 'up' => false, 'err' => false, 'subfolders' => array(), 'images' => array());
if (empty($cgi->location) || strpos($cgi->location, $path . '/') !== 0 || strstr($cgi->location, '..') || !@is_dir(site_docroot() . $cgi->location)) {
    $data['location'] = $path;
} else {
    $data['location'] = $cgi->location;
    $up = preg_replace('|/[^/]+$|', '', $data['location']);
    if (!empty($up)) {
        $data['up'] = $up;
    }
}
// get all the data
page_title(intl_get('Adding image in') . ': ' . $data['location']);
if (empty($cgi->filename)) {
    $filename = $cgi->file->name;
} else {
    $filename = $cgi->filename;
}
if ($cgi->file) {
예제 #27
0
/**
 * Ajouter les saisies SQL et de recherche
 * sur les options de config d'une saisie (de champs extras)
 *
 * @param array
 * @return array
**/
function iextras_formulaire_verifier($flux) {
	if ($flux['args']['form'] == 'construire_formulaire'
	AND strpos($flux['args']['args'][0], 'champs_extras_')===0
	AND $nom_ou_id = _request('configurer_saisie') ) {

		// On ajoute le préfixe devant l'identifiant
		$identifiant = 'constructeur_formulaire_'.$flux['args']['args'][0];
		// On récupère le formulaire à son état actuel
		$formulaire_actuel = session_get($identifiant);

		if ($nom_ou_id[0] == '@') {
			$saisies_actuelles = saisies_lister_par_identifiant($formulaire_actuel);
			$name = $saisies_actuelles[$nom_ou_id]['options']['nom'];
		} else {
			$saisies_actuelles = saisies_lister_par_nom($formulaire_actuel);
			$name = $nom_ou_id;
		}

		// saisie inexistante => on sort
		if (!isset($saisies_actuelles[$nom_ou_id])) {
			return $flux;
		}

		$nom = 'configurer_' . $name;
		$table = substr($flux['args']['args'][0], strlen('champs_extras_'));


		// on ajoute le fieldset de restrictions de champs
		// (des autorisations pre-reglées en quelque sorte)
		$saisies_restrictions = array();

		// les restrictions de X ne peuvent apparaître que
		// si l'objet possede un Y.
		// secteurs -> id_secteur
		// branches -> id_rubrique
		// groupes -> id_groupe
		$desc = lister_tables_objets_sql($table);
		$types = array(
			'secteurs' => 'id_secteur',
			'branches' => 'id_rubrique',
			'groupes'  => 'id_groupe',
		);
		foreach ($types as $type => $champ) {
			if (isset($desc['field'][$champ])) {
				$saisies_restrictions[] = array(
					'saisie' => 'input',
					'options' => array(
						'nom' => "saisie_modifiee_${name}[options][restrictions][$type]",
						'label' => _T('iextras:label_restrictions_' . $type),
						'explication' => _T('iextras:precisions_pour_restrictions_' . $type),
						'defaut' => '',
					)
				);
			}
		}

		// ajout des restrictions voir | modifier par auteur
		$actions = array('voir', 'modifier');
		foreach ($actions as $action) {
			$saisies_restrictions[] = array(
					'saisie' => 'fieldset',
					'options' => array(
						'nom' => "saisie_modifiee_${name}[options][restrictions][$action]",
						'label' => _T('iextras:legend_restrictions_' . $action),
					),
					'saisies' => array(
						array(
							'saisie' => 'radio',
							'options' => array(
								'nom' => "saisie_modifiee_${name}[options][restrictions][$action][auteur]",
								'label' => _T('iextras:label_restrictions_auteur'),
								'defaut' => '',
								'datas' => array(
									'' => _T('iextras:radio_restrictions_auteur_aucune'),
									'admin' => _T('iextras:radio_restrictions_auteur_admin'),
									'admin_complet' => _T('iextras:radio_restrictions_auteur_admin_complet'),
									'webmestre' => _T('iextras:radio_restrictions_auteur_webmestre'),
								)
							)
						)
					)
				);
		}


		$flux['data'][$nom] = saisies_inserer($flux['data'][$nom], array(
			'saisie' => 'fieldset',
			'options' => array(
				'nom' => "saisie_modifiee_${name}[options][restrictions]",
				'label' => _T('iextras:legend_restriction'),
			),
			'saisies' => $saisies_restrictions
		));



		// on récupère les informations de la saisie
		// pour savoir si c'est un champs éditable (il a une ligne SQL)
		// et dans ce cas, on ajoute les options techniques
		$type_saisie = $saisies_actuelles[$nom_ou_id]['saisie'];
		$saisies_sql = saisies_lister_disponibles_sql();

		if (isset($saisies_sql[$type_saisie])) {

			// liste 'type_de_saisie' => 'Titre de la saisie'
			$liste_saisies = array();
			foreach ($saisies_sql as $s=>$d) {
				$liste_saisies[$s] = $d['titre'];
			}

			$sql = $saisies_sql[$type_saisie]['defaut']['options']['sql'];
			$flux['data'][$nom] = saisies_inserer($flux['data'][$nom], array(

				'saisie' => 'fieldset',
				'options' => array(
					'nom' => "saisie_modifiee_${name}[options][options_techniques]",
					'label' => _T('iextras:legend_options_techniques'),
				),
				'saisies' => array(
					array(
						'saisie' => 'input',
						'options' => array(
							'nom' => "saisie_modifiee_${name}[options][sql]",
							'label' => _T('iextras:label_sql'),
							'obligatoire' => 'oui',
							'size' => 50,
							'defaut' => $sql
						)
					),
					array(
						'saisie' => 'oui_non',
						'options' => array(
							'nom' => "saisie_modifiee_${name}[options][rechercher]",
							'label' => _T('iextras:label_rechercher'),
							'explication' => _T('iextras:precisions_pour_rechercher'),
							'defaut' => ''
						)
					),
					array(
						'saisie' => 'input',
						'options' => array(
							'nom' => "saisie_modifiee_${name}[options][rechercher_ponderation]",
							'label' => _T('iextras:label_rechercher_ponderation'),
							'explication' => _T('iextras:precisions_pour_rechercher_ponderation'),
							'defaut' => 2,
							'afficher_si' => "@saisie_modifiee_${name}[options][rechercher]@ != ''",
						)
					),
					array(
						'saisie' => 'radio',
						'options' => array(
							'nom' => "saisie_modifiee_${name}[options][traitements]",
							'label' => _T('iextras:label_traitements'),
							'explication' => _T('iextras:precisions_pour_traitements'),
							'defaut' => '',
							'datas' => array(
								'' => _T('iextras:radio_traitements_aucun'),
								'_TRAITEMENT_TYPO' => _T('iextras:radio_traitements_typo'),
								'_TRAITEMENT_RACCOURCIS' => _T('iextras:radio_traitements_raccourcis'),
							)
						)
					),
					array(
						'saisie' => 'oui_non',
						'options' => array(
							'nom' => "saisie_modifiee_${name}[options][versionner]",
							'label' => _T('iextras:label_versionner'),
							'explication' => _T('iextras:precisions_pour_versionner'),
							'defaut' => ''
						)
					),
					array(
						'saisie' => 'selection',
						'options' => array(
							'nom' => "saisie_modifiee_${name}[options][nouveau_type_saisie]",
							'label' => _T('iextras:label_saisie'),
							'explication' => _T('iextras:precisions_pour_nouvelle_saisie'),
							'attention' => _T('iextras:precisions_pour_nouvelle_saisie_attention'),
							'defaut' => $type_saisie,
							'datas' => $liste_saisies
						)
					),
				)));
		}
	}
	return $flux;
}
예제 #28
0
/**
 * @internal
 *
 * Loads the text .po file and returns array of translations
 * @param string $filename Text .po file to load
 * @return mixed Array of translations on success or FALSE on failure
 */
function __i18n_load()
{
    global $lc_lang;
    global $lc_translation;
    global $lc_translationEnabled;
    if ($lc_translationEnabled == false) {
        return false;
    }
    $filename = I18N . $lc_lang . '.po';
    if (!file_exists($filename)) {
        return false;
    }
    # Open the po file
    if (!($file = fopen($filename, 'r'))) {
        session_delete("i18n.{$lc_lang}");
        return false;
    }
    # if the respective po file is already parsed
    if ($translations = session_get("i18n.{$lc_lang}")) {
        return $lc_translation[$lc_lang] = $translations;
    }
    # parse the file
    session_delete("i18n.{$lc_lang}");
    /**
     * Thanks to CakePHP for the po file parsing logic in the do...while loop
     * @package  Cake.I18n
     * @version  1.2.0.4116
     * @license  http://www.opensource.org/licenses/mit-license.php MIT License
     */
    $type = 0;
    $translations = array();
    $translationKey = '';
    $plural = 0;
    $header = '';
    do {
        $line = trim(fgets($file));
        if ($line === '' || $line[0] === '#') {
            continue;
        }
        if (preg_match("/msgid[[:space:]]+\"(.+)\"\$/i", $line, $regs)) {
            $type = 1;
            $translationKey = strtolower(stripcslashes($regs[1]));
        } elseif (preg_match("/msgid[[:space:]]+\"\"\$/i", $line, $regs)) {
            $type = 2;
            $translationKey = '';
        } elseif (preg_match("/^\"(.*)\"\$/i", $line, $regs) && ($type == 1 || $type == 2 || $type == 3)) {
            $type = 3;
            $translationKey .= strtolower(stripcslashes($regs[1]));
        } elseif (preg_match("/msgstr[[:space:]]+\"(.+)\"\$/i", $line, $regs) && ($type == 1 || $type == 3) && $translationKey) {
            $translations[$translationKey] = stripcslashes($regs[1]);
            $type = 4;
        } elseif (preg_match("/msgstr[[:space:]]+\"\"\$/i", $line, $regs) && ($type == 1 || $type == 3) && $translationKey) {
            $type = 4;
            $translations[$translationKey] = '';
        } elseif (preg_match("/^\"(.*)\"\$/i", $line, $regs) && $type == 4 && $translationKey) {
            $translations[$translationKey] .= stripcslashes($regs[1]);
        } elseif (preg_match("/msgid_plural[[:space:]]+\".*\"\$/i", $line, $regs)) {
            $type = 6;
        } elseif (preg_match("/^\"(.*)\"\$/i", $line, $regs) && $type == 6 && $translationKey) {
            $type = 6;
        } elseif (preg_match("/msgstr\\[(\\d+)\\][[:space:]]+\"(.+)\"\$/i", $line, $regs) && ($type == 6 || $type == 7) && $translationKey) {
            $plural = $regs[1];
            $translations[$translationKey][$plural] = stripcslashes($regs[2]);
            $type = 7;
        } elseif (preg_match("/msgstr\\[(\\d+)\\][[:space:]]+\"\"\$/i", $line, $regs) && ($type == 6 || $type == 7) && $translationKey) {
            $plural = $regs[1];
            $translations[$translationKey][$plural] = '';
            $type = 7;
        } elseif (preg_match("/^\"(.*)\"\$/i", $line, $regs) && $type == 7 && $translationKey) {
            $translations[$translationKey][$plural] .= stripcslashes($regs[1]);
        } elseif (preg_match("/msgstr[[:space:]]+\"(.+)\"\$/i", $line, $regs) && $type == 2 && !$translationKey) {
            $header .= stripcslashes($regs[1]);
            $type = 5;
        } elseif (preg_match("/msgstr[[:space:]]+\"\"\$/i", $line, $regs) && !$translationKey) {
            $header = '';
            $type = 5;
        } elseif (preg_match("/^\"(.*)\"\$/i", $line, $regs) && $type == 5) {
            $header .= stripcslashes($regs[1]);
        } else {
            unset($translations[$translationKey]);
            $type = 0;
            $translationKey = '';
            $plural = 0;
        }
    } while (!feof($file));
    fclose($file);
    $merge[''] = $header;
    $lc_translation[$lc_lang] = array_merge($merge, $translations);
    # Store the array of translations in Session
    session_set("i18n.{$lc_lang}", $lc_translation[$lc_lang]);
    return $lc_translation;
}
예제 #29
0
파일: ldap.php 프로젝트: genma/spip_ynh
/**
 * Fonction de modification du mot de passe
 *
 * On se bind au LDAP cette fois sous l'identite de l'utilisateur, car le
 * compte generique defini dans config/ldap.php n'a generalement pas (et
 * ne devrait pas avoir) les droits suffisants pour faire la modification.
 * @param $login
 * @param $new_pass
 * @param $id_auteur
 * @param string $serveur
 * @return bool
 *  informe du succes ou de l'echec du changement du mot de passe
 */
function auth_ldap_modifier_pass($login, $new_pass, $id_auteur, $serveur = '')
{
    if (is_null($new_pass) or auth_ldap_verifier_pass($login, $new_pass, $id_auteur, $serveur) != '') {
        return false;
    }
    if (!($ldap = auth_ldap_connect($serveur))) {
        return '';
    }
    $link = $ldap['link'];
    include_spip("inc/session");
    $dn = session_get('ldap_dn');
    if ('' == $dn) {
        return false;
    }
    if (!ldap_bind($link, $dn, session_get('ldap_password'))) {
        return false;
    }
    $encoded_pass = "******" . base64_encode(pack("H*", md5($new_pass)));
    $success = ldap_mod_replace($link, $dn, array('userPassword' => $encoded_pass));
    return $success;
}
예제 #30
0
 /**
  * Requests an access token.
  **/
 function requestToken($code)
 {
     $this->fetchWellKnownConfig();
     $clientId = session_get('openid_connect_client');
     $secret = session_get('openid_connect_secret');
     if (!$clientId || !$secret) {
         throw new OpenIDException('Autentificare eșuată.');
     }
     if (!isset($this->wellKnownConfig['token_endpoint'])) {
         throw new OpenIDException('Nu pot cere un token.');
     }
     $url = $this->wellKnownConfig['token_endpoint'];
     $params = array('client_id' => $clientId, 'client_secret' => $secret, 'code' => $code, 'grant_type' => 'authorization_code', 'redirect_uri' => $this->getReturnTo());
     $query = http_build_query($params, null, '&');
     $jsonResult = util_makePostRequest($url, $query);
     $result = json_decode($jsonResult, true);
     if (!$result || isset($result['error'])) {
         throw new OpenIDException('Eroare la cererea unui token');
     }
     if (!isset($result['id_token'])) {
         throw new OpenIDException('Furnizorul dumneavoastră a refuzat autorizarea');
     }
     $this->claims = $this->decodeJWT($result['id_token']);
     // verify the claims
     if ($this->claims['iss'] != $this->wellKnownConfig['issuer'] || $clientId != $this->claims['aud'] && !in_array($clientId, $this->claims['aud']) || $this->claims['nonce'] != session_get('openid_connect_nonce')) {
         throw new OpenIDException('Nu pot verifica tokenul. Posibilă încercare de interceptare a sesiunii!');
     }
     return $result['access_token'];
 }