user()?->tokenCan('press-releases:write') === true; } /** * Get the validation rules that apply to the request. * * @return array|string> */ public function rules(): array { return [ 'portal' => ['nullable', Rule::enum(Portal::class)->only([Portal::Presseecho, Portal::Businessportal24])], 'company_id' => ['sometimes', 'required', 'integer', 'exists:companies,id'], 'category_id' => ['sometimes', 'required', 'integer', 'exists:categories,id'], 'language' => ['sometimes', 'required', 'string', $this->languageRule()], 'title' => ['sometimes', 'required', 'string', 'max:255'], 'text' => ['sometimes', 'required', 'string'], 'backlink_url' => ['nullable', 'url', 'max:255'], 'keywords' => ['nullable', 'string', 'max:255'], 'teaser_begin' => ['nullable', 'integer', 'min:0'], 'teaser_end' => ['nullable', 'integer', 'min:0'], 'no_export' => ['nullable', 'boolean'], ]; } /** * Nur die ausgelieferten Ausgaben `de` und `en` (Audit F11) – ein * beliebiger Zweizeichen-Code landete sonst im Unique-Schlüssel der PM. * Legacy-Aliasse (/service/…) behalten den alten Vertrag. */ private function languageRule(): ValidationRule|string { return str_starts_with((string) $this->route()?->getName(), 'legacy-service.') ? 'size:2' : Rule::in(['de', 'en']); } }