company()->client_registration_fields as $field) { if ($field['required']) { $rules[$field['key']] = ['bail','required']; } } foreach ($rules as $field => $properties) { if ($field === 'email') { $rules[$field] = array_merge($rules[$field], ['email:rfc,dns', 'max:191', Rule::unique('client_contacts')->where('company_id', $this->company()->id)]); } if ($field === 'current_password') { $rules[$field] = array_merge($rules[$field], ['string', 'min:6', 'confirmed']); } } if ($this->company()->settings->client_portal_terms || $this->company()->settings->client_portal_privacy_policy) { $rules['terms'] = ['required']; } return $rules; } public function company() { //this should be all we need, the rest SHOULD be redundant because of our Middleware if ($this->key) { return Company::where('company_key', $this->key)->first(); } if ($this->company_key) { return Company::where('company_key', $this->company_key)->firstOrFail(); } if (! $this->route()->parameter('company_key') && Ninja::isSelfHost()) { $company = Account::first()->default_company; if (! $company->client_can_register) { abort(403, 'This page is restricted'); } return $company; } if (Ninja::isHosted()) { $subdomain = explode('.', $this->getHost())[0]; $query = [ 'subdomain' => $subdomain, 'portal_mode' => 'subdomain', ]; if ($company = MultiDB::findAndSetDbByDomain($query)) { return $company; } $query = [ 'portal_domain' => $this->getSchemeAndHttpHost(), 'portal_mode' => 'domain', ]; if ($company = MultiDB::findAndSetDbByDomain($query)) { return $company; } } abort(400, 'Register request not found.'); } }