From 38da639e262aa1f0bbc4e848afcb41e84d712933 Mon Sep 17 00:00:00 2001 From: carodej Date: Wed, 15 Jul 2020 08:34:52 +0200 Subject: [PATCH] v1.7 alpha.2 --- .env.example | 2 +- .../Controllers/Admin/PagesController.php | 11 +- app/Http/Controllers/Admin/PlanController.php | 31 +++- app/Http/Controllers/Admin/UserController.php | 1 + app/Http/Controllers/SettingController.php | 17 +- .../User/PaymentMethodsController.php | 13 ++ .../User/SubscriptionController.php | 16 ++ app/Http/Helpers/helpers.php | 15 ++ app/Http/Resources/UserResource.php | 7 +- public/assets/images/default-avatar.png | Bin 6372 -> 6434 bytes public/mix-manifest.json | 70 +++++++- .../js/components/FilesView/ButtonBase.vue | 5 +- .../js/components/Index/IndexPageHeader.vue | 2 +- .../js/components/Others/Forms/InfoBox.vue | 6 +- .../components/Others/PlanPricingTables.vue | 6 +- .../js/components/Others/Popup/Confirm.vue | 6 + .../Others/Tables/DatatableWrapper.vue | 17 +- resources/js/helpers.js | 4 +- .../AppSettings/AppSettingsTabs/Email.vue | 6 + resources/js/views/Admin/Dashboard.vue | 2 + .../Admin/Users/UserTabs/UserSubscription.vue | 4 +- resources/js/views/Mobile/AdminMobileMenu.vue | 4 +- resources/js/views/Upgrade/UpgradeBilling.vue | 60 ++++--- resources/js/views/User/PaymentMethods.vue | 18 ++- resources/js/views/User/Subscription.vue | 152 +++++++++--------- resources/sass/app.scss | 9 ++ resources/sass/vue-file-manager/_forms.scss | 9 ++ resources/views/index.blade.php | 1 + .../00317b5e81771fa2c4f1ccbe161dfb1c492dde59 | 2 +- .../94239ca49856ec24cf53caa1d9a5bb8c48da953f | Bin 5667 -> 0 bytes .../b172d2349fbf57eb748881b118e0a736bf7498ec | Bin 6695 -> 6765 bytes .../d85bb00307d094959d235062c0de9784a8d8dfee | 1 - 32 files changed, 352 insertions(+), 145 deletions(-) delete mode 100644 storage/framework/cache/data/94/23/94239ca49856ec24cf53caa1d9a5bb8c48da953f delete mode 100644 storage/framework/cache/data/d8/5b/d85bb00307d094959d235062c0de9784a8d8dfee 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 329514693df74154d50085d1b2f7bb36c211727c..bc9b779987bbefb301da6460440a535a3d1b491f 100644 GIT binary patch literal 6434 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

- {{ $t('page_index.sign_feature_2', {defaultSpace: config.storageDefaultSpace}) }} + {{ $t('page_index.sign_feature_2', {defaultSpace: config.storageDefaultSpaceFormatted}) }}
diff --git a/resources/js/components/Others/Forms/InfoBox.vue b/resources/js/components/Others/Forms/InfoBox.vue index 72b0ab8f..06348b63 100644 --- a/resources/js/components/Others/Forms/InfoBox.vue +++ b/resources/js/components/Others/Forms/InfoBox.vue @@ -82,16 +82,16 @@ @media (prefers-color-scheme: dark) { .info-box { - background: rgba($yellow, 0.1); + background: $dark_mode_foreground; p { - color: $yellow; + color: $dark_mode_text_primary; } ul { li { - color: $yellow; + color: $dark_mode_text_primary; } } } diff --git a/resources/js/components/Others/PlanPricingTables.vue b/resources/js/components/Others/PlanPricingTables.vue index 19003300..92274f6c 100644 --- a/resources/js/components/Others/PlanPricingTables.vue +++ b/resources/js/components/Others/PlanPricingTables.vue @@ -144,8 +144,12 @@ justify-content: center; } - @media only screen and (max-width: 1024px) { + @media only screen and (max-width: 960px) { + .plans-wrapper { + display: block; + margin: 0; + } } @media (prefers-color-scheme: dark) { diff --git a/resources/js/components/Others/Popup/Confirm.vue b/resources/js/components/Others/Popup/Confirm.vue index 3de2ce1a..6132dc8b 100644 --- a/resources/js/components/Others/Popup/Confirm.vue +++ b/resources/js/components/Others/Popup/Confirm.vue @@ -118,6 +118,12 @@ } } + @media only screen and (max-width: 690px){ + .content { + top: 110px; + } + } + @media (prefers-color-scheme: dark) { .content { diff --git a/resources/js/components/Others/Tables/DatatableWrapper.vue b/resources/js/components/Others/Tables/DatatableWrapper.vue index 19f03cc1..d64237bc 100644 --- a/resources/js/components/Others/Tables/DatatableWrapper.vue +++ b/resources/js/components/Others/Tables/DatatableWrapper.vue @@ -3,7 +3,7 @@ - + @@ -174,12 +174,12 @@ .table { width: 100%; border-collapse: collapse; - table-layout: fixed; + overflow-x: auto; tr { width: 100%; - td { + td, th { &:first-child { padding-left: 15px; } @@ -195,8 +195,9 @@ margin-bottom: 10px; tr { - td { + td, th { padding: 12px; + text-align: left; span { color: $theme; @@ -245,7 +246,7 @@ background: $light_background; } - td { + td, th { padding: 12px; &:last-child { @@ -354,7 +355,7 @@ .table-header { tr { - td { + td, th { span { color: $theme; @@ -364,7 +365,7 @@ } .table-body { - tr { + tr, th { &:hover { background: $dark_mode_foreground; } diff --git a/resources/js/helpers.js b/resources/js/helpers.js index 491be02e..58a5f489 100644 --- a/resources/js/helpers.js +++ b/resources/js/helpers.js @@ -9,7 +9,7 @@ const Helpers = { Vue.prototype.$updateText = debounce(function (route, name, value) { - if (value === '') return + if (! value || value === '') return axios.patch(this.$store.getters.api + route, {name, value}) .catch(error => { @@ -18,7 +18,7 @@ const Helpers = { message: this.$t('popup_error.message'), }) }) - }, 300) + }, 150) Vue.prototype.$updateImage = function (route, name, image) { diff --git a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Email.vue b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Email.vue index 97eac667..64ac03bd 100644 --- a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Email.vue +++ b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Email.vue @@ -143,6 +143,12 @@ message: this.$t('toaster.email_set'), }) }) + .catch(() => { + events.$emit('alert:open', { + title: this.$t('popup_error.title'), + message: this.$t('popup_error.message'), + }) + }) .finally(() => { // End loading diff --git a/resources/js/views/Admin/Dashboard.vue b/resources/js/views/Admin/Dashboard.vue index 6814b0de..ea46a2e7 100644 --- a/resources/js/views/Admin/Dashboard.vue +++ b/resources/js/views/Admin/Dashboard.vue @@ -1,6 +1,8 @@
{{ column.label }} -