root.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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'] = array(
  29. 'status' => 'ok',
  30. 'api_version' => '2.0',
  31. 'organizr_version' => $Organizr->version
  32. );
  33. }
  34. $response->getBody()->write(jsonE($GLOBALS['api']));
  35. return $response
  36. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  37. ->withStatus($GLOBALS['responseCode']);
  38. });
  39. $app->any('/auth', function ($request, $response, $args) {
  40. /**
  41. * @OA\Get(
  42. * path="/api/v2/auth",
  43. * summary="Nginx auth_request",
  44. * @OA\Parameter(
  45. * name="group",
  46. * description="The id of the group allowed",
  47. * @OA\Schema(
  48. * type="integer",
  49. * format="int64",
  50. * ),
  51. * in="query",
  52. * required=false
  53. * ),
  54. * @OA\Parameter(
  55. * name="whitelist",
  56. * description="Whitelisted Ip's",
  57. * @OA\Schema(
  58. * type="array",
  59. * @OA\Items(
  60. * type="string",
  61. * ),
  62. * ),
  63. * in="query",
  64. * explode=false,
  65. * required=false
  66. * ),
  67. * @OA\Parameter(
  68. * name="blacklist",
  69. * description="Blacklisted Ip's",
  70. * @OA\Schema(
  71. * type="array",
  72. * @OA\Items(
  73. * type="string",
  74. * ),
  75. * ),
  76. * in="query",
  77. * explode=false,
  78. * required=false
  79. * ),
  80. * @OA\Response(
  81. * response="200",
  82. * description="Success",
  83. * ),
  84. * @OA\Response(response="401",description="Unauthorized"),
  85. * )
  86. */
  87. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  88. $Organizr->auth();
  89. $response->getBody()->write(jsonE($GLOBALS['api']));
  90. return $response
  91. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  92. ->withStatus($GLOBALS['responseCode']);
  93. });
  94. $app->any('/auth-{group}', function ($request, $response, $args) {
  95. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  96. $_GET['group'] = $args['group'];
  97. $Organizr->auth();
  98. $response->getBody()->write(jsonE($GLOBALS['api']));
  99. return $response
  100. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  101. ->withStatus($GLOBALS['responseCode']);
  102. });
  103. $app->any('/auth/[{group}[/{type}[/{ips}]]]', function ($request, $response, $args) {
  104. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  105. $_GET['group'] = $args['group'];
  106. $_GET['type'] = $args['type'];
  107. $_GET['ips'] = $args['ips'];
  108. $Organizr->auth();
  109. $response->getBody()->write(jsonE($GLOBALS['api']));
  110. return $response
  111. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  112. ->withStatus($GLOBALS['responseCode']);
  113. });
  114. $app->get('/launch', function ($request, $response, $args) {
  115. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  116. $tabInfo = $Organizr->getUserTabsAndCategories();
  117. $GLOBALS['api']['response']['data']['categories'] = ($tabInfo['categories']) ?? false;
  118. $GLOBALS['api']['response']['data']['tabs'] = ($tabInfo['tabs']) ?? false;
  119. $GLOBALS['api']['response']['data']['user'] = $Organizr->user;
  120. $GLOBALS['api']['response']['data']['branch'] = $Organizr->config['branch'];
  121. $GLOBALS['api']['response']['data']['theme'] = $Organizr->config['theme'];
  122. $GLOBALS['api']['response']['data']['style'] = $Organizr->config['style'];
  123. $GLOBALS['api']['response']['data']['version'] = $Organizr->version;
  124. $GLOBALS['api']['response']['data']['settings'] = $Organizr->organizrSpecialSettings();
  125. $GLOBALS['api']['response']['data']['plugins'] = $Organizr->pluginGlobalList();
  126. $GLOBALS['api']['response']['data']['appearance'] = $Organizr->loadAppearance();
  127. $GLOBALS['api']['response']['data']['status'] = $Organizr->status();
  128. $GLOBALS['api']['response']['data']['sso'] = $Organizr->ssoCookies();
  129. $response->getBody()->write(jsonE($GLOBALS['api']));
  130. return $response
  131. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  132. ->withStatus($GLOBALS['responseCode']);
  133. });