public function action($action = 'main')
 {
     switch ($action) {
         case 'login':
             $rememberme = false;
             if (isset($_POST['remember_me'])) {
                 $rememberme = true;
             }
             $user = new user($_POST['username']);
             $user->login($_POST['password'], $rememberme);
             if (isset($_SESSION['user'])) {
                 header('Location: ./');
             } else {
                 $user = new user();
                 $v = new userView($user);
                 $v->login(true);
             }
             break;
         case 'logout':
             $this->user->logout();
             $this->user = new user();
             $v = new userView($this->user);
             $v->login();
             break;
         case 'main':
             $v = new userView($this->user);
             $v->main();
             break;
         case 'updatepassword':
             if ($_POST['password1'] === $_POST['password2']) {
                 $ret = $this->user->updatepassword($_POST['currentpassword'], $_POST['password1']);
             } else {
                 $ret = false;
             }
             $v = new userView($this->user);
             if ($ret) {
                 $v->main();
             } else {
                 $v->updatepassword(true);
             }
             break;
         case 'updatepassword_view':
             $v = new userView($this->user);
             $v->updatepassword();
             break;
         case 'changeuser':
             if ($this->user->isgroupmember('admins')) {
                 $v = new userView($this->user);
                 $v->changeuser();
             }
             break;
         case 'adduser':
             if ($this->user->isgroupmember('admins')) {
                 $ret = new user($_POST['username'], $_POST['password'], $_POST['groupname']);
             }
             $v = new userView($this->user);
             $v->changeuser();
             break;
         case 'adduser_view':
             if ($this->user->isgroupmember('admins')) {
                 $v = new userView($this->user);
                 $v->adduser();
             }
             break;
         case 'deleteuser':
             if ($this->user->isgroupmember('admins')) {
                 $ret = $this->user->deleteuser($_POST['username']);
             }
             $v = new userView($this->user);
             $v->changeuser();
             break;
         case 'enableuser':
             if ($this->user->isgroupmember('admins')) {
                 $user = new User($_POST['username']);
                 if ($_POST['enabled'] === 'enabled') {
                     $user->enable(true);
                 }
                 if ($_POST['enabled'] === 'disabled') {
                     $user->enable(false);
                 }
             }
             $v = new userView($this->user);
             $v->changeuser();
             break;
         case 'changeusergroup':
             if ($this->user->isgroupmember('admins')) {
                 $user = new User($_POST['username']);
                 $user->updategroup($_POST['groupname']);
             }
             $v = new userView($this->user);
             $v->changeuser();
             break;
         case 'changeuserpassword':
             if ($this->user->isgroupmember('admins')) {
                 $this->user->resetuserpassword($_POST['username'], $_POST['password']);
             }
             $v = new userView($this->user);
             $v->changeuser();
             break;
         case 'changeuserpassword_view':
             if ($this->user->isgroupmember('admins')) {
                 $v = new userView($this->user);
                 $v->changeuserpassword($_POST['username']);
             }
             break;
         default:
             die('Unkown action: ' . $action);
             break;
     }
 }