Ejemplo n.º 1
0
 public static function beforeLogin($params, &$response)
 {
     $oldIgnoreAcl = \GO::setIgnoreAclPermissions(true);
     $ia = new Authenticator();
     if ($ia->setCredentials($params['username'], $params['password'])) {
         if ($ia->imapAuthenticate()) {
             if (!$ia->user) {
                 \GO::debug("IMAPAUTH: Group-Office user doesn't exist.");
                 if (!isset($params['first_name'])) {
                     $response['needCompleteProfile'] = true;
                     $response['success'] = false;
                     $response['feedback'] = \GO::t('pleaseCompleteProfile', 'imapauth');
                     return false;
                 } else {
                     //user doesn't exist. create it now
                     $user = new \GO\Base\Model\User();
                     $user->email = $ia->email;
                     $user->username = $ia->goUsername;
                     $user->password = $ia->imapPassword;
                     $user->first_name = $params['first_name'];
                     $user->middle_name = $params['middle_name'];
                     $user->last_name = $params['last_name'];
                     try {
                         if (!$user->save()) {
                             throw new \Exception("Could not save user: "******"\n", $user->getValidationErrors()));
                         }
                         if (!empty($ia->config['groups'])) {
                             $user->addToGroups($ia->config['groups']);
                         }
                         $ia->user = $user;
                         $user->checkDefaultModels();
                         //todo testen of deze regel nodig is om e-mail account aan te maken voor nieuwe gebruiker
                         $ia->createEmailAccount($user, $ia->config, $ia->imapUsername, $ia->imapPassword);
                     } catch (\Exception $e) {
                         \GO::debug('IMAPAUTH: Failed creating user ' . $ia->goUsername . ' and e-mail ' . $ia->email . 'Exception: ' . $e->getMessage(), E_USER_WARNING);
                     }
                 }
             }
         } else {
             $response['feedback'] = GO::t('badLogin') . ' (IMAP)';
             return false;
         }
     }
     \GO::setIgnoreAclPermissions($oldIgnoreAcl);
 }
Ejemplo n.º 2
0
 /**
  * Create a new user 
  * 
  * When creating a user we also need to create a lot of default models and
  * set permissions for this user. This function creates the user with permissions
  * and the right models in one go.
  * 
  * @param array $attributes
  * @param array $groups array of group names array('Internal','Some group');
  * @param array $modulePermissionLevels array('calendar'=>1,'projects'=>4)
  * @return User 
  */
 public static function newInstance($attributes, $groups = array(), $modulePermissionLevels = array())
 {
     $user = new User();
     $user->setAttributes($attributes);
     $user->save();
     $user->addToGroups($groups);
     foreach ($modulePermissionLevels as $module => $permissionLevel) {
         GO::modules()->{$module}->acl->addUser($user->id, $permissionLevel);
     }
     $user->checkDefaultModels();
     return $user;
 }
Ejemplo n.º 3
0
 /**
  * The afterimport for every imported user.
  * 
  * @param User $model
  * @param array $attributes
  * @param array $record
  * @return boolean success
  */
 protected function afterImport(&$model, &$attributes, $record)
 {
     // Create the new groups
     if (!empty($attributes["groups"])) {
         $model->addToGroups(explode(',', $attributes["groups"]), true);
     }
     // Create the
     $c = $model->createContact();
     $c->setAttributes($attributes);
     $c->save();
     $model->checkDefaultModels();
     return parent::afterImport($model, $attributes, $record);
 }