diff --git a/.env.example b/.env.example index ccbed93d..6698bd65 100644 --- a/.env.example +++ b/.env.example @@ -37,7 +37,7 @@ MAIL_FROM_NAME="${APP_NAME}" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 +AWS_DEFAULT_REGION= AWS_BUCKET= DO_SPACES_KEY= diff --git a/app/Http/Controllers/Admin/PagesController.php b/app/Http/Controllers/Admin/PagesController.php index 1d766684..ab523bef 100644 --- a/app/Http/Controllers/Admin/PagesController.php +++ b/app/Http/Controllers/Admin/PagesController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Resources\PageCollection; use App\Http\Resources\PageResource; +use App\Http\Tools\Demo; use App\Page; use Illuminate\Http\Request; @@ -42,9 +43,17 @@ class PagesController extends Controller * @param $slug * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response */ - public function update(Request $request, $slug) { + public function update(Request $request, $slug) + { + // Check if is demo + if (env('APP_DEMO')) { + return Demo::response_204(); + } + + // Get page $page = Page::where('slug', $slug)->first(); + // Update page $page->update(make_single_input($request)); return response('Done', 204); diff --git a/app/Http/Controllers/Admin/PlanController.php b/app/Http/Controllers/Admin/PlanController.php index e0c819a6..908c22b6 100644 --- a/app/Http/Controllers/Admin/PlanController.php +++ b/app/Http/Controllers/Admin/PlanController.php @@ -7,6 +7,7 @@ use App\Http\Resources\PlanCollection; use App\Http\Resources\PlanResource; use App\Http\Resources\UserResource; use App\Http\Resources\UsersCollection; +use App\Http\Tools\Demo; use App\Plan; use App\Services\StripeService; use App\User; @@ -34,10 +35,8 @@ class PlanController extends Controller { // Store or Get plans to cache if (Cache::has('plans')) { - $plans = Cache::get('plans'); } else { - $plans = Cache::rememberForever('plans', function () { return $this->stripe->getPlans(); }); @@ -56,10 +55,8 @@ class PlanController extends Controller { // Store or Get plan to cache if (Cache::has('plan-' . $id)) { - $plan = Cache::get('plan-' . $id); } else { - $plan = Cache::rememberForever('plan-' . $id, function () use ($id) { return $this->stripe->getPlan($id); }); @@ -76,6 +73,20 @@ class PlanController extends Controller */ public function store(Request $request) { + // Check if is demo + if (env('APP_DEMO')) { + + if (Cache::has('plan-starter-pack')) { + $plan = Cache::get('plan-starter-pack'); + } else { + $plan = Cache::rememberForever('plan-starter-pack', function () { + return $this->stripe->getPlan('starter-pack'); + }); + } + + return new PlanResource($plan); + } + $plan = new PlanResource( $this->stripe->createPlan($request) ); @@ -95,6 +106,12 @@ class PlanController extends Controller */ public function update(Request $request, $id) { + // Check if is demo + if (env('APP_DEMO')) { + return Demo::response_204(); + } + + // Update plan $this->stripe->updatePlan($request, $id); // Clear cached plans @@ -111,6 +128,12 @@ class PlanController extends Controller */ public function delete($id) { + // Check if is demo + if (env('APP_DEMO')) { + return Demo::response_204(); + } + + // Delete plan $this->stripe->deletePlan($id); // Clear cached plans diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 6403b5eb..c2cc0193 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -226,6 +226,7 @@ class UserController extends Controller if ($user->name !== $request->name) abort(403); $shares = Share::where('user_id', $user->id)->get(); + $files = FileManagerFile::withTrashed() ->where('user_id', $user->id) ->get(); diff --git a/app/Http/Controllers/SettingController.php b/app/Http/Controllers/SettingController.php index 2d39e3d6..65a33a3b 100644 --- a/app/Http/Controllers/SettingController.php +++ b/app/Http/Controllers/SettingController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Http\Tools\Demo; use App\Setting; use Artisan; use Illuminate\Http\Request; @@ -14,8 +15,8 @@ class SettingController extends Controller * @param Request $request * @return mixed */ - public function show(Request $request) { - + public function show(Request $request) + { $column = $request->get('column'); if (strpos($column, '|') !== false) { @@ -36,6 +37,11 @@ class SettingController extends Controller */ public function update(Request $request) { + // Check if is demo + if (env('APP_DEMO')) { + return Demo::response_204(); + } + // Store image if exist if ($request->hasFile($request->name)) { @@ -64,7 +70,12 @@ class SettingController extends Controller * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response */ - public function set_email(Request $request) { + public function set_email(Request $request) + { + // Check if is demo + if (env('APP_DEMO')) { + return Demo::response_204(); + } // Get options $mail = collect([ diff --git a/app/Http/Controllers/User/PaymentMethodsController.php b/app/Http/Controllers/User/PaymentMethodsController.php index 875246e1..dc83e1f8 100644 --- a/app/Http/Controllers/User/PaymentMethodsController.php +++ b/app/Http/Controllers/User/PaymentMethodsController.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Controller; use App\Http\Resources\PaymentCardCollection; use App\Http\Resources\PaymentCardResource; use App\Http\Resources\PaymentDefaultCardResource; +use App\Http\Tools\Demo; use Auth; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; @@ -85,6 +86,11 @@ class PaymentMethodsController extends Controller { $user = Auth::user(); + // Check if is demo + if (is_demo($user->id)) { + return Demo::response_204(); + } + // Update DefaultPayment Method $user->updateDefaultPaymentMethod($id); @@ -96,6 +102,8 @@ class PaymentMethodsController extends Controller 'payment-methods-user-' . $user->id, 'default-payment-methods-user-' . $user->id ]); + + return response('Done', 204); } /** @@ -106,6 +114,11 @@ class PaymentMethodsController extends Controller { $user = Auth::user(); + // Check if is demo + if (is_demo($user->id)) { + return Demo::response_204(); + } + // Get payment method $paymentMethod = $user->findPaymentMethod($id); diff --git a/app/Http/Controllers/User/SubscriptionController.php b/app/Http/Controllers/User/SubscriptionController.php index e71627d5..2c50a01c 100644 --- a/app/Http/Controllers/User/SubscriptionController.php +++ b/app/Http/Controllers/User/SubscriptionController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\User; use App\Http\Controllers\Controller; use App\Http\Requests\Subscription\StoreUpgradeAccountRequest; use App\Http\Resources\UserSubscription; +use App\Http\Tools\Demo; use App\Invoice; use App\Services\StripeService; use Auth; @@ -77,6 +78,11 @@ class SubscriptionController extends Controller // Get user $user = Auth::user(); + // Check if is demo + if (is_demo($user->id)) { + return Demo::response_204(); + } + // Forget user subscription Cache::forget('subscription-user-' . $user->id); @@ -109,6 +115,11 @@ class SubscriptionController extends Controller { $user = Auth::user(); + // Check if is demo + if (is_demo($user->id)) { + return Demo::response_204(); + } + // Cancel subscription $user->subscription('main')->cancel(); @@ -127,6 +138,11 @@ class SubscriptionController extends Controller { $user = Auth::user(); + // Check if is demo + if (is_demo($user->id)) { + return Demo::response_204(); + } + // Resume subscription $user->subscription('main')->resume(); diff --git a/app/Http/Helpers/helpers.php b/app/Http/Helpers/helpers.php index af05c86c..031ef08f 100644 --- a/app/Http/Helpers/helpers.php +++ b/app/Http/Helpers/helpers.php @@ -11,6 +11,21 @@ use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; use Intervention\Image\ImageManagerStatic as Image; +/** + * Obfuscate email + * + * @param $email + * @return string + */ +function obfuscate_email($email) +{ + $em = explode("@",$email); + $name = implode('@', array_slice($em, 0, count($em)-1)); + $len = floor(strlen($name)/2); + + return substr($name,0, $len) . str_repeat('*', $len) . "@" . end($em); +} + /** * Get single value from settings table * diff --git a/app/Http/Resources/UserResource.php b/app/Http/Resources/UserResource.php index 76a4b857..855f26d5 100644 --- a/app/Http/Resources/UserResource.php +++ b/app/Http/Resources/UserResource.php @@ -18,9 +18,6 @@ class UserResource extends JsonResource */ public function toArray($request) { - // Faker only for demo purpose - $faker = Factory::create(); - return [ 'data' => [ 'id' => (string)$this->id, @@ -29,8 +26,8 @@ class UserResource extends JsonResource 'storage_capacity' => $this->settings->storage_capacity, 'subscription' => $this->subscribed('main'), 'stripe_customer' => is_null($this->stripe_id) ? false : true, - 'name' => env('APP_DEMO') ? $faker->name : $this->name, - 'email' => env('APP_DEMO') ? $faker->email : $this->email, + 'name' => $this->name, + 'email' => env('APP_DEMO') ? obfuscate_email($this->email) : $this->email, 'avatar' => $this->avatar, 'role' => $this->role, 'created_at_formatted' => format_date($this->created_at, '%d. %B. %Y'), diff --git a/public/assets/images/default-avatar.png b/public/assets/images/default-avatar.png index 32951469..bc9b7799 100644 Binary files a/public/assets/images/default-avatar.png and b/public/assets/images/default-avatar.png differ diff --git a/public/mix-manifest.json b/public/mix-manifest.json index b30bf1f9..b829f1a2 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -133,5 +133,73 @@ "/js/main.b0f60374e12655123fa3.hot-update.js": "/js/main.b0f60374e12655123fa3.hot-update.js", "/js/main.3bace6a430879b52f95a.hot-update.js": "/js/main.3bace6a430879b52f95a.hot-update.js", "/js/main.f3a7a774479629f1cfd4.hot-update.js": "/js/main.f3a7a774479629f1cfd4.hot-update.js", - "/js/main.66e645a33bbdcbf71b3d.hot-update.js": "/js/main.66e645a33bbdcbf71b3d.hot-update.js" + "/js/main.66e645a33bbdcbf71b3d.hot-update.js": "/js/main.66e645a33bbdcbf71b3d.hot-update.js", + "/js/main.cbc478b70ad17b57ea84.hot-update.js": "/js/main.cbc478b70ad17b57ea84.hot-update.js", + "/js/main.b14dd7f33cb4d3fec749.hot-update.js": "/js/main.b14dd7f33cb4d3fec749.hot-update.js", + "/js/main.1ced76abdfd7e436906d.hot-update.js": "/js/main.1ced76abdfd7e436906d.hot-update.js", + "/js/main.d40199119678765f1518.hot-update.js": "/js/main.d40199119678765f1518.hot-update.js", + "/js/main.3f3cf506232846e42e0e.hot-update.js": "/js/main.3f3cf506232846e42e0e.hot-update.js", + "/js/main.a558754e964b2d94d197.hot-update.js": "/js/main.a558754e964b2d94d197.hot-update.js", + "/js/main.a88baf8cfef00e367575.hot-update.js": "/js/main.a88baf8cfef00e367575.hot-update.js", + "/js/main.6d4cb04832281a3cdbbd.hot-update.js": "/js/main.6d4cb04832281a3cdbbd.hot-update.js", + "/js/main.374d954fad21a0c0b9b7.hot-update.js": "/js/main.374d954fad21a0c0b9b7.hot-update.js", + "/js/main.250d27d77db257de9965.hot-update.js": "/js/main.250d27d77db257de9965.hot-update.js", + "/js/main.a03c527e7a404a1c9d10.hot-update.js": "/js/main.a03c527e7a404a1c9d10.hot-update.js", + "/js/main.a6f69fff024422e53e4e.hot-update.js": "/js/main.a6f69fff024422e53e4e.hot-update.js", + "/js/main.8e878ba74b9f2cba0f6b.hot-update.js": "/js/main.8e878ba74b9f2cba0f6b.hot-update.js", + "/js/main.44c53d5c7375fd9aa9ee.hot-update.js": "/js/main.44c53d5c7375fd9aa9ee.hot-update.js", + "/js/main.3403e2c5cf9729259e91.hot-update.js": "/js/main.3403e2c5cf9729259e91.hot-update.js", + "/js/main.5abc9a1e72a96d87fb9a.hot-update.js": "/js/main.5abc9a1e72a96d87fb9a.hot-update.js", + "/js/main.f9e8c57473b01c05ad9f.hot-update.js": "/js/main.f9e8c57473b01c05ad9f.hot-update.js", + "/js/main.e7ef8fa4a2f8e8b7ef92.hot-update.js": "/js/main.e7ef8fa4a2f8e8b7ef92.hot-update.js", + "/js/main.b3556273847c2b9afa45.hot-update.js": "/js/main.b3556273847c2b9afa45.hot-update.js", + "/js/main.9a9952cc5b432927b822.hot-update.js": "/js/main.9a9952cc5b432927b822.hot-update.js", + "/js/main.ced7430a74a075709dc2.hot-update.js": "/js/main.ced7430a74a075709dc2.hot-update.js", + "/js/main.00e63f90972ceb446e05.hot-update.js": "/js/main.00e63f90972ceb446e05.hot-update.js", + "/js/main.c4ea4784c0f2cef67b7a.hot-update.js": "/js/main.c4ea4784c0f2cef67b7a.hot-update.js", + "/js/main.0990f73cb0537f87777c.hot-update.js": "/js/main.0990f73cb0537f87777c.hot-update.js", + "/js/main.2e8738a7960f3209146e.hot-update.js": "/js/main.2e8738a7960f3209146e.hot-update.js", + "/js/main.70a4ad175baff9c6e101.hot-update.js": "/js/main.70a4ad175baff9c6e101.hot-update.js", + "/js/main.6ce7439d4cb2d0594afe.hot-update.js": "/js/main.6ce7439d4cb2d0594afe.hot-update.js", + "/js/main.9fd91e6a256b68cb2af1.hot-update.js": "/js/main.9fd91e6a256b68cb2af1.hot-update.js", + "/js/main.852a6a6f1000933a039b.hot-update.js": "/js/main.852a6a6f1000933a039b.hot-update.js", + "/js/main.ba64c75ad3a35de56468.hot-update.js": "/js/main.ba64c75ad3a35de56468.hot-update.js", + "/js/main.31792f1a688f8e0a7c01.hot-update.js": "/js/main.31792f1a688f8e0a7c01.hot-update.js", + "/js/main.24add21348d90abb7e88.hot-update.js": "/js/main.24add21348d90abb7e88.hot-update.js", + "/js/main.bfef2cd63943ad6715d9.hot-update.js": "/js/main.bfef2cd63943ad6715d9.hot-update.js", + "/js/main.3be0d28d66eaa77045b5.hot-update.js": "/js/main.3be0d28d66eaa77045b5.hot-update.js", + "/js/main.5678ef278aa9c23791bc.hot-update.js": "/js/main.5678ef278aa9c23791bc.hot-update.js", + "/js/main.5fcb728ffc9a64075eca.hot-update.js": "/js/main.5fcb728ffc9a64075eca.hot-update.js", + "/js/main.6a683785276a61017eb3.hot-update.js": "/js/main.6a683785276a61017eb3.hot-update.js", + "/js/main.741589e770eca397805c.hot-update.js": "/js/main.741589e770eca397805c.hot-update.js", + "/js/main.7b20aef6ad310bd47403.hot-update.js": "/js/main.7b20aef6ad310bd47403.hot-update.js", + "/js/main.7bea26daf5715d3aafb5.hot-update.js": "/js/main.7bea26daf5715d3aafb5.hot-update.js", + "/js/main.379ee32fc33b55926005.hot-update.js": "/js/main.379ee32fc33b55926005.hot-update.js", + "/js/main.50567163e8ffe34a11ea.hot-update.js": "/js/main.50567163e8ffe34a11ea.hot-update.js", + "/js/main.26c7b5e8a4d0f6bf6008.hot-update.js": "/js/main.26c7b5e8a4d0f6bf6008.hot-update.js", + "/js/main.5dc8c52d39ba6d3a62dd.hot-update.js": "/js/main.5dc8c52d39ba6d3a62dd.hot-update.js", + "/js/main.30af0b64f6ef483cdf4e.hot-update.js": "/js/main.30af0b64f6ef483cdf4e.hot-update.js", + "/js/main.f5bf71f37744840b2591.hot-update.js": "/js/main.f5bf71f37744840b2591.hot-update.js", + "/js/main.5ee5965d17083c89ffcd.hot-update.js": "/js/main.5ee5965d17083c89ffcd.hot-update.js", + "/js/main.0ae52df272b8ccdc2610.hot-update.js": "/js/main.0ae52df272b8ccdc2610.hot-update.js", + "/js/main.aa562a401dc7003e8fc3.hot-update.js": "/js/main.aa562a401dc7003e8fc3.hot-update.js", + "/js/main.5f7c0e64e66b2b3c00f3.hot-update.js": "/js/main.5f7c0e64e66b2b3c00f3.hot-update.js", + "/js/main.db7857720867617c3a08.hot-update.js": "/js/main.db7857720867617c3a08.hot-update.js", + "/js/main.fbb262c6f328cb7c68f3.hot-update.js": "/js/main.fbb262c6f328cb7c68f3.hot-update.js", + "/js/main.da1f49f0f9b0bed9febc.hot-update.js": "/js/main.da1f49f0f9b0bed9febc.hot-update.js", + "/js/main.5b72fb5b69066c470f90.hot-update.js": "/js/main.5b72fb5b69066c470f90.hot-update.js", + "/js/main.a23cb3be820b7ebc4174.hot-update.js": "/js/main.a23cb3be820b7ebc4174.hot-update.js", + "/js/main.586efe8ca5d1f2772415.hot-update.js": "/js/main.586efe8ca5d1f2772415.hot-update.js", + "/js/main.ad316ed02ff697b46df0.hot-update.js": "/js/main.ad316ed02ff697b46df0.hot-update.js", + "/js/main.bb8f19405068d176be63.hot-update.js": "/js/main.bb8f19405068d176be63.hot-update.js", + "/js/main.14b3e5053dfa9fa09600.hot-update.js": "/js/main.14b3e5053dfa9fa09600.hot-update.js", + "/js/main.6f4ff338c7ed38584b68.hot-update.js": "/js/main.6f4ff338c7ed38584b68.hot-update.js", + "/js/main.29880fe0bc76b4aeca61.hot-update.js": "/js/main.29880fe0bc76b4aeca61.hot-update.js", + "/js/main.b12e72b71f7059ab0293.hot-update.js": "/js/main.b12e72b71f7059ab0293.hot-update.js", + "/js/main.13d19aa5bd5f38ab5ddd.hot-update.js": "/js/main.13d19aa5bd5f38ab5ddd.hot-update.js", + "/js/main.2b8b9f29bb579f484b71.hot-update.js": "/js/main.2b8b9f29bb579f484b71.hot-update.js", + "/js/main.c837a292b8c23fd03cc3.hot-update.js": "/js/main.c837a292b8c23fd03cc3.hot-update.js", + "/js/main.45e9fbc1d3d28cee2262.hot-update.js": "/js/main.45e9fbc1d3d28cee2262.hot-update.js", + "/js/main.0c32aa8273f3999763aa.hot-update.js": "/js/main.0c32aa8273f3999763aa.hot-update.js", + "/js/main.ec55af6e363caa97c10d.hot-update.js": "/js/main.ec55af6e363caa97c10d.hot-update.js" } diff --git a/resources/js/components/FilesView/ButtonBase.vue b/resources/js/components/FilesView/ButtonBase.vue index acd71519..0150a537 100644 --- a/resources/js/components/FilesView/ButtonBase.vue +++ b/resources/js/components/FilesView/ButtonBase.vue @@ -36,16 +36,13 @@ white-space: nowrap; display: flex; align-items: center; + justify-content: center; .icon { line-height: 1; margin-right: 10px; } - .content { - width: 100%; - } - &:active { transform: scale(0.95); } diff --git a/resources/js/components/Index/IndexPageHeader.vue b/resources/js/components/Index/IndexPageHeader.vue index 4c6938f9..5471a50c 100644 --- a/resources/js/components/Index/IndexPageHeader.vue +++ b/resources/js/components/Index/IndexPageHeader.vue @@ -16,7 +16,7 @@
| {{ column.label }}
|
+