コード例 #1
0
 function login()
 {
     NDebug::debug('Redirecting ' . $_SERVER['REMOTE_ADDR'] . ' to login to nterchange.', N_DEBUGTYPE_AUTH);
     $auth = new NAuth();
     $auth->start();
     $username = $auth->username;
     $status = $auth->status;
     $form = new NQuickForm('login_form', 'post', preg_replace('/logout=1[\\&]?/', '', $_SERVER['REQUEST_URI']));
     $form->setDefaults(array('username' => $username));
     if (isset($_GET['logout']) && $_GET['logout'] == 1) {
         $form->addElement('cmsalert', 'logout_header', 'You have signed out. Sign back in to continue.');
     } else {
         if ($status < 0 && !empty($username)) {
             $form->addElement('cmserror', 'login_status', $auth->statusMessage($status));
         } else {
             $form->addElement('cmsalert', 'login_status', 'Please sign in and you will be sent right along.');
         }
     }
     $form->addElement('text', 'username', 'Username', array('maxlength' => 32, 'style' => 'width:300px;'));
     $form->addElement('password', 'password', 'Password', array('maxlength' => 32, 'style' => 'width:150px;'));
     // $form->addElement('checkbox', 'remember', null, 'Remember me for 2 weeks.');
     $form->addElement('submit', 'login', 'Sign In');
     $referer = isset($_GET['_referer']) ? urlencode($_GET['_referer']) : urlencode('/' . $this->base_dir);
     $form->addElement('hidden', '_referer', $referer);
     if ($auth->checkAuth()) {
         NDebug::debug('Logged ' . $_POST['username'] . ' from ' . $_SERVER['REMOTE_ADDR'] . ' in to nterchange.', N_DEBUGTYPE_AUTH);
         // Log this in the audit trail.
         $user_id = $auth->currentUserID();
         $audit_trail =& NController::factory('audit_trail');
         $audit_trail->insert(array('asset' => 'users', 'asset_id' => $user_id, 'action_taken' => AUDIT_ACTION_LOGIN));
         unset($audit_trail);
         // Redirect to the page requested.
         header('Location:' . urldecode($referer));
         exit;
     }
     $content = $form->toHTML();
     $this->set(array('MAIN_CONTENT' => $content, 'username' => $username, 'status' => $status));
     $this->auto_render = false;
     $this->render(array('layout' => 'login'));
 }