/**
  * Logout a user and redirect back to the login page
  */
 public function logout()
 {
     $user = new \Sonic\Model\User();
     if ($user->initSession() === TRUE) {
         $user->Logout();
         new \Sonic\Message('success', 'Logged out');
     }
     $this->template = 'admin/login.tpl';
 }
 /**
  * Update user
  * @param string $user_first_name First name
  * @param string $user_last_name Last name
  * @param string $user_email Email address
  * @param string $user_password_current (Optional) Current password
  * @param string $user_password (Optional) New password
  * @param string $user_password_confirm (Optional) Password confirmation
  */
 public function update()
 {
     $this->template = 'admin/settings/index.tpl';
     $user = new \Sonic\Model\User();
     $user->fromPost(TRUE, array('first_name', 'last_name', 'email'));
     $user->set('id', $this->user->get('id'));
     if (\Sonic\Message::count('error')) {
         return;
     }
     $exclude = array();
     if ($user->get('password')) {
         $this->user->readAttribute('password');
         if (!$this->user->checkPassword($this->getArg('user_password_current'))) {
             new \Sonic\Message('error', 'Your current password is not valid, please try again');
             return;
         } else {
             if ($user->get('password') !== $this->getArg('user_password_confirm')) {
                 new \Sonic\Message('error', 'Your new passwords did not match, please try again');
                 return;
             }
         }
     } else {
         $exclude[] = 'password';
     }
     if (!$user->update($exclude)) {
         new \Sonic\Message('error', 'Settings update failed, please try again');
         return;
     }
     $this->user->read();
     new \Sonic\Message('success', 'Settings updated');
 }
 /**
  * Check authentication status
  * TRUE for authenticated, otherwise error string
  */
 public function status()
 {
     $user = new \Sonic\Model\User();
     return $this->success(array('status' => $user->initSession()));
 }