Quelltext yaml_com_auth

<?php
/**
 * ==================================================
 * Template: yaml_com_auth
 * Version: 0.3
 * Redaxo Version: 4.2.x
 * HTML-/XHTML-Version: XHTML 1.0
 *
 * Hinweise:
 * Ermöglicht neben der Standard-Funktionalitaet des
 * Community-Basis-Addon die Einrichtung von einem
 * individuellen Benutzerbereich für jeden Community-User
 * sowie einem zusaetzlichem Benutzerbereich für alle
 * angemeldeten Community-User.
 *
 * Bearbeitung: Peter Reiche
 *        www.raybeam.de
 *
 * Datum: 16.12.2009
 * Ursprung: Template des Community-Basis-Addon
 * Ursprungsname: 1012 - COM-Template - Basis - Authentifizierung
 * Ursprung-Datum: 13.12.2009
 * ================================================== */



unset($REX['COM_USER']);
$pagekey = 'comrex'; // Frontendkey, muss sich unterscheiden, damit frontend und backend sich nicht schneiden.
$login_name = rex_request("login_name","string");
$login_psw = rex_request("login_psw","string");
// Festlegen des Attributs in rex_com_user_field fuer den Login-Startartikel
if(!$login_article_value) $login_article_value = 'loginarticle';
$logout = rex_request("logout","int");
$msg = 'Bitte einloggen';

// ----- session start
session_start();
if ((isset($_SESSION[$pagekey]['UID']) && $_SESSION[$pagekey]['UID'] != "") or $login_name != "" or $login_psw != "")
{
  $user_id = (int) $_SESSION[$pagekey]['UID'];
  $GLOBALS["I18N"] = rex_create_lang("de");
  $REX['COM_USER'] = new rex_login();
  $REX['COM_USER']->setSqlDb(1);
  $REX['COM_USER']->setSysID($pagekey);
  $REX['COM_USER']->setSessiontime(3000);
  $REX['COM_USER']->setLogin($login_name,$login_psw);
  if ($logout == 1) { $REX['COM_USER']->setLogout(true); }
  $REX['COM_USER']->setUserID("rex_com_user.id");
  $REX['COM_USER']->setUserquery("select * from rex_com_user where id='USR_UID' and status>0");
  $REX['COM_USER']->setLoginquery("select * from rex_com_user where login='USR_LOGIN' and password='USR_PSW' and status>0");
 
  if ($REX['COM_USER']->checkLogin())
  {
    // ----- Login gelungen
    if ($login_name != "")
    {
      // ----- Login gelungen und gerade erst eingeloggt
      $msg = 'Sie haben sich eingeloggt!';
     
      /*
      $COM_USER_SAVE = new rex_sql();
      $COM_USER_SAVE->setTable('rex_com_user');
      $COM_USER_SAVE->setValue('last_login_time',time());
      $COM_USER_SAVE->setWhere('id='.$REX['COM_USER']->getValue('rex_com_user.id'));
      $COM_USER_SAVE->update();
      */

      // Individuellen Login-Artikel oder Start-Artikel aufrufen
      if($REX['COM_USER']->getValue($login_article_value))
      {
        $jump_aid = $REX['COM_USER']->getValue($login_article_value);
      }
      else
      {
        $jump_aid = $REX['START_ARTICLE_ID'];
      }
    }
  }else
  {
    // ----- Login failed
    $msg = 'Login ist fehlgeschlagen.';
    if ($logout == 1)
      $msg = 'Sie haben sich ausgeloggt';
   
    unset($REX['COM_USER']);
    if ($logout == 1)
      $jump_aid = $REX['START_ARTICLE_ID'];
  }
}else
{
  // ----- nicht eingeloggt und kein login
  $msg = 'Sie sind nicht eingeloggt.';
  unset($REX['COM_USER']);
}
if (isset($jump_aid))
{
  header('Location:'.rex_getUrl($jump_aid));
  exit;
}

/*
  Fuer die Verwendung in Navigationen und Templates
     0  Standard    Zugriff fuer alle
    -1  Zugriff fuer nicht eingeloggte User  
     1  Zugriff fuer eingeloggte User  
     2  Zugriff fuer eingeloggte Admins
*/

function rex_com_checkUserPerm($type)
{
  global $REX;
  if ($type == "") return true; // Zugriff fuer alle
  if ($type == "0") return true; // Zugriff fuer alle
 
  if (isset($REX['COM_USER']) && is_object($REX['COM_USER']))
  {
    if($REX['ARTICLE']->getValue('art_com_user'))
    {
      // Eigene Bereiche fuer angemeldete Community-User einrichten
      // Dazu wird die MetaInfo art_com_user bei den Artikeln genutzt, Admins sehen alles
      if(($type == '1' && $REX['COM_USER']->getValue('id')== $REX['ARTICLE']->getValue('art_com_user')) || $REX['COM_USER']->getValue("admin")==1) return true;
      // Artikel mit art_com_user = -1 kann jeder angemeldete User lesen
      elseif($type == '1' && $REX['ARTICLE']->getValue('art_com_user')=='-1') return true;
    }
    else
    {
      // oder die Standardvariante
      if ($type == "1") return true; // Zugriff fuer eingeloggte User
    }
    if ($type == "2" && $REX['COM_USER']->getValue("admin")==1) return true;
  }
  if(!isset($REX['COM_USER']) || !is_object($REX['COM_USER']))
  {
    if ($type == "-1") return true; // Zugriff fuer nicht eingeloggte User
  }
  return false;
}
?>