Files
expense/app/Helpers/NextCloudHelper.php
T

130 lines
3.9 KiB
PHP
Raw Normal View History

2024-12-13 19:34:33 +07:00
<?php
namespace App\Helpers;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
class NextCloudHelper
{
/**
* Create a folder in Nextcloud.
*
* @param string $baseUrl Nextcloud Base URL
* @param string $username Nextcloud Username
* @param string $password Nextcloud Password
* @param string $folderPath Folder Path to Create
* @return array Response Data
*/
public static function createFolder($baseUrl, $username, $password, $folderPath)
{
$client = new Client();
$url = rtrim($baseUrl, '/') . "/remote.php/dav/files/{$username}/" . ltrim($folderPath, '/');
try {
$response = $client->request('MKCOL', $url, [
'auth' => [$username, $password]
]);
return [
'success' => true,
'status' => $response->getStatusCode(),
'message' => 'Folder created successfully.'
];
} catch (RequestException $e) {
return [
'success' => false,
'status' => $e->getCode(),
'message' => $e->getMessage(),
];
}
}
/**
* Create a user in Nextcloud.
*
* @param string $baseUrl Nextcloud Base URL
* @param string $adminUsername Admin Username
* @param string $adminPassword Admin Password
* @param string $userId New User ID
* @param string $password New User Password
* @param string $displayName New User Display Name
* @param string $email New User Email
* @return array Response Data
*/
public static function createUser($baseUrl, $adminUsername, $adminPassword, $userId, $password, $displayName, $email)
{
$client = new Client();
$url = rtrim($baseUrl, '/') . "/mktia/ocs/v1.php/cloud/users";
try {
$response = $client->request('POST', $url, [
'auth' => [$adminUsername, $adminPassword],
'headers' => [
'OCS-APIRequest' => 'true',
],
'form_params' => [
'userid' => $userId,
'password' => $password,
'displayName' => $displayName,
'email' => $email
]
]);
return [
'success' => true,
'status' => $response->getStatusCode(),
'message' => 'User created successfully.'
];
} catch (RequestException $e) {
return [
'success' => false,
'status' => $e->getCode(),
'message' => $e->getMessage(),
];
}
}
/**
* Add a user to a group in Nextcloud.
*
* @param string $baseUrl Nextcloud Base URL
* @param string $adminUsername Admin Username
* @param string $adminPassword Admin Password
* @param string $userId New User ID
* @param string $groupName Group Name
* @return array Response Data
*/
public static function addUserToGroup($baseUrl, $adminUsername, $adminPassword, $userId, $groupName)
{
$client = new Client();
$url = rtrim($baseUrl, '/') . "/mktia/ocs/v1.php/cloud/groups/{$groupName}";
try {
$response = $client->request('POST', $url, [
'auth' => [$adminUsername, $adminPassword],
'headers' => [
'OCS-APIRequest' => 'true',
],
'form_params' => [
'userid' => $userId
]
]);
return [
'success' => true,
'status' => $response->getStatusCode(),
'message' => 'User added to group successfully.'
];
} catch (RequestException $e) {
return [
'success' => false,
'status' => $e->getCode(),
'message' => $e->getMessage(),
];
}
}
}