aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/l10n/sw.js1
-rw-r--r--lib/l10n/sw.json1
-rw-r--r--lib/l10n/tr.js10
-rw-r--r--lib/l10n/tr.json10
-rw-r--r--lib/private/Profile/ProfileManager.php4
-rw-r--r--lib/private/TaskProcessing/Manager.php33
-rw-r--r--lib/public/TaskProcessing/IManager.php4
7 files changed, 49 insertions, 14 deletions
diff --git a/lib/l10n/sw.js b/lib/l10n/sw.js
index 1e14a7e863a..51d62a7efd3 100644
--- a/lib/l10n/sw.js
+++ b/lib/l10n/sw.js
@@ -14,6 +14,7 @@ OC.L10N.register(
"Filenames must not end with \"%1$s\"." : "Majina ya faili hayapaswi kuishia na \"%1$s\"",
"File already exists" : "Faili lipo tayari",
"Templates" : "Violezo",
+ "__language_name__" : "_lugha_jina_",
"Apps" : "Maombi",
"Settings" : "Mipangilio",
"Log out" : "Ondoka",
diff --git a/lib/l10n/sw.json b/lib/l10n/sw.json
index a4d0bdc97d8..b3b31aeb4f7 100644
--- a/lib/l10n/sw.json
+++ b/lib/l10n/sw.json
@@ -12,6 +12,7 @@
"Filenames must not end with \"%1$s\"." : "Majina ya faili hayapaswi kuishia na \"%1$s\"",
"File already exists" : "Faili lipo tayari",
"Templates" : "Violezo",
+ "__language_name__" : "_lugha_jina_",
"Apps" : "Maombi",
"Settings" : "Mipangilio",
"Log out" : "Ondoka",
diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js
index 5f28ef658ab..6f9f8b4f128 100644
--- a/lib/l10n/tr.js
+++ b/lib/l10n/tr.js
@@ -337,11 +337,11 @@ OC.L10N.register(
"A chat message to send to the agent." : "Aracıya gönderilecek sohbet iletisi.",
"Confirmation" : "Onaylama",
"Whether to confirm previously requested actions: 0 for denial and 1 for confirmation." : "Daha önce istenilen işlemlerin onaylanıp onaylanmayacağı: Reddedilmesi için 0, onaylanması için 1.",
- "Conversation token" : "Yazışma kodu",
- "A token representing the conversation." : "Yazışmanın kodu.",
+ "Conversation token" : "Görüşme kodu",
+ "A token representing the conversation." : "Görüşmenin kodu.",
"Generated response" : "Üretilen yanıt",
"The response from the chat model." : "Sohbet modelinin yanıtı.",
- "The new conversation token" : "Yeni sohbet kodu",
+ "The new conversation token" : "Yeni görüşme kodu",
"Send this along with the next interaction." : "Bunu sonraki etkileşimin yanında gönderin.",
"Requested actions by the agent" : "Aracı tarafından istenilen işlemler",
"Actions that the agent would like to carry out in JSON format." : "Aracının JSON biçiminde gerçekleştirmesi istenen işlemler.",
@@ -385,11 +385,11 @@ OC.L10N.register(
"Chat" : "Sohbet",
"Chat with the assistant" : "Yardımcı ile sohbet et",
"System prompt" : "Sistem istemi",
- "Define rules and assumptions that the assistant should follow during the conversation." : "Sohbet sırasında yardımcının uyması gereken kuralları ve varsayımları tanımlayın.",
+ "Define rules and assumptions that the assistant should follow during the conversation." : "Görüşme sırasında yardımcının uyması gereken kuralları ve varsayımları tanımlayın.",
"Chat history" : "Sohbet geçmişi",
"The history of chat messages before the current message, starting with a message by the user" : "Kullanıcının iletisiyle başlayarak, geçerli iletiden önceki sohbet iletilerinin geçmişi",
"Response message" : "Yanıt iletisi",
- "The generated response as part of the conversation" : "Sohbetin parçası olarak oluşturulan yanıt",
+ "The generated response as part of the conversation" : "Görüşmenin parçası olarak oluşturulan yanıt",
"Chat with tools" : "Araçlar ile sohbet",
"Chat with the language model with tool calling support." : "Araç çağırma desteği ile dil modeliyle sohbet edin.",
"Tool message" : "Araç iletisi",
diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json
index 2e46571c57f..2d5fd38f4c7 100644
--- a/lib/l10n/tr.json
+++ b/lib/l10n/tr.json
@@ -335,11 +335,11 @@
"A chat message to send to the agent." : "Aracıya gönderilecek sohbet iletisi.",
"Confirmation" : "Onaylama",
"Whether to confirm previously requested actions: 0 for denial and 1 for confirmation." : "Daha önce istenilen işlemlerin onaylanıp onaylanmayacağı: Reddedilmesi için 0, onaylanması için 1.",
- "Conversation token" : "Yazışma kodu",
- "A token representing the conversation." : "Yazışmanın kodu.",
+ "Conversation token" : "Görüşme kodu",
+ "A token representing the conversation." : "Görüşmenin kodu.",
"Generated response" : "Üretilen yanıt",
"The response from the chat model." : "Sohbet modelinin yanıtı.",
- "The new conversation token" : "Yeni sohbet kodu",
+ "The new conversation token" : "Yeni görüşme kodu",
"Send this along with the next interaction." : "Bunu sonraki etkileşimin yanında gönderin.",
"Requested actions by the agent" : "Aracı tarafından istenilen işlemler",
"Actions that the agent would like to carry out in JSON format." : "Aracının JSON biçiminde gerçekleştirmesi istenen işlemler.",
@@ -383,11 +383,11 @@
"Chat" : "Sohbet",
"Chat with the assistant" : "Yardımcı ile sohbet et",
"System prompt" : "Sistem istemi",
- "Define rules and assumptions that the assistant should follow during the conversation." : "Sohbet sırasında yardımcının uyması gereken kuralları ve varsayımları tanımlayın.",
+ "Define rules and assumptions that the assistant should follow during the conversation." : "Görüşme sırasında yardımcının uyması gereken kuralları ve varsayımları tanımlayın.",
"Chat history" : "Sohbet geçmişi",
"The history of chat messages before the current message, starting with a message by the user" : "Kullanıcının iletisiyle başlayarak, geçerli iletiden önceki sohbet iletilerinin geçmişi",
"Response message" : "Yanıt iletisi",
- "The generated response as part of the conversation" : "Sohbetin parçası olarak oluşturulan yanıt",
+ "The generated response as part of the conversation" : "Görüşmenin parçası olarak oluşturulan yanıt",
"Chat with tools" : "Araçlar ile sohbet",
"Chat with the language model with tool calling support." : "Araç çağırma desteği ile dil modeliyle sohbet edin.",
"Tool message" : "Araç iletisi",
diff --git a/lib/private/Profile/ProfileManager.php b/lib/private/Profile/ProfileManager.php
index 84c7ea48373..1ade208fbcf 100644
--- a/lib/private/Profile/ProfileManager.php
+++ b/lib/private/Profile/ProfileManager.php
@@ -350,7 +350,7 @@ class ProfileManager implements IProfileManager {
}
/**
- * Return the profile config of the target user with additional medatata,
+ * Return the profile config of the target user with additional metadata,
* if a config does not already exist a default config is created and returned
*/
public function getProfileConfigWithMetadata(IUser $targetUser, ?IUser $visitingUser): array {
@@ -399,7 +399,7 @@ class ProfileManager implements IProfileManager {
],
IAccountManager::PROPERTY_ORGANISATION => [
'appId' => self::CORE_APP_ID,
- 'displayId' => $this->l10nFactory->get('lib')->t('Organisation'),
+ 'displayId' => $this->l10nFactory->get('lib')->t('Organization'),
],
IAccountManager::PROPERTY_ROLE => [
'appId' => self::CORE_APP_ID,
diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php
index 9992310dbbb..0ffd141543f 100644
--- a/lib/private/TaskProcessing/Manager.php
+++ b/lib/private/TaskProcessing/Manager.php
@@ -36,6 +36,8 @@ use OCP\ICacheFactory;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IServerContainer;
+use OCP\IUserManager;
+use OCP\IUserSession;
use OCP\L10N\IFactory;
use OCP\Lock\LockedException;
use OCP\SpeechToText\ISpeechToTextProvider;
@@ -103,6 +105,8 @@ class Manager implements IManager {
private IUserMountCache $userMountCache,
private IClientService $clientService,
private IAppManager $appManager,
+ private IUserManager $userManager,
+ private IUserSession $userSession,
ICacheFactory $cacheFactory,
) {
$this->appData = $appDataFactory->get('core');
@@ -809,7 +813,11 @@ class Manager implements IManager {
throw new \OCP\TaskProcessing\Exception\Exception('No matching provider found');
}
- public function getAvailableTaskTypes(bool $showDisabled = false): array {
+ public function getAvailableTaskTypes(bool $showDisabled = false, ?string $userId = null): array {
+ // userId will be obtained from the session if left to null
+ if (!$this->checkGuestAccess($userId)) {
+ return [];
+ }
if ($this->availableTaskTypes === null) {
$cachedValue = $this->distributedCache->get('available_task_types_v2');
if ($cachedValue !== null) {
@@ -868,7 +876,27 @@ class Manager implements IManager {
return isset($this->getAvailableTaskTypes()[$task->getTaskTypeId()]);
}
+ private function checkGuestAccess(?string $userId = null): bool {
+ if ($userId === null && !$this->userSession->isLoggedIn()) {
+ return true;
+ }
+ if ($userId === null) {
+ $user = $this->userSession->getUser();
+ } else {
+ $user = $this->userManager->get($userId);
+ }
+
+ $guestsAllowed = $this->config->getAppValue('core', 'ai.taskprocessing_guests', 'false');
+ if ($guestsAllowed == 'true' || !class_exists(\OCA\Guests\UserBackend::class) || !($user->getBackend() instanceof \OCA\Guests\UserBackend)) {
+ return true;
+ }
+ return false;
+ }
+
public function scheduleTask(Task $task): void {
+ if (!$this->checkGuestAccess($task->getUserId())) {
+ throw new \OCP\TaskProcessing\Exception\PreConditionNotMetException('Access to this resource is forbidden for guests.');
+ }
if (!$this->canHandleTask($task)) {
throw new \OCP\TaskProcessing\Exception\PreConditionNotMetException('No task processing provider is installed that can handle this task type: ' . $task->getTaskTypeId());
}
@@ -883,6 +911,9 @@ class Manager implements IManager {
}
public function runTask(Task $task): Task {
+ if (!$this->checkGuestAccess($task->getUserId())) {
+ throw new \OCP\TaskProcessing\Exception\PreConditionNotMetException('Access to this resource is forbidden for guests.');
+ }
if (!$this->canHandleTask($task)) {
throw new \OCP\TaskProcessing\Exception\PreConditionNotMetException('No task processing provider is installed that can handle this task type: ' . $task->getTaskTypeId());
}
diff --git a/lib/public/TaskProcessing/IManager.php b/lib/public/TaskProcessing/IManager.php
index 68825e82533..f161030f5f4 100644
--- a/lib/public/TaskProcessing/IManager.php
+++ b/lib/public/TaskProcessing/IManager.php
@@ -47,11 +47,13 @@ interface IManager {
/**
* @param bool $showDisabled if false, disabled task types will be filtered
+ * @param ?string $userId to check if the user is a guest. Will be obtained from session if left to default
* @return array<string, array{name: string, description: string, inputShape: ShapeDescriptor[], inputShapeEnumValues: ShapeEnumValue[][], inputShapeDefaults: array<array-key, numeric|string>, optionalInputShape: ShapeDescriptor[], optionalInputShapeEnumValues: ShapeEnumValue[][], optionalInputShapeDefaults: array<array-key, numeric|string>, outputShape: ShapeDescriptor[], outputShapeEnumValues: ShapeEnumValue[][], optionalOutputShape: ShapeDescriptor[], optionalOutputShapeEnumValues: ShapeEnumValue[][]}>
* @since 30.0.0
* @since 31.0.0 Added the `showDisabled` argument.
+ * @since 31.0.7 Added the `userId` argument
*/
- public function getAvailableTaskTypes(bool $showDisabled = false): array;
+ public function getAvailableTaskTypes(bool $showDisabled = false, ?string $userId = null): array;
/**
* @param Task $task The task to run