Beispiel #1
0
 public function indexAction()
 {
     $this->layout("layout/empty");
     $this->logged = new Container('user');
     $table = $this->getUserTable();
     $form = new LoginForm();
     if (!$this->logged->boolLogged) {
         $messenger = new Messenger();
         /*
          *  if user has chosen the option 'remember me on this PC', then load
          *  info from DB a redirect to admin
          */
         if (isset($_COOKIE['sleanded_admin']) && $_COOKIE['sleanded_admin'] != '') {
             $credentials = explode(";", $_COOKIE['sleanded_admin']);
             $user = $table->autologin($credentials[0], $credentials[1]);
             /*
              * check, if the credentials in COOKIE are same as those in DB
              */
             if (count($user) == 1) {
                 $user = $user[0];
                 $this->registerSession($user, $this->logged);
                 return $this->redirect()->toRoute('admin', array('controller' => 'index'));
             } else {
                 unset($_COOKIE['sleanded_admin']);
                 setcookie('sleanded_admin', '', time() - 3600);
                 $message = ["Autologin failed, please log in", Messenger::ERROR];
             }
         }
         $request = $this->getRequest();
         if ($request->isPost()) {
             $form->addInputFilter();
             $form->setData($request->getPost());
             if ($form->isValid()) {
                 /*
                  * checks, if a pass & name are OK
                  */
                 $u = new User();
                 $u->exchangeArray($request->getPost());
                 $user = $table->login($u->name, $u->password);
                 if (count($user) == 1) {
                     /* registering session
                      * ----------------
                      * if option 'remember me on this PC' is selected:
                      * save cookie + set param to DB
                      */
                     $user = $user[0];
                     $this->registerSession($user, $this->logged);
                     if ($u->remember == 1) {
                         setcookie('sleanded_admin', $user['name'] . ';' . $user['password'], time() + 3600 * 24 * 15);
                         $table->edit($user['id'], ['ip' => $_SERVER['REMOTE_ADDR'], 'remember' => 1]);
                     }
                     /*
                      * redirecting to admin index page
                      */
                     return $this->redirect()->toRoute('admin', array('controller' => 'index'));
                 } else {
                     $message = ["Invalid name/email or password. Please, try to log in again!", Messenger::ERROR];
                 }
             } else {
                 $message = ["All form fields have to be filled!", Messenger::NOTICE];
             }
         }
     } else {
         $this->logout();
     }
     return ['message' => isset($message) ? $message : null, 'loginForm' => $form];
 }