2011-09-23 16:22:59 -04:00
|
|
|
<?php
|
2024-05-23 03:26:56 -04:00
|
|
|
|
2011-09-23 16:22:59 -04:00
|
|
|
/**
|
2024-05-23 03:26:56 -04:00
|
|
|
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
|
|
|
|
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
|
|
|
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
2015-02-26 05:37:37 -05:00
|
|
|
*/
|
2023-08-29 18:18:12 -04:00
|
|
|
|
|
|
|
|
use OC\Authentication\TwoFactorAuth\Manager as TwoFactorAuthManager;
|
|
|
|
|
|
2020-04-10 08:19:56 -04:00
|
|
|
class OC_JSON {
|
2011-09-30 17:05:10 -04:00
|
|
|
/**
|
2015-02-11 18:56:13 -05:00
|
|
|
* Check if the app is enabled, send json error msg if not
|
|
|
|
|
* @param string $app
|
|
|
|
|
* @deprecated Use the AppFramework instead. It will automatically check if the app is enabled.
|
2017-07-19 14:21:05 -04:00
|
|
|
* @suppress PhanDeprecatedFunction
|
2015-02-11 18:56:13 -05:00
|
|
|
*/
|
2012-09-07 09:22:01 -04:00
|
|
|
public static function checkAppEnabled($app) {
|
2020-04-10 08:19:56 -04:00
|
|
|
if (!\OC::$server->getAppManager()->isEnabledForUser($app)) {
|
2014-08-31 04:05:59 -04:00
|
|
|
$l = \OC::$server->getL10N('lib');
|
2020-03-26 04:30:18 -04:00
|
|
|
self::error([ 'data' => [ 'message' => $l->t('Application is not enabled'), 'error' => 'application_not_enabled' ]]);
|
2011-09-30 17:05:10 -04:00
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2011-09-23 16:22:59 -04:00
|
|
|
/**
|
2015-02-11 18:56:13 -05:00
|
|
|
* Check if the user is logged in, send json error msg if not
|
|
|
|
|
* @deprecated Use annotation based ACLs from the AppFramework instead
|
2017-07-19 14:21:05 -04:00
|
|
|
* @suppress PhanDeprecatedFunction
|
2015-02-11 18:56:13 -05:00
|
|
|
*/
|
2012-09-07 09:22:01 -04:00
|
|
|
public static function checkLoggedIn() {
|
2023-08-29 18:18:12 -04:00
|
|
|
$twoFactorAuthManger = \OC::$server->get(TwoFactorAuthManager::class);
|
2020-04-10 08:19:56 -04:00
|
|
|
if (!\OC::$server->getUserSession()->isLoggedIn()
|
2016-08-24 04:42:07 -04:00
|
|
|
|| $twoFactorAuthManger->needsSecondFactor(\OC::$server->getUserSession()->getUser())) {
|
2014-08-31 04:05:59 -04:00
|
|
|
$l = \OC::$server->getL10N('lib');
|
2016-02-16 03:48:40 -05:00
|
|
|
http_response_code(\OCP\AppFramework\Http::STATUS_UNAUTHORIZED);
|
2020-03-26 04:30:18 -04:00
|
|
|
self::error([ 'data' => [ 'message' => $l->t('Authentication error'), 'error' => 'authentication_error' ]]);
|
2011-09-23 16:22:59 -04:00
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-06-13 11:33:19 -04:00
|
|
|
/**
|
2014-04-21 09:44:54 -04:00
|
|
|
* Check an ajax get/post call if the request token is valid, send json error msg if not.
|
2015-02-11 18:56:13 -05:00
|
|
|
* @deprecated Use annotation based CSRF checks from the AppFramework instead
|
2017-07-19 14:21:05 -04:00
|
|
|
* @suppress PhanDeprecatedFunction
|
2012-06-13 11:33:19 -04:00
|
|
|
*/
|
2012-09-07 09:22:01 -04:00
|
|
|
public static function callCheck() {
|
2020-04-10 08:19:56 -04:00
|
|
|
if (!\OC::$server->getRequest()->passesStrictCookieCheck()) {
|
2016-07-20 11:37:30 -04:00
|
|
|
header('Location: '.\OC::$WEBROOT);
|
|
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-10 08:19:56 -04:00
|
|
|
if (!\OC::$server->getRequest()->passesCSRFCheck()) {
|
2014-08-31 04:05:59 -04:00
|
|
|
$l = \OC::$server->getL10N('lib');
|
2020-03-26 04:30:18 -04:00
|
|
|
self::error([ 'data' => [ 'message' => $l->t('Token expired. Please reload page.'), 'error' => 'token_expired' ]]);
|
2012-06-13 11:33:19 -04:00
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
}
|
2012-08-29 02:38:33 -04:00
|
|
|
|
2011-09-23 16:22:59 -04:00
|
|
|
/**
|
2015-02-11 18:56:13 -05:00
|
|
|
* Check if the user is a admin, send json error msg if not.
|
|
|
|
|
* @deprecated Use annotation based ACLs from the AppFramework instead
|
2017-07-19 14:21:05 -04:00
|
|
|
* @suppress PhanDeprecatedFunction
|
2015-02-11 18:56:13 -05:00
|
|
|
*/
|
2012-09-07 09:22:01 -04:00
|
|
|
public static function checkAdminUser() {
|
2020-04-10 08:19:56 -04:00
|
|
|
if (!OC_User::isAdminUser(OC_User::getUser())) {
|
2014-08-31 04:05:59 -04:00
|
|
|
$l = \OC::$server->getL10N('lib');
|
2020-03-26 04:30:18 -04:00
|
|
|
self::error([ 'data' => [ 'message' => $l->t('Authentication error'), 'error' => 'authentication_error' ]]);
|
2011-09-23 16:22:59 -04:00
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
}
|
2012-08-29 02:38:33 -04:00
|
|
|
|
2011-09-23 16:22:59 -04:00
|
|
|
/**
|
2015-02-11 18:56:13 -05:00
|
|
|
* Send json error msg
|
|
|
|
|
* @deprecated Use a AppFramework JSONResponse instead
|
2017-07-19 14:21:05 -04:00
|
|
|
* @suppress PhanDeprecatedFunction
|
2020-12-11 16:23:11 -05:00
|
|
|
* @psalm-taint-escape html
|
2015-02-11 18:56:13 -05:00
|
|
|
*/
|
2020-03-26 04:30:18 -04:00
|
|
|
public static function error($data = []) {
|
2011-09-23 16:22:59 -04:00
|
|
|
$data['status'] = 'error';
|
2020-04-09 10:07:47 -04:00
|
|
|
header('Content-Type: application/json; charset=utf-8');
|
2018-03-12 13:28:46 -04:00
|
|
|
echo self::encode($data);
|
2011-09-23 16:22:59 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2015-02-11 18:56:13 -05:00
|
|
|
* Send json success msg
|
|
|
|
|
* @deprecated Use a AppFramework JSONResponse instead
|
2017-07-19 14:21:05 -04:00
|
|
|
* @suppress PhanDeprecatedFunction
|
2020-12-11 16:23:11 -05:00
|
|
|
* @psalm-taint-escape html
|
2015-02-11 18:56:13 -05:00
|
|
|
*/
|
2020-03-26 04:30:18 -04:00
|
|
|
public static function success($data = []) {
|
2011-09-23 16:22:59 -04:00
|
|
|
$data['status'] = 'success';
|
2020-04-09 10:07:47 -04:00
|
|
|
header('Content-Type: application/json; charset=utf-8');
|
2018-03-12 13:28:46 -04:00
|
|
|
echo self::encode($data);
|
2011-09-23 16:22:59 -04:00
|
|
|
}
|
|
|
|
|
|
2013-12-10 09:32:48 -05:00
|
|
|
/**
|
|
|
|
|
* Encode JSON
|
2015-02-11 18:56:13 -05:00
|
|
|
* @deprecated Use a AppFramework JSONResponse instead
|
2013-12-10 09:32:48 -05:00
|
|
|
*/
|
2024-03-05 18:26:55 -05:00
|
|
|
private static function encode($data) {
|
2015-09-02 18:44:46 -04:00
|
|
|
return json_encode($data, JSON_HEX_TAG);
|
2011-09-23 16:22:59 -04:00
|
|
|
}
|
|
|
|
|
}
|