. */ namespace Poniverse\Ponyfm\Http\Controllers\Api\Web; use Poniverse\Ponyfm\Http\Controllers\ApiControllerBase; use Poniverse\Ponyfm\Commands\SaveAccountSettingsCommand; use Poniverse\Ponyfm\Models\User; use Poniverse\Ponyfm\Models\Image; use Gate; use Auth; use Request; use Response; class AccountController extends ApiControllerBase { public function getUser(User $user) { $this->authorize('edit', $user); return Response::json([ 'user' => $user->toArray() ]); } public function getCurrentUser() { $current_user = Auth::user(); if ($current_user != null) { $user = User::where('id', $current_user->id)->whereNull('disabled_at')->first(); if ($user == null) { return Response::json(['error' => 'You are not logged in'], 404); } return Response::json([ 'id' => $user->id, 'name' => $user->display_name, 'slug' => $user->slug, 'url' => $user->url, 'is_archived' => $user->is_archived, 'avatars' => [ 'small' => $user->getAvatarUrl(Image::SMALL), 'normal' => $user->getAvatarUrl(Image::NORMAL) ], 'created_at' => $user->created_at ], 200); } else { return Response::json(['error' => 'You are not logged in'], 404); } } public function getSettings($slug) { $user = null; $current_user = Auth::user(); if ($current_user != null) { if ($slug == $current_user->slug) { $user = $current_user; } else { $user = User::where('slug', $slug)->whereNull('disabled_at')->first(); } if ($user == null) { return Response::json(['error' => 'User does not exist'], 404); } if (Gate::denies('edit', $user)) { return Response::json(['error' => 'You cannot do that. So stop trying!'], 403); } } return Response::json([ 'id' => $user->id, 'bio' => $user->bio, 'can_see_explicit_content' => $user->can_see_explicit_content == 1, 'display_name' => $user->display_name, 'slug' => $user->slug, 'username' => $user->username, 'gravatar' => $user->gravatar ? $user->gravatar : $user->email, 'avatar_url' => !$user->uses_gravatar ? $user->getAvatarUrl() : null, 'uses_gravatar' => $user->uses_gravatar == 1, 'notification_email' => $user->email, 'notifications' => $user->getNotificationSettings() ], 200); } public function postSave(User $user) { return $this->execute(new SaveAccountSettingsCommand(Request::all(), $user)); } }