SettingController.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace App\Api\v1\Controllers;
  3. use App\Facades\Settings;
  4. use App\Api\v1\Requests\SettingStoreRequest;
  5. use App\Api\v1\Requests\SettingUpdateRequest;
  6. use App\Http\Controllers\Controller;
  7. class SettingController extends Controller
  8. {
  9. /**
  10. * List all settings
  11. *
  12. * @return \Illuminate\Http\JsonResponse
  13. */
  14. public function index()
  15. {
  16. $settings = Settings::all();
  17. $settingsResources = collect();
  18. $settings->each(function ($item, $key) use ($settingsResources) {
  19. $settingsResources->push([
  20. 'key' => $key,
  21. 'value' => $item
  22. ]);
  23. });
  24. // return SettingResource::collection($tata);
  25. return response()->json($settingsResources->all(), 200);
  26. }
  27. /**
  28. * Display a setting
  29. *
  30. * @param string $settingName
  31. * @return \Illuminate\Http\JsonResponse
  32. */
  33. public function show($settingName)
  34. {
  35. $setting = Settings::get($settingName);
  36. if (is_null($setting)) {
  37. abort(404);
  38. }
  39. return response()->json([
  40. 'key' => $settingName,
  41. 'value' => $setting
  42. ], 200);
  43. }
  44. /**
  45. * Store a setting
  46. *
  47. * @param \App\Api\v1\Requests\SettingStoreRequest $request
  48. * @return \Illuminate\Http\JsonResponse
  49. */
  50. public function store(SettingStoreRequest $request)
  51. {
  52. $validated = $request->validated();
  53. Settings::set($validated['key'], $validated['value']);
  54. return response()->json([
  55. 'key' => $validated['key'],
  56. 'value' => $validated['value']
  57. ], 201);
  58. }
  59. /**
  60. * Update a setting
  61. *
  62. * @param \App\Api\v1\Requests\SettingUpdateRequest $request
  63. * @return \Illuminate\Http\JsonResponse
  64. */
  65. public function update(SettingUpdateRequest $request, string $settingName)
  66. {
  67. $validated = $request->validated();
  68. Settings::set($settingName, $validated['value']);
  69. return response()->json([
  70. 'key' => $settingName,
  71. 'value' => $validated['value']
  72. ], 200);
  73. }
  74. /**
  75. * Delete a setting
  76. *
  77. * @param string $settingName
  78. * @return \Illuminate\Http\JsonResponse
  79. */
  80. public function destroy(string $settingName)
  81. {
  82. $setting = Settings::get($settingName);
  83. if (is_null($setting)) {
  84. abort(404);
  85. }
  86. $optionsConfig = config('2fauth.options');
  87. if(array_key_exists($settingName, $optionsConfig)) {
  88. return response()->json(
  89. ['message' => 'bad request',
  90. 'reason' => [__('errors.delete_user_setting_only')]
  91. ], 400);
  92. }
  93. Settings::delete($settingName);
  94. return response()->json(null, 204);
  95. }
  96. }