public function __construct($organisationId = null) { parent::__construct(); $this->prependSiteTitle(lang('Organisations')); if ($organisationId !== null) { $this->currentUser->setActiveOrganisation($organisationId); redirect(url('controlpanel.home')); } // Set template and stuff specific for this page $this->setTemplate('Organisations.php'); $this->getSite()->addWrappedCss('fonts.css'); $this->getSite()->addWrappedCss('organisations.css'); $this->getSite()->addWrappedJs('tab.js'); // Get a list of organisations $this->organisations = $this->currentUser->getOrganisations(); // If the user tries to create an organisation if ($this->isPostBack()) { $this->post->organisation->addValidation(new ValidateInputNotNullOrEmpty()); if (!$this->hasErrors()) { // Check if organisation name is taken if (ModelOrganisation::getByName($this->input('company'))->hasRow()) { $this->setError(lang('An organisation with the name %s already exists - please request an invite from the organisation owner instead.', $this->input('company'))); } if (!$this->hasErrors()) { $organisation = new ModelOrganisation(); $organisation->setName($this->input('organisation')); $organisation->save(); $this->currentUser->addOrganisation($organisation, UserRole::TYPE_OWNER); $this->setMessage(lang('The organisation %s has been created', $organisation->name), 'success'); response()->refresh(); } } } }
public function __construct() { parent::__construct(); $this->prependSiteTitle(lang('Register')); $this->currency = ModelSettings::getInstance(); $role = UserRole::TYPE_OWNER; if ($this->get->email->getValue()) { $this->invite = OrganisationInvite::getByEmail($this->get->email->getValue()); if ($this->invite->hasRow()) { $this->organisation = ModelOrganisation::getById($this->invite->organisation_id); $role = $this->invite->role; } } if ($this->isPostBack()) { $this->post->name->addValidation(new ValidateInputNotNullOrEmpty()); $this->post->email->addValidation(new ValidateInputEmail()); if ($this->organisation === null || !$this->organisation->hasRow()) { $this->post->company->addValidation(new ValidateInputNotNullOrEmpty()); } $this->post->password->addValidation(new ValidateInputNotNullOrEmpty()); $this->post->terms->addValidation(new ValidateInputNotNullOrEmpty()); $this->post->password_repeat->addValidation(new ValidateInputNotNullOrEmpty()); if (!$this->hasErrors()) { // Do not create organisation if invite is available if ($this->organisation === null || !$this->organisation->hasRow()) { // Check if organisation name is taken if (ModelOrganisation::getByName($this->input('company'))->hasRow()) { $this->setError(lang('An organisation with the name %s already exists - please request an invite from the organisation owner instead.', $this->input('company'))); response()->refresh(); } $organisation = new ModelOrganisation(); $organisation->setName($this->input('company')); $organisation->save(); $role = UserRole::TYPE_OWNER; } else { $organisation = $this->organisation; } $user = new ModelUser(); $user->username = $this->post->email->getValue(); $user->data->name = $this->input('name'); $user->setPassword($this->input('password')); try { $user->save(); $this->sendWelcomeMail($user); } catch (UserException $e) { if ($e->getCode() === ModelUser::ERROR_TYPE_EXISTS) { $error = lang('The e-mail is already registered.'); } else { $error = $e->getMessage(); } $this->setError($error); response()->refresh(); } $user->addOrganisation($organisation, $role); $user->auth(); // Delete invite if ($this->invite && $this->invite->hasRow()) { $this->invitationAcceptedMail($this->invite, $organisation, $user); $this->invite->delete(); } redirect(url('controlpanel.organisations')); } } }