예제 #1
0
 public function GetUsers()
 {
     $this->users = \gp\tool\Files::Get('_site/users');
     //fix the editing value
     foreach ($this->users as $username => $userinfo) {
         $userinfo += array('granted' => '');
         \gp\admin\Tools::EditingValue($userinfo);
         $this->users[$username] = $userinfo;
     }
 }
예제 #2
0
 public static function create(&$user_info, $username, &$sessions)
 {
     global $dataDir, $langmessage;
     //update the session files to .php files
     //changes to $userinfo will be saved by UpdateAttempts() below
     $user_info = self::SetSessionFileName($user_info, $username);
     $user_file_name = $user_info['file_name'];
     $user_file = $dataDir . '/data/_sessions/' . $user_file_name;
     //use an existing session_id if the new login matches an existing session (uid and file_name)
     $sessions = self::GetSessionIds();
     $uid = self::auth_browseruid();
     $session_id = false;
     foreach ($sessions as $sess_temp_id => $sess_temp_info) {
         if (isset($sess_temp_info['uid']) && $sess_temp_info['uid'] == $uid && $sess_temp_info['file_name'] == $user_file_name) {
             $session_id = $sess_temp_id;
         }
     }
     //create a unique session id if needed
     if ($session_id === false) {
         do {
             $session_id = \gp\tool::RandomString(40);
         } while (isset($sessions[$session_id]));
     }
     $expires = !isset($_POST['remember']);
     self::cookie(gp_session_cookie, $session_id, $expires);
     //save session id
     $sessions[$session_id] = array();
     $sessions[$session_id]['file_name'] = $user_file_name;
     $sessions[$session_id]['uid'] = $uid;
     //$sessions[$session_id]['time'] = time(); //for session locking
     if (!self::SaveSessionIds($sessions)) {
         return false;
     }
     //make sure the user's file exists
     $new_data = self::SessionData($user_file, $checksum);
     $new_data['username'] = $username;
     $new_data['granted'] = $user_info['granted'];
     if (isset($user_info['editing'])) {
         $new_data['editing'] = $user_info['editing'];
     }
     \gp\admin\Tools::EditingValue($new_data);
     // may needt to extend the cookie life later
     if (isset($_POST['remember'])) {
         $new_data['remember'] = time();
     } else {
         unset($new_data['remember']);
     }
     \gp\tool\Files::SaveData($user_file, 'gpAdmin', $new_data);
     return $session_id;
 }