private function importUser($username)
 {
     $this->log('Auth.Dispatch: User %s not found, try to import', $username, AgaviLogger::DEBUG);
     $padmin = $this->getContext()->getModel('PrincipalAdmin', 'AppKit');
     foreach ($this->provider_keys as $pid) {
         $provider = $this->getProvider($pid);
         if ($provider->canCreateProfile()) {
             $this->log('Auth.Dispatch/import: %s will provide the user profile', $provider->getProviderName(), AgaviLogger::DEBUG);
             try {
                 $data = $provider->getUserdata($username, false);
                 if (is_array($data)) {
                     $user = new NsmUser();
                     $user->fromArray($data, false);
                     // Write a random password.
                     // @todo Change this to let providers can do that later
                     $user->generateRandomPassword();
                     $groups = $provider->getDefaultGroups();
                     if (is_array($groups)) {
                         foreach ($groups as $group_name) {
                             $group = Doctrine::getTable('NsmRole')->findOneBy('role_name', $group_name);
                             if ($group instanceof NsmRole) {
                                 $user->NsmRole[] = $group;
                             } else {
                                 $this->log('Auth.Dispatch/import: Could not assign group %s', $group_name, AgaviLogger::WARN);
                             }
                         }
                     }
                     if (count($user->NsmRole) > 0) {
                         $user->save();
                         $user->refresh(true);
                     } else {
                         $this->log('Auth.Dispatch/import: No groups available for user, ABORT!', AgaviLogger::FATAL);
                         return null;
                     }
                     $padmin->updatePrincipalValueData($user->principal, array(), array());
                     $user->save();
                     $this->log('Auth.Dispatch/import: user %s successfully imported (user_id=%d, provider=%s)', $username, $user->user_id, $provider->getProviderName(), AgaviLogger::DEBUG);
                     return $user;
                 }
             } catch (AgaviSecurityException $e) {
                 $this->log('Auth.Dispatch/import: Import failed (provider=%s,msg=%s)', $provider->getProviderName(), $e->getMessage(), AgaviLogger::ERROR);
             } catch (Exception $e) {
                 $this->log('Auth.Dispatch/import failed: Import failed: (provider=%s, msg=%s)', $provider->getProviderName(), $e->getMessage(), AgaviLogger::ERROR);
             }
         }
     }
 }