Sfoglia il codice sorgente

Add DELETE /api/v1.1/accounts/avatar api endpoint

Daniel Supernault 2 anni fa
parent
commit
5ea12601ce
2 ha cambiato i file con 39 aggiunte e 0 eliminazioni
  1. 38 0
      app/Http/Controllers/Api/ApiV1Dot1Controller.php
  2. 1 0
      routes/api.php

+ 38 - 0
app/Http/Controllers/Api/ApiV1Dot1Controller.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers\Api;
 
+use Cache;
 use App\Http\Controllers\Controller;
 use Illuminate\Http\Request;
 use League\Fractal;
@@ -10,6 +11,7 @@ use League\Fractal\Pagination\IlluminatePaginatorAdapter;
 use App\Status;
 use App\Report;
 use App\Profile;
+use App\Services\AccountService;
 
 class ApiV1Dot1Controller extends Controller
 {
@@ -128,4 +130,40 @@ class ApiV1Dot1Controller extends Controller
         ];
         return $this->json($res);
     }
+
+    /**
+     * DELETE /api/v1.1/accounts/avatar
+     *
+     * @return \App\Transformer\Api\AccountTransformer
+     */
+    public function deleteAvatar(Request $request)
+    {
+        $user = $request->user();
+
+        abort_if(!$user, 403);
+        abort_if($user->status != null, 403);
+
+        $avatar = $user->profile->avatar;
+
+        if( $avatar->media_path == 'public/avatars/default.png' ||
+            $avatar->media_path == 'public/avatars/default.jpg'
+        ) {
+            return AccountService::get($user->profile_id);
+        }
+
+        if(is_file(storage_path('app/' . $avatar->media_path))) {
+            @unlink(storage_path('app/' . $avatar->media_path));
+        }
+
+        $avatar->media_path = 'public/avatars/default.jpg';
+        $avatar->change_count = $avatar->change_count + 1;
+        $avatar->save();
+
+        Cache::forget('avatar:' . $user->profile_id);
+        Cache::forget("avatar:{$user->profile_id}");
+        Cache::forget('user:account:id:'.$user->id);
+        AccountService::del($user->profile_id);
+
+        return AccountService::get($user->profile_id);
+    }
 }

+ 1 - 0
routes/api.php

@@ -99,6 +99,7 @@ Route::group(['prefix' => 'api'], function() use($middleware) {
 
 	Route::group(['prefix' => 'v1.1'], function() use($middleware) {
 		Route::post('report', 'Api\ApiV1Dot1Controller@report')->middleware($middleware);
+		Route::delete('accounts/avatar', 'Api\ApiV1Dot1Controller@deleteAvatar')->middleware($middleware);
 	});
 
 	Route::group(['prefix' => 'live'], function() use($middleware) {