root.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. /* Forward root to /status */
  3. $app->get('', function ($request, $response, $args) {
  4. return $response
  5. ->withHeader('Location', '/api/v2/status')
  6. ->withStatus(302);
  7. });
  8. $app->get('/', function ($request, $response, $args) {
  9. return $response
  10. ->withHeader('Location', '/api/v2/status')
  11. ->withStatus(302);
  12. });
  13. $app->get('/status', function ($request, $response, $args) {
  14. /**
  15. * @OA\Get(
  16. * path="/api/v2/status",
  17. * summary="Query Organizr API to perform a Status Check",
  18. * @OA\Response(
  19. * response="200",
  20. * description="Success",
  21. * @OA\JsonContent(ref="#/components/schemas/status"),
  22. * ),
  23. * @OA\Response(response="401",description="Unauthorized")
  24. * )
  25. */
  26. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  27. if ($Organizr->checkRoute($request)) {
  28. $GLOBALS['api']['response']['data'] = $Organizr->status(true);
  29. }
  30. $response->getBody()->write(jsonE($GLOBALS['api']));
  31. return $response
  32. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  33. ->withStatus($GLOBALS['responseCode']);
  34. });
  35. $app->any('/auth', function ($request, $response, $args) {
  36. /**
  37. * @OA\Get(
  38. * path="/api/v2/auth",
  39. * summary="Nginx auth_request",
  40. * @OA\Parameter(
  41. * name="group",
  42. * description="The id of the group allowed",
  43. * @OA\Schema(
  44. * type="integer",
  45. * format="int64",
  46. * ),
  47. * in="query",
  48. * required=false
  49. * ),
  50. * @OA\Parameter(
  51. * name="whitelist",
  52. * description="Whitelisted Ip's",
  53. * @OA\Schema(
  54. * type="array",
  55. * @OA\Items(
  56. * type="string",
  57. * ),
  58. * ),
  59. * in="query",
  60. * explode=false,
  61. * required=false
  62. * ),
  63. * @OA\Parameter(
  64. * name="blacklist",
  65. * description="Blacklisted Ip's",
  66. * @OA\Schema(
  67. * type="array",
  68. * @OA\Items(
  69. * type="string",
  70. * ),
  71. * ),
  72. * in="query",
  73. * explode=false,
  74. * required=false
  75. * ),
  76. * @OA\Response(
  77. * response="200",
  78. * description="Success",
  79. * ),
  80. * @OA\Response(response="401",description="Unauthorized"),
  81. * )
  82. */
  83. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  84. $Organizr->auth();
  85. $response->getBody()->write(jsonE($GLOBALS['api']));
  86. return $response
  87. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  88. ->withStatus($GLOBALS['responseCode']);
  89. });
  90. $app->any('/auth-{group}', function ($request, $response, $args) {
  91. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  92. $_GET['group'] = $args['group'];
  93. $Organizr->auth();
  94. $response->getBody()->write(jsonE($GLOBALS['api']));
  95. return $response
  96. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  97. ->withStatus($GLOBALS['responseCode']);
  98. });
  99. $app->any('/auth/[{group}[/{type}[/{ips}]]]', function ($request, $response, $args) {
  100. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  101. $_GET['group'] = $args['group'] ?? 0;
  102. $_GET['type'] = $args['type'] ?? 'deny';
  103. $_GET['ips'] = $args['ips'] ?? '192.0.0.0';
  104. $Organizr->auth();
  105. $response->getBody()->write(jsonE($GLOBALS['api']));
  106. return $response
  107. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  108. ->withStatus($GLOBALS['responseCode']);
  109. });
  110. $app->any('/organizr-auth/[{group}[/{type}[/{ips}]]]', function ($request, $response, $args) {
  111. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  112. $_GET['group'] = $args['group'] ?? 0;
  113. $_GET['type'] = $args['type'] ?? 'deny';
  114. $_GET['ips'] = $args['ips'] ?? '192.0.0.0';
  115. $Organizr->auth();
  116. $response->getBody()->write(jsonE($GLOBALS['api']));
  117. return $response
  118. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  119. ->withStatus($GLOBALS['responseCode']);
  120. });
  121. $app->get('/launch', function ($request, $response, $args) {
  122. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  123. $tabInfo = $Organizr->getUserTabsAndCategories();
  124. $GLOBALS['api']['response']['data']['categories'] = ($tabInfo['categories']) ?? false;
  125. $GLOBALS['api']['response']['data']['tabs'] = ($tabInfo['tabs']) ?? false;
  126. $GLOBALS['api']['response']['data']['user'] = $Organizr->user;
  127. $GLOBALS['api']['response']['data']['branch'] = $Organizr->config['branch'];
  128. $GLOBALS['api']['response']['data']['theme'] = $Organizr->config['theme'];
  129. $GLOBALS['api']['response']['data']['style'] = $Organizr->config['style'];
  130. $GLOBALS['api']['response']['data']['version'] = $Organizr->version;
  131. $GLOBALS['api']['response']['data']['settings'] = $Organizr->organizrSpecialSettings();
  132. $GLOBALS['api']['response']['data']['plugins'] = $Organizr->pluginGlobalList();
  133. $GLOBALS['api']['response']['data']['appearance'] = $Organizr->loadAppearance();
  134. $GLOBALS['api']['response']['data']['status'] = $Organizr->launch();
  135. $GLOBALS['api']['response']['data']['sso'] = $Organizr->ssoCookies();
  136. $GLOBALS['api']['response']['data']['warnings'] = $Organizr->warnings;
  137. $response->getBody()->write(jsonE($GLOBALS['api']));
  138. return $response
  139. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  140. ->withStatus($GLOBALS['responseCode']);
  141. });