2023-03-23 20:32:23 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
namespace OCA\Memories;
|
|
|
|
|
|
|
|
use OCP\AppFramework\Http;
|
|
|
|
use OCP\AppFramework\Http\DataResponse;
|
|
|
|
|
|
|
|
trait UtilController
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Run a function and catch exceptions to return HTTP response.
|
|
|
|
*
|
2023-03-23 20:49:26 +00:00
|
|
|
* @param mixed $function
|
2023-03-23 20:32:23 +00:00
|
|
|
*/
|
|
|
|
public static function guardEx($function): Http\Response
|
|
|
|
{
|
|
|
|
try {
|
|
|
|
return $function();
|
|
|
|
} catch (\OCA\Memories\HttpResponseException $e) {
|
|
|
|
return $e->response;
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
return new DataResponse([
|
|
|
|
'message' => $e->getMessage(),
|
|
|
|
], Http::STATUS_INTERNAL_SERVER_ERROR);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the current user.
|
|
|
|
*
|
|
|
|
* @throws \OCA\Memories\HttpResponseException if the user is not logged in
|
|
|
|
*/
|
|
|
|
public static function getUser(): \OCP\IUser
|
|
|
|
{
|
|
|
|
$user = \OC::$server->get(\OCP\IUserSession::class)->getUser();
|
|
|
|
if (null === $user) {
|
|
|
|
throw Exceptions::NotLoggedIn();
|
|
|
|
}
|
|
|
|
|
|
|
|
return $user;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the current user ID.
|
|
|
|
*
|
|
|
|
* @throws \OCA\Memories\HttpResponseException if the user is not logged in
|
|
|
|
*/
|
|
|
|
public static function getUID(): string
|
|
|
|
{
|
|
|
|
return self::getUser()->getUID();
|
|
|
|
}
|
|
|
|
|
2023-03-23 23:58:49 +00:00
|
|
|
/**
|
|
|
|
* Check if the user is logged in.
|
|
|
|
*/
|
|
|
|
public static function isLoggedIn(): bool
|
|
|
|
{
|
|
|
|
return null !== \OC::$server->get(\OCP\IUserSession::class)->getUser();
|
|
|
|
}
|
|
|
|
|
2023-03-23 20:32:23 +00:00
|
|
|
/**
|
|
|
|
* Get a user's home folder.
|
|
|
|
*
|
|
|
|
* @param null|string $uid User ID, or null for current user
|
|
|
|
*
|
|
|
|
* @throws \OCA\Memories\HttpResponseException if the user is not logged in
|
|
|
|
*/
|
|
|
|
public static function getUserFolder(?string $uid = null): \OCP\Files\Folder
|
|
|
|
{
|
|
|
|
if (null === $uid) {
|
|
|
|
$uid = self::getUID();
|
|
|
|
}
|
|
|
|
|
|
|
|
return \OC::$server->get(\OCP\Files\IRootFolder::class)->getUserFolder($uid);
|
|
|
|
}
|
|
|
|
}
|