SettingsController.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\{AccountLog, Profile, User};
  5. use Auth, DB;
  6. class SettingsController extends Controller
  7. {
  8. public function __construct()
  9. {
  10. return $this->middleware('auth');
  11. }
  12. public function home()
  13. {
  14. return view('settings.home');
  15. }
  16. public function homeUpdate(Request $request)
  17. {
  18. $this->validate($request, [
  19. 'name' => 'required|string|max:30',
  20. 'bio' => 'nullable|string|max:125'
  21. ]);
  22. $changes = false;
  23. $name = $request->input('name');
  24. $bio = $request->input('bio');
  25. $user = Auth::user();
  26. $profile = $user->profile;
  27. if($profile->name != $name) {
  28. $changes = true;
  29. $user->name = $name;
  30. $profile->name = $name;
  31. }
  32. if($profile->bio != $bio) {
  33. $changes = true;
  34. $profile->bio = $bio;
  35. }
  36. if($changes === true) {
  37. $user->save();
  38. $profile->save();
  39. return redirect('/settings/home')->with('status', 'Profile successfully updated!');
  40. }
  41. return redirect('/settings/home');
  42. }
  43. public function password()
  44. {
  45. return view('settings.password');
  46. }
  47. public function passwordUpdate(Request $request)
  48. {
  49. $this->validate($request, [
  50. 'current' => 'required|string',
  51. 'password' => 'required|string',
  52. 'password_confirmation' => 'required|string',
  53. ]);
  54. $current = $request->input('current');
  55. $new = $request->input('password');
  56. $confirm = $request->input('password_confirmation');
  57. $user = Auth::user();
  58. if(password_verify($current, $user->password) && $new === $confirm) {
  59. $user->password = bcrypt($new);
  60. $user->save();
  61. return redirect('/settings/home')->with('status', 'Password successfully updated!');
  62. }
  63. return redirect('/settings/home')->with('error', 'There was an error with your request!');
  64. }
  65. public function email()
  66. {
  67. return view('settings.email');
  68. }
  69. public function avatar()
  70. {
  71. return view('settings.avatar');
  72. }
  73. public function accessibility()
  74. {
  75. $settings = Auth::user()->settings;
  76. return view('settings.accessibility', compact('settings'));
  77. }
  78. public function accessibilityStore(Request $request)
  79. {
  80. $settings = Auth::user()->settings;
  81. $fields = [
  82. 'compose_media_descriptions',
  83. 'reduce_motion',
  84. 'optimize_screen_reader',
  85. 'high_contrast_mode',
  86. 'video_autoplay'
  87. ];
  88. foreach($fields as $field) {
  89. $form = $request->input($field);
  90. if($form == 'on') {
  91. $settings->{$field} = true;
  92. } else {
  93. $settings->{$field} = false;
  94. }
  95. $settings->save();
  96. }
  97. return redirect(route('settings.accessibility'))->with('status', 'Settings successfully updated!');
  98. }
  99. public function notifications()
  100. {
  101. return view('settings.notifications');
  102. }
  103. public function privacy()
  104. {
  105. $settings = Auth::user()->settings;
  106. $is_private = Auth::user()->profile->is_private;
  107. $settings['is_private'] = (bool) $is_private;
  108. return view('settings.privacy', compact('settings'));
  109. }
  110. public function privacyStore(Request $request)
  111. {
  112. $settings = Auth::user()->settings;
  113. $profile = Auth::user()->profile;
  114. $fields = [
  115. 'is_private',
  116. 'crawlable',
  117. ];
  118. foreach($fields as $field) {
  119. $form = $request->input($field);
  120. if($field == 'is_private') {
  121. if($form == 'on') {
  122. $profile->{$field} = true;
  123. $settings->show_guests = false;
  124. $settings->show_discover = false;
  125. $profile->save();
  126. } else {
  127. $profile->{$field} = false;
  128. $profile->save();
  129. }
  130. } elseif($field == 'crawlable') {
  131. if($form == 'on') {
  132. $settings->{$field} = false;
  133. } else {
  134. $settings->{$field} = true;
  135. }
  136. } else {
  137. if($form == 'on') {
  138. $settings->{$field} = true;
  139. } else {
  140. $settings->{$field} = false;
  141. }
  142. }
  143. $settings->save();
  144. }
  145. return redirect(route('settings.privacy'))->with('status', 'Settings successfully updated!');
  146. }
  147. public function security()
  148. {
  149. $sessions = DB::table('sessions')
  150. ->whereUserId(Auth::id())
  151. ->limit(20)
  152. ->get();
  153. $activity = AccountLog::whereUserId(Auth::id())
  154. ->orderBy('created_at','desc')
  155. ->limit(50)
  156. ->get();
  157. return view('settings.security', compact('sessions', 'activity'));
  158. }
  159. public function applications()
  160. {
  161. return view('settings.applications');
  162. }
  163. public function dataExport()
  164. {
  165. return view('settings.dataexport');
  166. }
  167. public function dataImport()
  168. {
  169. return view('settings.import.home');
  170. }
  171. public function dataImportInstagram()
  172. {
  173. return view('settings.import.instagram.home');
  174. }
  175. public function developers()
  176. {
  177. return view('settings.developers');
  178. }
  179. }