Hallo,

wir haben das mal für FE-User gemacht, das ganze via EID eingebunden.

-------------------
<?php

class Tx_Fo_Eid_Index {

        const allowedUsergroup = 1;
        const allowedPid = 155;

        public function main() {
                $action = t3lib_div::_GP('action');
                try {
                        $out = '';

                        switch ($action) {
                                case 'login':
                                        $out = $this->loginAction();
                                        break;
                                default:
                                        throw new Exception('No action 
defined');
                        }

                        echo $out;

                } catch (Exception $e) {
                        exit;
                }
        }

        /**
         * Check by a given username and password if
         * a user is found which matches
         *
         * @return serialized array
         */
        protected function loginAction() {
                $username = t3lib_div::_GET('username');
                $password = t3lib_div::_GET('password');

                if (empty($username) || empty($password)) {
                        throw new UnexpectedValueException('Username or 
password not given');
                }

                tslib_eidtools::connectDB();

                $userRecord = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
                        '*',
                        'fe_users',
'disable=0 AND (username=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($username) . ' OR email=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($username) . ' ) AND pid=' . (int)self::allowedPid
                );
                if (!is_array($userRecord)) {
                        throw new Exception('User with username not found');
                }

                        // check usergroup
if (!t3lib_div::inList($userRecord['usergroup'], self::allowedUsergroup)) {
                        throw new Exception('Usergroup is wrong');
                }

                        // compare password
$validPassword = $this->compareUserRecordWithPassword($userRecord, $password);

                if ($validPassword) {
                        return serialize($userRecord);
                } else {
                        throw new Exception('No valid password');
                }

        }

        /**
         * Check password of user with a given one
         *
         * @param array $userRecord
         * @param string $password
         * @return boolean
         */
private function compareUserRecordWithPassword(array $userRecord, $password) { t3lib_div::requireOnce(t3lib_extMgm::extPath('saltedpasswords', 'classes/salts/class.tx_saltedpasswords_salts_factory.php'));

$this->objInstanceSaltedPW = tx_saltedpasswords_salts_factory::getSaltingInstance($userRecord['password'], 'FE');
                if (!is_object($this->objInstanceSaltedPW)) {
                        $isValid = md5($password) == $userRecord['password'];
                        return $isValid;
                }
$validPassword = $this->objInstanceSaltedPW->checkPassword($password, $userRecord['password']);
                return $validPassword;
        }

}

$resolver = t3lib_div::makeInstance('Tx_Fo_Eid_Index');
$resolver->main();

?>
------------

tx_saltedpasswords_salts_factory::getSaltingInstance => BE statt FE sollte funktionieren.

IP-Sperren usw sollte natürlich auch noch gemacht werden


lg georg
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an