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); }
/** * 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; }
/** * 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); }