public function login($user, $pass, $hash = '') { $origHash = $hash; if (strlen($user) > 0 && strlen($pass) > 0) { $db = Database::getInstance(); if ($hash == '') { $hash = hash('sha256', $pass); } $table = Database::getEntityName('user'); // Datenbank durchsuchen $db->query("select * from {$table} where us_benutzername = :login and us_passwort = :pass and us_aktiv = 1", array('login' => $user, 'pass' => $hash)); if ($row = Database::getInstance()->fetch()) { $user = new User(); $user->loadFromRow($row); $this->loginUser($user); return true; } else { // TODO: DTV if ($origHash == '') { $hash = hash('sha1', utf8_decode($pass)); return $this->login($user, $pass, $hash); } Events::dispatch(FrameworkEvents::SECURITY_LOGIN_FAILED, new FrameworkEvent()); return false; } } else { Events::dispatch(FrameworkEvents::SECURITY_LOGIN_FAILED, new FrameworkEvent()); return false; } }
/** * @param $user * @param $pass * @param $token * @return array */ private function loginUser($user, $pass, &$token) { if (Security::login($user, $pass)) { $token = md5(Security::getUserId() . date('dmyHis')); $user = new User(Security::getUserId()); $user->us_hash = $token; $user->save(); return true; } return false; }
public static function resetPassword(User $user, $template = '') { $user->generateHash(); if ($template === '') { $template = __DIR__ . '/Mails/UserResetPassword.template.html'; } // Mail senden $temp = new ControlContainer(null, ''); $temp->setSkinfile($template); $temp->setEntity($user); $nachrichttext = $temp->toHtml(); $empfaenger = $user->us_email; return Mailer::getInstance()->sendMail($empfaenger, 'Kennwortanforderung', $nachrichttext, $nachrichttext); }
public function aktivierungslinkSenden() { $this->user = new User($this->request->id); if ($this->user->val('us_aktiv')) { FlashMessage::warning('Der Benutzer ist bereits aktiv. Es wurde keine Mail versendet'); return; } $activationLink = Routing::appLink('User', 'activateUser', ['hash' => $this->user->generateHash()]); UserMailer::activate($this->user, 'Ihr Benutzerkonto', $activationLink); FlashMessage::success('Aktivierungslink wurde versendet'); }
public function install() { parent::install(); $administratoren = new Rolle(); $administratoren->ro_bezeichnung = 'Administratoren'; $administratoren->ro_aktiv = true; $administratoren->ro_parent = 0; $administratoren->ro_neuebenutzer = false; $administratoren->save(); $besucher = new Rolle(); $besucher->ro_bezeichnung = 'Besucher'; $besucher->ro_aktiv = true; $besucher->ro_parent = 0; $besucher->ro_neuebenutzer = true; $besucher->save(); $admin = new User(); $admin->us_benutzername = 'admin'; $admin->us_passwort = 'masterkey'; $admin->us_aktiv = 1; $admin->us_vorname = 'Administrator'; $admin->us_anonymous = false; $admin->us_sprache = 1; $admin->save(); $anonymous = new User(); $anonymous->us_benutzername = mt_rand(1000000, 9999999); $anonymous->us_passwort = mt_rand(1000000, 9999999); $anonymous->us_aktiv = 1; $anonymous->us_vorname = 'Anonymous'; $anonymous->us_anonymous = true; $anonymous->us_sprache = 1; $anonymous->save(); $rolle = new UserRolle(); $rolle->ur_user = $admin->id; $rolle->ur_rolle = $administratoren->id; $rolle->save(); $rolle = new UserRolle(); $rolle->ur_user = $anonymous->id; $rolle->ur_rolle = $besucher->id; $rolle->save(); }
public function isAuthenticated($request) { if (Security::isAuthenticated()) { return true; } // Token kann im Header oder in einem Parameter stehen $token = 'XYZ'; if (isset($_SERVER['HTTP_X_TOKEN'])) { $token = $_SERVER['HTTP_X_TOKEN']; } elseif (isset($request->token)) { $token = $request->token; } $user = User::loadByToken($token); if ($user !== null) { Security::loginUser($user); return true; } else { return false; } }
/** * @param $benutzername * @return User|null */ public static function loadByBenutzername($benutzername) { return User::findFirst(['benutzername' => $benutzername]); }
/** * Wechselt die Identität des angemeldeten Benutzers * ACHTUNG! Besondere Sorgfalt bei der Berechtigungsprüfung von Nöten! */ public function doAnmeldenAls() { // TODO: Berechtigung prüfen // TODO: DTV! $darfWechsel = Application::isAdmin() || Security::hatRolle('DTV-GS'); if (!$darfWechsel) { FlashMessage::danger('Für diese Aktion haben Sie keine Berechtigung'); Application::getCurrentResponse()->redirectToFrontpage(); } $this->user = User::loadByBenutzername($this->request->benutzer); if ($this->user != null) { Security::loginUser($this->user); FlashMessage::success('Sie sind jetzt angemeldet als ' . $this->user); } else { FlashMessage::danger('Benutzername nicht bekannt'); } Application::getCurrentResponse()->redirectToFrontpage(); }