From 77951b54ee052b8c96affcc1cfce20ca2ecc0620 Mon Sep 17 00:00:00 2001 From: pushuo Date: Wed, 28 Sep 2022 15:34:02 +0800 Subject: [PATCH] =?UTF-8?q?social=20=E5=90=8E=E5=8F=B0=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit wip wip wip 修改插件图标 add social controller. add social controller. add shop base url wip wip save social setting 优化购物车加载 后台第三方登录插件 完善第三方登录按钮 fixed social setting wip wip wip wip 完善第三方登录 fixed social redirect 优化后台 修复google 登录 fixed window opener Add 第三方登录类型 wip wip 完善多语言 修复第三方登录前台多语言 --- .../Admin/Providers/AdminServiceProvider.php | 1 + beike/Plugin/Plugin.php | 8 + beike/Repositories/CustomerRepo.php | 2 +- .../Controllers/Account/LoginController.php | 5 +- .../Shop/Http/Controllers/LoginController.php | 39 ---- .../Shop/Providers/PluginServiceProvider.php | 17 +- beike/Shop/Services/AccountService.php | 11 +- composer.json | 1 + package.json | 2 +- plugins/.gitignore | 5 - plugins/FlatShipping/Static/css/demo.css | 8 + plugins/FlatShipping/Static/image/logo.png | Bin 0 -> 6647 bytes plugins/FlatShipping/Static/js/demo.js | 4 + plugins/FlatShipping/config.json | 2 +- plugins/LatestProducts/Static/css/demo.css | 8 + plugins/LatestProducts/Static/image/logo.png | Bin 0 -> 7979 bytes plugins/LatestProducts/Static/js/demo.js | 4 + plugins/LatestProducts/config.json | 2 +- plugins/Paypal/Static/image/logo.png | Bin 11470 -> 10610 bytes plugins/Social/Bootstrap.php | 39 ++++ .../Controllers/AdminSocialController.php | 35 ++++ .../Controllers/ShopSocialController.php | 73 +++++++ plugins/Social/Lang/en/providers.php | 35 ++++ plugins/Social/Lang/en/setting.php | 58 ++++++ plugins/Social/Lang/zh_cn/providers.php | 35 ++++ plugins/Social/Lang/zh_cn/setting.php | 47 +++++ ...2_10_13_100354_create_customer_socials.php | 37 ++++ plugins/Social/Models/CustomerSocial.php | 30 +++ plugins/Social/Repositories/CustomerRepo.php | 138 ++++++++++++++ plugins/Social/Routes/admin.php | 15 ++ plugins/Social/Routes/shop.php | 16 ++ plugins/Social/Static/image/facebook.png | Bin 0 -> 1338 bytes plugins/Social/Static/image/google.png | Bin 0 -> 3966 bytes plugins/Social/Static/image/logo.png | Bin 0 -> 13509 bytes plugins/Social/Static/image/qq.png | Bin 0 -> 4519 bytes plugins/Social/Views/admin/config.blade.php | 179 ++++++++++++++++-- plugins/Social/Views/shop/callback.blade.php | 9 + .../Social/Views/shop/social_button.blade.php | 4 + plugins/Stripe/Static/image/logo.png | Bin 16071 -> 11128 bytes public/vendor/clipboard/clipboard.min.js | 7 + resources/beike/admin/css/_marketing.scss | 6 - .../beike/admin/css/bootstrap/bootstrap.scss | 2 +- .../views/pages/marketing/index.blade.php | 2 +- .../shop/default/css/bootstrap/bootstrap.scss | 4 +- resources/beike/shop/default/css/login.scss | 73 ++++++- resources/beike/shop/default/js/common.js | 27 ++- themes/default/account/login.blade.php | 112 ++++++----- 47 files changed, 958 insertions(+), 144 deletions(-) delete mode 100644 beike/Shop/Http/Controllers/LoginController.php delete mode 100644 plugins/.gitignore create mode 100644 plugins/FlatShipping/Static/css/demo.css create mode 100644 plugins/FlatShipping/Static/image/logo.png create mode 100644 plugins/FlatShipping/Static/js/demo.js create mode 100644 plugins/LatestProducts/Static/css/demo.css create mode 100644 plugins/LatestProducts/Static/image/logo.png create mode 100644 plugins/LatestProducts/Static/js/demo.js create mode 100644 plugins/Social/Bootstrap.php create mode 100644 plugins/Social/Controllers/AdminSocialController.php create mode 100644 plugins/Social/Controllers/ShopSocialController.php create mode 100644 plugins/Social/Lang/en/providers.php create mode 100644 plugins/Social/Lang/en/setting.php create mode 100644 plugins/Social/Lang/zh_cn/providers.php create mode 100644 plugins/Social/Lang/zh_cn/setting.php create mode 100644 plugins/Social/Migrations/2022_10_13_100354_create_customer_socials.php create mode 100644 plugins/Social/Models/CustomerSocial.php create mode 100644 plugins/Social/Repositories/CustomerRepo.php create mode 100644 plugins/Social/Routes/admin.php create mode 100644 plugins/Social/Routes/shop.php create mode 100644 plugins/Social/Static/image/facebook.png create mode 100644 plugins/Social/Static/image/google.png create mode 100644 plugins/Social/Static/image/logo.png create mode 100644 plugins/Social/Static/image/qq.png create mode 100644 plugins/Social/Views/shop/callback.blade.php create mode 100644 plugins/Social/Views/shop/social_button.blade.php create mode 100644 public/vendor/clipboard/clipboard.min.js diff --git a/beike/Admin/Providers/AdminServiceProvider.php b/beike/Admin/Providers/AdminServiceProvider.php index 3934ce12..968109a5 100644 --- a/beike/Admin/Providers/AdminServiceProvider.php +++ b/beike/Admin/Providers/AdminServiceProvider.php @@ -133,5 +133,6 @@ class AdminServiceProvider extends ServiceProvider { View::share('languages', languages()); View::share('admin_base_url', admin_route('home.index')); + View::share('shop_base_url', shop_route('home.index')); } } diff --git a/beike/Plugin/Plugin.php b/beike/Plugin/Plugin.php index f6eaa141..7cb7c23c 100644 --- a/beike/Plugin/Plugin.php +++ b/beike/Plugin/Plugin.php @@ -162,6 +162,14 @@ class Plugin implements Arrayable, \ArrayAccess return $this->enabled; } + public function getSetting($name = '') + { + if ($name) { + return plugin_setting("{$this->code}.{$name}"); + } + return plugin_setting($this->code); + } + /** * 获取插件对应的设置字段, 并获取已存储在DB的字段值 diff --git a/beike/Repositories/CustomerRepo.php b/beike/Repositories/CustomerRepo.php index 28c664e1..3be6d43d 100644 --- a/beike/Repositories/CustomerRepo.php +++ b/beike/Repositories/CustomerRepo.php @@ -29,7 +29,7 @@ class CustomerRepo */ public static function create($customerData) { - $customerData['password'] = Hash::make($customerData['password']); + $customerData['password'] = Hash::make($customerData['password'] ?? ''); return Customer::query()->create($customerData); } diff --git a/beike/Shop/Http/Controllers/Account/LoginController.php b/beike/Shop/Http/Controllers/Account/LoginController.php index 52d45cda..d374ed84 100644 --- a/beike/Shop/Http/Controllers/Account/LoginController.php +++ b/beike/Shop/Http/Controllers/Account/LoginController.php @@ -27,7 +27,10 @@ class LoginController extends Controller if (current_customer()) { return redirect(shop_route('account.index')); } - return view('account/login'); + $loginData = [ + 'social_buttons' => hook_filter('login.social.buttons', []), + ]; + return view('account/login', $loginData); } public function store(LoginRequest $request) diff --git a/beike/Shop/Http/Controllers/LoginController.php b/beike/Shop/Http/Controllers/LoginController.php deleted file mode 100644 index 958fa6c5..00000000 --- a/beike/Shop/Http/Controllers/LoginController.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @created 2022-06-22 20:22:54 - * @modified 2022-06-22 20:22:54 - */ - -namespace Beike\Shop\Http\Controllers; - -use Beike\Models\Customer; -use Illuminate\Http\Request; - -class LoginController extends Controller -{ - public function index() - { - return view('login'); - } - - public function store(Request $request) - { - $credentials = $request->validate([ - 'email' => ['required', 'email'], - 'password' => ['required'], - ]); - - if (auth(Customer::AUTH_GUARD)->attempt($credentials)) { - return redirect(route('home')); - } - - return back()->withErrors([ - 'email' => 'The provided credentials do not match our records.', - ]); - } -} diff --git a/beike/Shop/Providers/PluginServiceProvider.php b/beike/Shop/Providers/PluginServiceProvider.php index 45a79b08..1abf8b12 100644 --- a/beike/Shop/Providers/PluginServiceProvider.php +++ b/beike/Shop/Providers/PluginServiceProvider.php @@ -38,7 +38,7 @@ class PluginServiceProvider extends ServiceProvider */ public function boot() { - if(!installed()) { + if (!installed()) { return; } $manager = app('plugin'); @@ -48,6 +48,7 @@ class PluginServiceProvider extends ServiceProvider foreach ($plugins as $plugin) { $pluginCode = $plugin->getDirname(); $this->bootPlugin($plugin); + $this->loadMigrations($pluginCode); $this->loadRoutes($pluginCode); $this->loadTranslations($pluginCode); } @@ -78,6 +79,20 @@ class PluginServiceProvider extends ServiceProvider } + /** + * 加载插件数据库迁移脚本 + * + * @param $pluginCode + */ + private function loadMigrations($pluginCode) + { + $migrationPath = "{$this->pluginBasePath}/{$pluginCode}/Migrations"; + if (is_dir($migrationPath)) { + $this->loadMigrationsFrom("{$migrationPath}"); + } + } + + /** * 加载插件路由 * diff --git a/beike/Shop/Services/AccountService.php b/beike/Shop/Services/AccountService.php index 602931b4..3d9cf18a 100644 --- a/beike/Shop/Services/AccountService.php +++ b/beike/Shop/Services/AccountService.php @@ -26,9 +26,9 @@ class AccountService * 注册用户 * * @param array $data // ['email', 'password'] - * @return Customer + * @return mixed */ - public static function register(array $data): Customer + public static function register(array $data) { $data['customer_group_id'] = system_setting('base.default_customer_group_id', 0); // default_customer_group_id为默认客户组名称 $data['status'] = !system_setting('base.approve_customer'); // approve_customer为是否需要审核客户 @@ -38,7 +38,7 @@ class AccountService if ($data['email'] ?? 0) { $data['name'] = substr($data['email'], 0, strrpos($data['email'], '@'));; } - $data['avatar'] = ''; + $data['avatar'] = $data['avatar'] ?? ''; return CustomerRepo::create($data); } @@ -49,7 +49,8 @@ class AccountService * @param $type * @return void */ - public static function sendVerifyCodeForForgotten($email, $type) { + public static function sendVerifyCodeForForgotten($email, $type) + { $code = str_pad(mt_rand(10, 999999), 6, '0', STR_PAD_LEFT); VerifyCodeRepo::deleteByAccount($email); @@ -68,7 +69,7 @@ class AccountService * @param $code * @param $account * @param $password - * @param $type $account类型,email代表$account为邮箱地址,telephone代表$account为手机号码 + * @param $type $account类型,email代表$account为邮箱地址,telephone代表$account为手机号码 * @return void */ public static function verifyAndChangePassword($code, $account, $password, $type = 'email') diff --git a/composer.json b/composer.json index efecc777..ec2fe19e 100644 --- a/composer.json +++ b/composer.json @@ -17,6 +17,7 @@ "jenssegers/agent": "^2.6", "laravel/framework": "^9.0", "laravel/tinker": "^2.7", + "overtrue/socialite": "^4.5", "spatie/laravel-permission": "^5.5", "srmklive/paypal": "^3.0", "stripe/stripe-php": "^8.8", diff --git a/package.json b/package.json index bbb90abc..1d81b15e 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ }, "devDependencies": { "axios": "^0.21", - "bootstrap": "^4.6.1", + "bootstrap": "^5.2.1", "bootstrap-5.1.3": "npm:bootstrap@5.1.3", "browser-sync": "^2.27.10", "browser-sync-webpack-plugin": "^2.3.0", diff --git a/plugins/.gitignore b/plugins/.gitignore deleted file mode 100644 index dfc932a2..00000000 --- a/plugins/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -* -!FlatShipping -!LatestProducts -!Paypal -!Stripe diff --git a/plugins/FlatShipping/Static/css/demo.css b/plugins/FlatShipping/Static/css/demo.css new file mode 100644 index 00000000..30fdbc42 --- /dev/null +++ b/plugins/FlatShipping/Static/css/demo.css @@ -0,0 +1,8 @@ +/** +这里是插件css, 请在blade里面使用以下代码引入 + + */ + +#bk-stripe-app .form-wrap { + max-width: 400px; +} \ No newline at end of file diff --git a/plugins/FlatShipping/Static/image/logo.png b/plugins/FlatShipping/Static/image/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9d97eb4378e6ae00bdf488c591780e98c65ccfbc GIT binary patch literal 6647 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%0Da09d@+uk0R|p+V zmY4UEYn{(7y*7ZOJv99wMlHXGd)&>CYbkorY%}(44_~tZKM5 z>WNE7-@`r+PmkC@j})|QJnttC4&bMsP5cHbqgf0WX)4J+xqyTdpp;OD0A?2=26^Vd z;n!1lu_<<{i*<|}3_slsy+ag{n|;kd7*Ku&gxb4am=b=b0Uy351S8?N5PAJVezWDB zGKpYhuglY_!mSjfJQ3U8$Io}fPyDwmowGp29#je*JNIoLx@)-ap7&5N4J=bOEa$Ync5btLcu|R??oJiD` z3Sai*-6Z+O6N$ram1<1duCTxuuTDDGxz7zlu+FolDxj3)&_wM>I~3!1!3jQfA4TK; zbSjW#`m<3tm=ISKOZAq&cDwYuoMhAkes^kL@MHf%CkImV^#q-@0LkQKJzK|d2-09vy`0b1;T2> + */ diff --git a/plugins/FlatShipping/config.json b/plugins/FlatShipping/config.json index e5fae213..ba4d0db1 100644 --- a/plugins/FlatShipping/config.json +++ b/plugins/FlatShipping/config.json @@ -4,7 +4,7 @@ "description": "按订单总额收取固定运费", "type": "shipping", "version": "v1.0.0", - "icon": "", + "icon": "/image/logo.png", "author": { "name": "成都光大网络科技有限公司", "email": "yangjin@beikeshop.com" diff --git a/plugins/LatestProducts/Static/css/demo.css b/plugins/LatestProducts/Static/css/demo.css new file mode 100644 index 00000000..30fdbc42 --- /dev/null +++ b/plugins/LatestProducts/Static/css/demo.css @@ -0,0 +1,8 @@ +/** +这里是插件css, 请在blade里面使用以下代码引入 + + */ + +#bk-stripe-app .form-wrap { + max-width: 400px; +} \ No newline at end of file diff --git a/plugins/LatestProducts/Static/image/logo.png b/plugins/LatestProducts/Static/image/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..37ff0126945a4869a79c8207f8ad5e09531efa56 GIT binary patch literal 7979 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 H!?6DYXhSI* literal 0 HcmV?d00001 diff --git a/plugins/LatestProducts/Static/js/demo.js b/plugins/LatestProducts/Static/js/demo.js new file mode 100644 index 00000000..5bfe05d3 --- /dev/null +++ b/plugins/LatestProducts/Static/js/demo.js @@ -0,0 +1,4 @@ +/** + * 这里是插件js, 请在blade里面使用以下代码引入 + * + */ diff --git a/plugins/LatestProducts/config.json b/plugins/LatestProducts/config.json index d7291fa6..bcc8fb89 100644 --- a/plugins/LatestProducts/config.json +++ b/plugins/LatestProducts/config.json @@ -4,7 +4,7 @@ "description": "首页菜单添加最新商品列表功能", "type": "view", "version": "v1.0.0", - "icon": "", + "icon": "/image/logo.png", "author": { "name": "成都光大网络科技有限公司", "email": "yangjin@beikeshop.com" diff --git a/plugins/Paypal/Static/image/logo.png b/plugins/Paypal/Static/image/logo.png index e078b42531dc2a0f6fdd4798c117d2c9ec983551..a8ab186f57dde491a67c90076aef9cecf4be8a74 100644 GIT binary patch literal 10610 zcmeHtXFOYf^uN-U4pbLKqJy?5X=@ctLKQ{L7`3aaR_&dTR0o~ZuC3HwwMUF9t=c2Y ziqwo1DM768zy81HzX!j^-v{@V*X!Qgdq4M_^Ld~5d7tynKu?qVxZrU%Ha2dp2ltKG z*bc2799&0%GhIZ=d*J7o=L2&eHntOI4vs@?NhtzsY~rF?_f?GpQ)uL%z*L9C_7#fO zpsY^9H?0_1GBf0>fkj3v==eEFiT6BnZ$Czyi{%r3eCoBK`F&7>@CD=hXAM>4<3QR` z*^)ZULFiZKK{3?eQb!{EHmy=u&pVBo62n~UW%^j}s(Q!g&O4*&J2#l1KQ^0z25fA9 zU&sGt0;^J)=JI7@J9)AH5ZlccDx7RT*w{gAY#jfc{Ldi&1;c+E;eSJhiyibsYey4$ zMM^x-{+U-J1m?PS_!EfEw&so6l0qgn8t}kqC1L_&=L)T_` zaji9J%Zmb6Pl{w5YvuIaL|Wd=5nel?x$7s?~}Ar<RG94r2Rk$@Z06e*^ss&yj~=eC391=6<{w5;JH+<-ol4}_#3{}#=J%Zj6PJ2tj@)r|K3&qc<~;it|y_I4A< zlrJ>qO*S^`i~aVZ;MXVRxP9bPg|5cy+3klgn%E+sSi7EBI05y6EdyulohsyNdGoR zrdC!TA?#w(BMU~ZR#hI&+8DW(*}c~xm`c$sHk>oqUR#r$0&IS^JG{G4VS6mw=~YV-hoQ zIoz<-btX&#hwD1N{*MxnCpCnn_f8IbxWlBL*-2}K#GHvsh%0C)GM4%hhx(?1d;f`Z zy>0Obaw*RG7K$F|HT-hI?oFL2Hy6X}&Ux24!}zqMr`6hHb|3gpGErQ;z3DP-2~4Pi zQT+1W@8`wAbEl``f!eoFhUb%k@G z$JWNTd(FEcN&c!D%V^5pZ$76mhi}2_8UFL8`DH9?A#r;ldkTp8hqbarF7|$%XV{^g z&mx4TnWvC=A2>|2)n^d6nlL%fUyTPZ{xW{oQ{kB7{NN>`}1{ zAV!UK!8Ft3*xJ}Dt~RIU44;+pA_FwI=lMyl7z7BDxb|9=BiirRk+t|p&KQl~wu!UD zXE^7-9rJ&-bClP2r?J*uQ~jgH6CuEoGVSdY0$RUzzSCJd;)!a6lad=UxP*ZTRf#-N z=Vj5k=|larisCYqX|W5(in>t{psc8&^Xbi@`Ube)Pupma@JEXPTy^ydPB3pO38W-u zMtNEAKOV1q?y%Xg(^MmrNP@UK5~P!oOJBeEL>n*B4B|DFZF3T>{?$&jy>g@GA$NOj zANcFF`1704kM`5ZU5Cb?fb292)4Z@8d9lMI0py&k*9tI5k(sACPMve1Npi4q@qyPW zDu4+|JCS2qJkmEj+kVC!TX#~9sR(T;QQnj=w2T- z`^~v;PmQlp@9rO;hJoQ)>}`3DTM;UemlLd0&g*_??NKj5ghb!Vj< zJ>YPqMN#?@RRCx;Gj{&yB+iEAm`c^#IoCuc%ZOP9*vLp`9`}7Evz_)YG;J7e9yC0` zxxKfF3~8XZ?aA!C5ocb1-%c)vieHma4>Dh=n*N*ZVmq*>W@l1h(VTTJofWCDP8?y` zgk9AV6r^hI6$!z+Sug3V$e&m?%ZfVVgkb9WTj`-eBfVWz2>`dL8zkY!^<)`#==(`8 z1wZ`{HTEc*4cW6GU*+3AG=0+!*TfCjJ9***ePbKxO)L7BecGN}FWu|Q8@aWwuW%{g zeZxyalMR>qv+`>6>vW9vD>q#VZr&!bcmf-zq7tLak#3Ay$(o#qBm#Q1{F1wE-6&`} z{-s1*(2dx^rx~EqMfG(6pvo>hfT(0>YN7otO347c2D)62kB|N~4_^M^ALQg5l#w~U zr5L?K2508lx)hjYk(c0mr4mM6mD4t%_uO$RS9&x|U#kOwL&MhJSJ0E2G%4YlhsqQkpOk zP6@$El9zLbWJ1o3=$aEQl~?++o_Zd|(TsN1d>RC1?OM%UEe#f{v6RqtMlIgJN^q~w zwR7&I6wIggAWb5!I{Kjw)n#XB(@WqPj{7TRrXH~B@DP8E_f32G$F%jema6%FYrZkr zp6UYa`0;jW;by22M(OVIcjam-odFVHQI%iW)n2#Vndv1s+LQL_#kY831{f1kQ+?JL z#AxIL$J@VD&2O8aKaAcM6$?a`(oh8^3!XJfsL6{VtKAbx3U1$@>Hje@>!Q20WXRJB z@T0E0b9FT^Vt9Lx(n;Wj2PoMTa{3+`#vc7L8a8B+<2b%s%VImE)5~@Bbyx9h&vaBx9yNdGhX|Blnx3Z2_H}z9 zSshtNT~_l#>t|!8s$3BH?)yFA+mBs$Aj`Jno&~*7v0d=WIf5?IE@&WXUj%@MndYXp ze3O5Tk?wf?y-M+2xC(z-BULyzy*;|`A-=5-UbwoDbH%o+%Rk+HKkvJCT$L^v{_lFw zD4|wHQtaF;C(K}? zX#>-Y+1*RjqeXQU2(Cx+DyMCHk@e0v%FWdrXryJ{D41-~ioP51OAr~GBHOZKj*#4l zBP<#Sv^OH(CwwNGEyG&BKQ=8vdoc?U-Zr38h1~$ZZTIr$+<|+nG&c`S^exp_OKOe6{NX+S zN)vQ_(GjAJ)%AC#nak$4Eiv_shq~Z%jalXSA!pXt$c~GvKAHtRb^)#cot?QP?OP5? zxJ(Kf@_f4wtg_|B8ccA~;8;h2i4gBL^!1hK(;P_?U;Fzsk4)(Lfc+=Ng8KscO2ana zu!ca63!~}DOY?Hrn3ULzaCb%W{BpgN0KQ32nwVx)Kf1+&q$JaKQ?j7`;i%DJ&b09Y zW`yL?m{VMV^?!ZHp{zQFM$mC`h{O8GU`H&9GJPK!Kvz7-(W$mF!T?o3{>3uzBZBA* zevu;Hpj&i{J^uh_#rzm5yOl+rIMiBpiQgd7{w75a(6Y*Ni1?h4dw+QtKosG_yXuXM2wWikCRQ z!&^-IxBl)5=kwbA^Q&y=yvgKcwG7QrS25ATamLLfLXtpQGTL!pYHqH`9c}*v8nLZG2i4o` z4sWGJO6<*+jw%P!-ih4kUwXGf;y`H{QgPkcaooKQx;Ud~S%6hB1b*|1WGqUjPwzHB z_W!2pHN$$=RIDr)9_`x>yMlD?vCl&01mo0Zk}(FKFP=kykWC`LSb%#I7EV9lU0k zFa9n`NlC5M2PfCl>MBzFt*EK>O)H4h?K|Q(9#dcMy4^K+FZJ$#n;P+F&{l79*Pd_g zj`2=k`dFsls50fuMD{(ad-qh#q=d8D+Fr1`><5dA9gU4n$y>vV>Vi_g@&(N&owXzV zk~(4nir8c^KlwyHclxOCRi4f**iUj6FaIXHhKK$H4B1k2Y$d>qfU~ifhp_~85YWn! zhx)pMA*8g^tQKMFhHWWycAvkylb`^fLNkXE^-8eyF-ws}fUc$5&@=1Q{6@XtuS$aH zk}@g!H=a`v#Ugv|A%EzoW8?|N`R(Bv>K%9=p@+8t)4h*zY2galYcRZpu`Ru~E}gC@ zjdNZ|o8R~Y0PIcw>yG{D$gF<)C1HEdxAwAVOCbOEHTpg0i=d1n>!~DHcW2z9t9GS7 zstz`0Q3CLc>}=8bX)SXl=bsl-;n!BNdnGxl0GL%hnNrOqZ)P!eoV)w?>`V?P%U^B9 z9c_W2_h}`z0nfu2t{blv#w7<hS*vY&_ADy1C>EQ$8#!qE*vO;-dL#xkbl&Qci&Uu`lRc{mvmR6HUD(9Ium+6 zb-{Mvwv&o?+v1lpV67e^XPQ_>F>4-XwdwiNN(Q-%=Jf*f+736lL=jzEY;~d(V~s%* zSZ@KSHGZB#Sw>%(SdoSm?=a?g$7TEKUQHzRWN#CEM(cwg0=Yfx=`V@~vCAU_ zA*U&4pLplV3s}&sCzUi@oonG3OcP@*^(8BFGqQ@u0u3Ccf_@=%59PB0t@C6SD}H08 z)WeeMH8;7|xO4?CqzAl&I_RjzjW1-XychB2%=R~LAK|5JZ3#A(FAVumNjK8|Hs~}p z)N4^~cC`QW*nACMY&J!?Aj|9=vn{aV8#aDp16=$Q7AN^rl1lZZ1SZy!S~7fR zQmyr?bZENf(UV2IEI+ulU$-$({<#p z9;`3QYY+J5_&UAs#M=#gY7Xq9U-CWWff6iXbx1%*w0vR;r3I&UEk5kCKI!$n4xd8t z2o3No7G*qi+?%xHRnNn&O~Z~MhgzFniZP3qHX@AQmli|-4sBY^3RvGvHESqe4-T*=ocjfL+ z-^-}I)Jz`hhRK$P?fFfQh8wU({OBDyXjx@OD>Emu$G7QK(45EUy5UzQ_6y0Bzp%4x z+O@XFKMms;DO~VIJ6if~6@y)=nH7mkJs~F*QhHxs>I6OWrw+B^(IbFtGn)6x(=fSt zt;}9!hqsKSo=9}frKJA8K?CLr7Z|r`0k&v^d&}{DdAP%OLyDJ)M7VP^2`L!LSUgnT^!Y#|C!s)$oBch z#$LA(7G8W9BtcB|@lHG6>w}eXb33t+gpChpZ6<<~%J1V^-X9Iw|5{Z)9hN=Pl*_;l z`aGj5Ha-incdbc2iA9(a=7N2TuHV;RM}R(X(uVaB@lKBuP_HM~1C5KU(Ti|n(kXZ< zA!4>3D{nz`hmdexFe0MsIM(e0GRi)Plwh_DebyRl=D?Hfmc22UKY?^H|9bw8ub0kp zOh$!%C*gzSh^v6;HLT-l& znQ$?HQ_ntrAcGzOq+&s>r=ZB$$k`-Io?e0vAMFJArSl(b@sz`wjz3IeV>{_Iq?LB@ z@6Au6L-++_7JVz={TgFY-*4n|;6TGyO?FmG@~k+NKr0$IWf(ckP>%*Vu@!pW`8 z#>*4%Re9w(h7JVXk=nw0t~GJ4zka{6i~AHeqTt8V<2Cwbe-aDIr8RnPZ2>~x8>^pQ zjRVL0a(NXFBM(3O*tKTWwR7K(tZ(Kw^y7^FY6XG-m)fnuwjS_D&B!8BZ=;-x`!R`$ zykB`h>N;`Mgfdic@IiUbOB+0eUAK7je8%61EL->on*fduR<~N7vT33wkK2Gmd zRNS4PY?V33$l)etGsqE6=RkS5fc;T7#BA(KSFb6h?G2+|s6-xRhqBj!7gW>pv^y94 zdaS#qyw8jcG>nB1;69*|7EYztD@ zkO+Xt2aCiBN#;pn@-BCI^ z%a%d+Ue`_2P9pUK0vATxS?Sg#t%>6XO^hQo1-^^^wI0R=u1*8VB1L?gs)1T%;-e@-g|Mux)LYE{&|KP+bmYs65AyW7i&wo`M$51>AaNR05ue*&Aw%+vKXtxht9GU>j z0W~!q@O~Q)v-+`t@_Uy`XS3|_z|#Ar#o}JDk+Tr?L(U@tOwjT~T2(~61#f#F4AXL* zy!B5>AER&}bXztr*=XPwZ?{PnzBjQL&R7xpeuv2mD7M?S@}J(`ekCm@OOyq zZM}efyR2LZFWW}n2A@Q7bh*;GH$#8q+g3CjQM~)XQdjz+N%HbC5{pS?WOtouOzRh9Pa&VeXK8S_qR z+WEl5lAp$>r{)OlI~P!!vkaj9F)^o896Rn+*}hR`CtpeU%>kWXWR@(&*+~a22G`g* zI^1{cY(y>>N6H1o?#ONi<(?cU2$vqPFI^g3<>st%*L(vsCeCslmi6^aIuOBLn%7x0 zJg&`UY=*1XyEg>4sscKOD%JHe?A_m)FZ1oNI8p1mGUN0wbbkreXjs+b z*XO%CaR-k@S!!4Lquxlk2%ZBTdmCbn&~%(ziedN;zvR>2_^!zK&aJF$nq_3ELI50qG_#HpXi9_;Ls$)-w!X)!Ymr`CHsnbauDL!LkA zmo_`Qc$gv3z`b23k#nYRo{vpRRA9V~Tdksr;k6t-EBw4B2zL|sT z|Irlx_JOufbbUxsp7OhT>6F2<{pq~0x^JHyBCNZlQBbYWUcNc7`jnMt<@#FCLf};P z@kjdUw_qd1yy(B9sDNwH@+slP!$#*8inL3 zJ~d1~#*=L?=269SN-%V}W!jKK&Pm0W{xQvv zJ5&M=_AksONnFn-(3;JK;%+^l;b`I=?(Gk;3s;Ec|NKM5K5R-MTM+i^an861thy$liYA1|+H=ZF3h-d<;jPxeawKugk zGbjo-D7a?qcsJU`Gc{3JZgflWSN0ynjzFxLi^ia!nagfppN}GnE8-g_gH`KX5LA9P z#YAyEAzs%-OXRxlgBz#jzz@BgREH4-ymE!#x-~)tAiZDGrgl>d;!2PsX{_+dze1(= z{kHd0{WyKMn;Y_girB(8Y}9@JWyruN*Tyt&pEnHbN6!+h-=xMhpcaxnR{J)P+8=1LhgBF>XEmE{XZ42_F(X49Zk9w5Mp_&X=p zK4B$L>u?^3ql-vLkmE^>$sRx^mfHN?bx>GbMy9@uwy?(R3tIa#ZUY~g2e2U=&nBQ8 zv2GpLY!jXT4bk(HPOAWVMCjFP9-qwWqh}`W?uNra=8N4CnSwq0+d6#vw%&W9^?)m{x=B5RG`+Tdm4_N|n5^$eUH2a53pBa1~;6$AZ5H zBuKPgX(~rHV)tI`?de6?JhH)0>?EWs8<|<(HGOw1R2nWK6kxK@jv32)pVV8}4>VMO zeA=Pp=szAs72a10RY5^swcA48I<<-_X=b22|7G{>KwtChEw1#`FEWLIE@kHP-G7G; zqzi!P0H9DlXcT>xtCA!DDSnPWh#90#K9BmmlbP&c_QBun=aorEYH1|b^}iLC_OcSm zIT0QG(@`98E0`*-K}5{ilhqg)kFl&1XKoPa-fsFt+BhdepuPlWQrD4eD2W1D?oU&R|{yQs?#jPqmB~Q5LPq#}8<& z@ipsN-W0%9bgSG6qvkBOlhT%U8-OzHV@DY@qsA@)8`-e7yxbj6HX&E*9DYLk|B_G& zAQ>#?>&dSk@&q~{PXqPp!?+{#^!-RbFR4_r{<>Dk_LkWhx`liwX>twvsBw4=cDP<2 zFoeO6MkD83?JG;x-1jGe5@(y#byW#YcV!kC*q@ZhIMjG9bUCKw!hod6j^SCP8HWvY zwNWM|ow36ouuw(#bxVM|AH_EZ^Kz3JIu}v=1Hu~|kakoVY$z#Rj05UYh{hFmB!r!O zjo~<}L943f_X>|lW6oD-&H>sa@SgXhnWKS6RFv6Shna=c>iiMv`N+A{Jyxf4Z{OC6 zh=L0sXrI*JxOmHL%#r>Nb*gb-8*~n6Vw;6Tp9Y#hv%9v=Ca=)zWAd!O6YJ=G!+xCu z$$q)A#l@LBY(0_1aK-wyt1a$=s{aPd{u`?Mzf2jv*gtZ5 YSiqPjZb=5l71^}Z_3oG4d;IeM0j(bKYXATM literal 11470 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 F@qa+c-8%pP diff --git a/plugins/Social/Bootstrap.php b/plugins/Social/Bootstrap.php new file mode 100644 index 00000000..5fd6695c --- /dev/null +++ b/plugins/Social/Bootstrap.php @@ -0,0 +1,39 @@ + + * @created 2022-10-12 17:33:29 + * @modified 2022-10-12 17:33:29 + */ + +namespace Plugin\Social; + + +class Bootstrap +{ + public function boot() + { + $this->addSocialData(); + } + + /** + * 增加第三方登录方式 + */ + private function addSocialData() + { + add_filter('login.social.buttons', function ($buttons) { + $providers = plugin_setting('social.setting'); + if (empty($providers)) { + return $buttons; + } + + foreach ($providers as $provider) { + $buttons[] = view('Social::shop/social_button', ['provider' => $provider])->render(); + } + return $buttons; + }); + } +} diff --git a/plugins/Social/Controllers/AdminSocialController.php b/plugins/Social/Controllers/AdminSocialController.php new file mode 100644 index 00000000..86dc1b27 --- /dev/null +++ b/plugins/Social/Controllers/AdminSocialController.php @@ -0,0 +1,35 @@ + + * @created 2022-09-30 18:46:38 + * @modified 2022-09-30 18:46:38 + */ + +namespace Plugin\Social\Controllers; + +use Illuminate\Http\Request; +use Beike\Repositories\SettingRepo; +use Beike\Admin\Http\Controllers\Controller; + +class AdminSocialController extends Controller +{ + /** + * @throws \Throwable + */ + public function saveSetting(Request $request): array + { + $socialData = [ + 'type' => 'plugin', + 'space' => 'social', + 'name' => 'setting', + 'value' => json_encode($request->all()), + 'json' => 1, + ]; + SettingRepo::createOrUpdate($socialData); + return json_success('保存成功'); + } +} diff --git a/plugins/Social/Controllers/ShopSocialController.php b/plugins/Social/Controllers/ShopSocialController.php new file mode 100644 index 00000000..0f96f1f7 --- /dev/null +++ b/plugins/Social/Controllers/ShopSocialController.php @@ -0,0 +1,73 @@ + + * @created 2022-09-30 18:46:38 + * @modified 2022-09-30 18:46:38 + */ + +namespace Plugin\Social\Controllers; + +use Beike\Models\Customer; +use Illuminate\Support\Facades\Auth; +use Overtrue\Socialite\Exceptions\Exception; +use Overtrue\Socialite\SocialiteManager; +use Beike\Admin\Http\Controllers\Controller; +use Plugin\Social\Repositories\CustomerRepo; + +class ShopSocialController extends Controller +{ + private SocialiteManager $socialite; + + public function __construct() + { + $config = []; + $providerSettings = plugin_setting('social.setting'); + foreach ($providerSettings as $providerSetting) { + $provider = $providerSetting['provider']; + if (empty($provider)) { + continue; + } + $config[$provider] = [ + 'client_id' => $providerSetting['key'], + 'client_secret' => $providerSetting['secret'], + 'redirect' => plugin_route('social.callback', $provider), + ]; + } + $this->socialite = new SocialiteManager($config); + } + + /** + * @param $provider + * @return mixed + */ + public function redirect($provider) + { + $url = $this->socialite->create($provider)->redirect(); + return redirect($url); + } + + /** + * @param $provider + * @return mixed + * @throws Exception + */ + public function callback($provider) + { + $code = request('code'); + $driver = $this->socialite->create($provider); + + // For google, facebook, twitter in China. + $driver->setGuzzleOptions([ + 'proxy' => '127.0.0.1:7890' + ]); + + $userData = $driver->userFromCode($code); + $customer = CustomerRepo::createCustomer($provider, $userData); + Auth::guard(Customer::AUTH_GUARD)->login($customer); + return view('Social::shop/callback'); + } +} diff --git a/plugins/Social/Lang/en/providers.php b/plugins/Social/Lang/en/providers.php new file mode 100644 index 00000000..d16b687e --- /dev/null +++ b/plugins/Social/Lang/en/providers.php @@ -0,0 +1,35 @@ + + * @created 2022-10-13 11:30:33 + * @modified 2022-10-13 11:30:33 + */ + +return [ + 'alipay' => 'Alipay', + 'azure' => 'Azure', + 'dingtalk' => 'Dingtalk', + 'douyin' => 'Douyin', + 'douban' => 'Douban', + 'facebook' => 'Facebook', + 'feishu' => 'Feishu', + 'figma' => 'Figma', + 'github' => 'Github', + 'gitee' => 'Gitee', + 'google' => 'Google', + 'line' => 'Line', + 'linkedin' => 'Linkedin', + 'open-wework' => 'Open-wework', + 'outlook' => 'Outlook', + 'qcloud' => 'Qcloud', + 'qq' => 'QQ', + 'taobao' => 'Taobao', + 'tapd' => 'Tapd', + 'wechat' => 'Wechat', + 'wework' => 'Wework', + 'weibo' => 'Weibo', +]; diff --git a/plugins/Social/Lang/en/setting.php b/plugins/Social/Lang/en/setting.php new file mode 100644 index 00000000..a01011c3 --- /dev/null +++ b/plugins/Social/Lang/en/setting.php @@ -0,0 +1,58 @@ + + * @created 2022-08-11 15:26:18 + * @modified 2022-08-11 15:26:18 + */ + +return [ +// Text + 'text_module' => 'Modules', + 'text_success' => 'Success: You have modified module OpenCart OmniAuth!', + 'text_copyright' => 'OpenCart.cn OmniAuth © %s', + 'text_omni_explain' => 'This plugin supports WeChat scan code, WeChat Official, QQ, Weibo, Facebook, Google, Twitter and others Social Network', + 'text_omni_explain_2' => 'To use a third-party login, you need to apply to the corresponding platform, and fill in the obtained ID and key to the corresponding input box.', + 'text_wechat_title' => 'WeChat scan code login application address', + 'text_wechat_info' => 'WeChat open platform', + 'text_qq_title' => 'QQ login application address', + 'text_qq_info' => 'QQ interconnection', + 'text_weibo_title' => 'Weibo login application address', + 'text_weibo_info' => 'Weibo open platform', + 'text_facebook_title' => 'Facebook login application address', + 'text_google_title' => 'Google login application address', + 'text_Twitter_title' => 'Twitter login application address', + 'text_help_msg' => 'help information', + +// Entry + 'entry_status' => 'Status', + 'entry_bind' => 'Force Bind', + 'entry_debug' => 'Debug Mode', + + 'entry_provider' => 'Provider', + 'entry_key' => 'Client ID', + 'entry_secret' => 'Client Secret', + 'entry_scope' => 'Flags (optional)', + 'entry_callback' => 'Callback URL', + 'entry_sort_order' => 'Sort Order', + +// Button + 'button_add_row' => 'Add Provider', + +// Error + 'error_permission' => 'Warning: You do not have permission to modify module OpenCart OmniAuth!', + +// Providers + 'wechat' => 'WeChat', + 'wechatofficial' => 'WeChatOfficial', + 'qq' => 'QQ', + 'weibo' => 'Weibo', + 'facebook' => 'Facebook', + 'google' => 'Google', + 'twitter' => 'Twitter', + + 'instagram' => 'Instagram', +]; diff --git a/plugins/Social/Lang/zh_cn/providers.php b/plugins/Social/Lang/zh_cn/providers.php new file mode 100644 index 00000000..84004915 --- /dev/null +++ b/plugins/Social/Lang/zh_cn/providers.php @@ -0,0 +1,35 @@ + + * @created 2022-10-13 11:30:33 + * @modified 2022-10-13 11:30:33 + */ + +return [ + 'alipay' => '支付宝', + 'azure' => 'Azure', + 'dingtalk' => '钉钉', + 'douyin' => '抖音', + 'douban' => '豆瓣', + 'facebook' => 'Facebook', + 'feishu' => '飞书', + 'figma' => 'Figma', + 'github' => 'GitHub', + 'gitee' => 'Gitee', + 'google' => 'Google', + 'line' => 'Line', + 'linkedin' => 'Linkedin', + 'open-wework' => 'open-wework', + 'outlook' => 'Outlook', + 'qcloud' => '腾讯云', + 'qq' => 'QQ', + 'taobao' => '淘宝', + 'tapd' => 'tapd', + 'wechat' => '微信', + 'wework' => '企业微信', + 'weibo' => '微博', +]; diff --git a/plugins/Social/Lang/zh_cn/setting.php b/plugins/Social/Lang/zh_cn/setting.php new file mode 100644 index 00000000..b995632f --- /dev/null +++ b/plugins/Social/Lang/zh_cn/setting.php @@ -0,0 +1,47 @@ + + * @created 2022-08-11 15:26:18 + * @modified 2022-08-11 15:26:18 + */ + +return [ +// Text + 'text_module' => '模块', + 'text_success' => '成功: 您成功修改第三方登录配置!', + 'text_copyright' => 'OpenCart.cn 获取帮助 © %s', + 'text_omni_explain' => '本模块支持微信扫码, 微信公众号, QQ, 微博,Facebook,Google,Twitter等第三方登录', + 'text_omni_explain_2' => '要使用第三方登录, 需要到对应平台申请开通, 并把获取到的 ID 和密钥填写到上面对应的输入框', + 'text_wechat_title' => '微信扫码登录申请地址', + 'text_wechat_info' => '微信开放平台', + 'text_qq_title' => 'QQ登录申请地址', + 'text_qq_info' => 'QQ互联', + 'text_weibo_title' => '微博登录申请地址', + 'text_weibo_info' => '微博开放平台', + 'text_facebook_title' => 'Facebook登录申请地址', + 'text_google_title' => 'Google登录申请地址', + 'text_Twitter_title' => 'Twitter登录申请地址', + 'text_help_msg' => '帮助信息', + +// Entry + 'entry_status' => '状态', + 'entry_bind' => '强制绑定', + 'entry_debug' => '调试模式', + + 'entry_provider' => '类型', + 'entry_key' => 'Client ID', + 'entry_secret' => 'Client Secret', + 'entry_scope' => 'Flags (可选项)', + 'entry_callback' => '回调地址', + 'entry_sort_order' => '排序', + +// Button + 'button_add_row' => '添加类型', + +// Error + 'error_permission' => '警告: 您没有权限修改此配置!', +]; diff --git a/plugins/Social/Migrations/2022_10_13_100354_create_customer_socials.php b/plugins/Social/Migrations/2022_10_13_100354_create_customer_socials.php new file mode 100644 index 00000000..7ffcd18c --- /dev/null +++ b/plugins/Social/Migrations/2022_10_13_100354_create_customer_socials.php @@ -0,0 +1,37 @@ +id(); + $table->integer('customer_id'); + $table->string('provider'); + $table->string('user_id'); + $table->string('union_id'); + $table->string('access_token'); + $table->text('extra'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('customer_socials'); + } +}; diff --git a/plugins/Social/Models/CustomerSocial.php b/plugins/Social/Models/CustomerSocial.php new file mode 100644 index 00000000..094378aa --- /dev/null +++ b/plugins/Social/Models/CustomerSocial.php @@ -0,0 +1,30 @@ + + * @created 2022-10-13 10:35:44 + * @modified 2022-10-13 10:35:44 + */ + +namespace Plugin\Social\Models; + +use Beike\Models\Customer; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; + +class CustomerSocial extends Model +{ + public $table = 'customer_socials'; + + public $fillable = [ + 'customer_id', 'provider', 'user_id', 'union_id', 'access_token', 'extra' + ]; + + public function customer(): BelongsTo + { + return $this->belongsTo(Customer::class); + } +} diff --git a/plugins/Social/Repositories/CustomerRepo.php b/plugins/Social/Repositories/CustomerRepo.php new file mode 100644 index 00000000..f64a3233 --- /dev/null +++ b/plugins/Social/Repositories/CustomerRepo.php @@ -0,0 +1,138 @@ + + * @created 2022-10-13 09:57:13 + * @modified 2022-10-13 09:57:13 + */ + +namespace Plugin\Social\Repositories; + +use Beike\Models\Customer; +use Overtrue\Socialite\User; +use Overtrue\Socialite\Providers; +use Beike\Shop\Services\AccountService; +use Illuminate\Database\Eloquent\Model; +use Plugin\Social\Models\CustomerSocial; +use Illuminate\Database\Eloquent\Builder; +use Overtrue\Socialite\Exceptions\Exception; + +class CustomerRepo +{ + /** + * 允许的第三方服务 + */ + private const PROVIDERS = [ + Providers\Alipay::NAME, + Providers\Azure::NAME, + Providers\DingTalk::NAME, + Providers\DouYin::NAME, + Providers\Douban::NAME, + Providers\Facebook::NAME, + Providers\FeiShu::NAME, + Providers\Figma::NAME, + Providers\GitHub::NAME, + Providers\Gitee::NAME, + Providers\Google::NAME, + Providers\Line::NAME, + Providers\Linkedin::NAME, + Providers\OpenWeWork::NAME, + Providers\Outlook::NAME, + Providers\QCloud::NAME, + Providers\QQ::NAME, + Providers\Taobao::NAME, + Providers\Tapd::NAME, + Providers\WeChat::NAME, + Providers\WeWork::NAME, + Providers\Weibo::NAME, + ]; + + public static function allProviders(): array + { + $items = []; + foreach (self::PROVIDERS as $provider) { + $items[] = [ + 'code' => $provider, + 'label' => trans("Social::providers.{$provider}") + ]; + } + return $items; + } + + /** + * 创建客户, 关联第三方用户数据 + * + * @param $provider + * @param User $userData + * @return Customer + * @throws Exception + */ + public static function createCustomer($provider, User $userData): Customer + { + $social = self::getCustomerByProvider($provider, $userData->getId()); + $customer = $social->customer ?? null; + if ($customer) { + return $customer; + } + + $email = $userData->getEmail(); + $customer = Customer::query()->where('email', $email)->first(); + if (empty($customer)) { + $customerData = [ + 'from' => $provider, + 'email' => $userData->getEmail(), + 'name' => $userData->getNickname(), + 'avatar' => $userData->getAvatar(), + ]; + $customer = AccountService::register($customerData); + } + + self::createSocial($customer, $provider, $userData); + return $customer; + } + + + /** + * @param $customer + * @param $provider + * @param User $userData + * @return Model|Builder + * @throws Exception + */ + public static function createSocial($customer, $provider, User $userData): Model|Builder + { + $social = self::getCustomerByProvider($provider, $userData->getId()); + if ($social) { + return $social; + } + + $socialData = [ + 'customer_id' => $customer->id, + 'provider' => $provider, + 'user_id' => $userData->getId(), + 'union_id' => '', + 'access_token' => $userData->getAccessToken(), + 'extra' => $userData->toJSON() + ]; + return CustomerSocial::query()->create($socialData); + } + + + /** + * 通过 provider 和 user_id 获取已存在 social + * @param $provider + * @param $userId + * @return Model|Builder|null + */ + private static function getCustomerByProvider($provider, $userId): Model|Builder|null + { + return CustomerSocial::query() + ->with(['customer']) + ->where('provider', $provider) + ->where('user_id', $userId) + ->first(); + } +} diff --git a/plugins/Social/Routes/admin.php b/plugins/Social/Routes/admin.php new file mode 100644 index 00000000..0bf948a1 --- /dev/null +++ b/plugins/Social/Routes/admin.php @@ -0,0 +1,15 @@ + + * @created 2022-08-04 16:17:53 + * @modified 2022-08-04 16:17:53 + */ + +use Illuminate\Support\Facades\Route; +use Plugin\Social\Controllers\AdminSocialController; + +Route::post('/social/setting', [AdminSocialController::class, 'saveSetting'])->name('plugin.social.setting'); diff --git a/plugins/Social/Routes/shop.php b/plugins/Social/Routes/shop.php new file mode 100644 index 00000000..27bcbaca --- /dev/null +++ b/plugins/Social/Routes/shop.php @@ -0,0 +1,16 @@ + + * @created 2022-09-30 18:52:54 + * @modified 2022-09-30 18:52:54 + */ + +use Illuminate\Support\Facades\Route; +use Plugin\Social\Controllers\ShopSocialController; + +Route::get('/social/redirect/{provider}', [ShopSocialController::class, 'redirect'])->name('plugin.social.redirect'); +Route::get('/social/callbacks/{provider}', [ShopSocialController::class, 'callback'])->name('plugin.social.callback'); diff --git a/plugins/Social/Static/image/facebook.png b/plugins/Social/Static/image/facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..d5fa03b5cadbe53bbafd02a9fd9e3ef7e537bea8 GIT binary patch literal 1338 zcmcIk|2xwO03K<_v{^A0E;pvO=!=r?_1Q9S_2t-ma%AP_x`7inhzC+MH6+%Vxu%SXe(OlasXk(g&HrjGbt zk!+VV>jt`)j|>#aN?TToFxH^P@XK)|^^+iwA@s^Myj_BOy9_K8+FTl&lLt>rMc>!Ke96PR5z7vOZJA2%N`m9*~b*4SQhXuSBlT1>9y1! zW`s?^z5B7RK_Ujx;n{FK4!n0b6&O^vpp-dAuma=@eP<`DMxGx(RL?RO5vUJ3lbb82 zqQQeUOl8tThfp;x15Hb9uTZRvUc#ntawp+5F*oUOuPajlheFF`_8TQPHm z6~n|aFUAGblhs9QP3+^3Bs2%iKEz`aX`HD3LJs!lwM6Srez101yX?sWMg@>Re;BO4LUwPMxj9HDQ zwG|g^p+)!-h|55Y4(lfx&kY5ea&IS=Az&R9cAqsLx41ZmGf!RJoM6}} zujPh}a%G{aAz0@SqP_Fk%x(L$-*)z69ZEWf0+HM*(?{moRcz0ccsz4l$#aOBU7)V* zqq89_r)ks4<7eXWvWc=twj3oBC1=;`IwNbPCU+9X$8sDF3;9QP-&yt{=qpVKw-IIo zz0z%Ftz$OUJK!bqv3}GxaReFztIHHGUVQE*LYG>Aeta!Uek8jUB_81cCiw#aR6g7l zvgz>Fiv-wynE$C`d%ZADnk`I;hhmeg_?)0;LD2AqHOsGUpJ4D8izrs;voXKA z`_Pc~>D&~i!gi;6SRbU1&PQ=3&dAFZIGOpO`uvYG={ff~DJLyJx{Z(7G+{7RGNTO} zB4c{>pDoX=v3#Jqt@@rF8QYZHYNQY_YW?}!9-L@N+jro-qLKW@306tY*+|!@=A57Q z9s6FDTna8+080MbC8;dd`)=$<1IB_L_tUSroiY9MZeVvSYL#wVeQ@SzO7$;5m=b2N zTv>m)fqpawP!D)TgQ@wi3T2cC?Pme3bSre=J#D6|Dm!z}E=_(kTtVmo8?+94T zj!6JLYcH6U7QGV2nuzsijNKS&tTzGXuWMH>LE;G#OAvSZQZJP+yh6X6e&%w zvowwECUqKDw}mvOhe+Zc@5AKrp0o|W&Pq#NH^ecEt6N{xxIU5!BuD}h--)5*Meaen p16{V5HPXG%BY{c#q=S#tMlP*(h?BckgfE>T#A_FYbPEVM^9}BHcJTlJ literal 0 HcmV?d00001 diff --git a/plugins/Social/Static/image/google.png b/plugins/Social/Static/image/google.png new file mode 100644 index 0000000000000000000000000000000000000000..9f0a898225940f54f6d740cd66d0ac67c38912bb GIT binary patch literal 3966 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 Y13Z*;u$^4JlmGw#07*qoM6N<$f?l?@dH?_b literal 0 HcmV?d00001 diff --git a/plugins/Social/Static/image/logo.png b/plugins/Social/Static/image/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa6656110caee294dea592b4ece6482544a2696 GIT binary patch literal 13509 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 DyDsyf literal 0 HcmV?d00001 diff --git a/plugins/Social/Static/image/qq.png b/plugins/Social/Static/image/qq.png new file mode 100644 index 0000000000000000000000000000000000000000..ee614af7bcd92477b80068a4669c060f56f5ea13 GIT binary patch literal 4519 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 __('common.save') }} +@endsection + @section('content') -
+
-
{{ $plugin->name }}
+
+
{{ $plugin->name }}
+ +
@if (session('success')) @endif -
- @csrf - {{ method_field('put') }} -这里是social配置模板 - - - - -
+ + + + + + + + + + + + + + + + + + + + + + + + + +
{{ __('Social::setting.entry_provider') }}{{ __('Social::setting.entry_status') }}{{ __('Social::setting.entry_key') }}{{ __('Social::setting.entry_secret') }}{{ __('Social::setting.entry_callback') }}{{ __('Social::setting.entry_sort_order') }}
+ + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+ + + + + +
+
+ +
+
+
{{ __('Social::setting.text_help_msg') }}
+
    +
  1. {{ __('Social::setting.text_omni_explain') }}
  2. +
  3. {{ __('Social::setting.text_omni_explain_2') }}
  4. +
  5. {{ __('Social::setting.text_wechat_title') }} + {{ __('Social::setting.text_wechat_info') }} +
  6. +
  7. {{ __('Social::setting.text_qq_title') }} + {{ __('Social::setting.text_qq_info') }} +
  8. +
  9. {{ __('Social::setting.text_weibo_title') }} + {{ __('Social::setting.text_weibo_info') }} +
  10. +
  11. {{ __('Social::setting.text_facebook_title') }} + Facebook +
  12. +
  13. {{ __('Social::setting.text_google_title') }} + Google +
  14. +
  15. {{ __('Social::setting.text_Twitter_title') }} + Twitter +
  16. + ....... +
+
+
+ + + + + @endsection diff --git a/plugins/Social/Views/shop/callback.blade.php b/plugins/Social/Views/shop/callback.blade.php new file mode 100644 index 00000000..ba9b029d --- /dev/null +++ b/plugins/Social/Views/shop/callback.blade.php @@ -0,0 +1,9 @@ + diff --git a/plugins/Social/Views/shop/social_button.blade.php b/plugins/Social/Views/shop/social_button.blade.php new file mode 100644 index 00000000..61b0c536 --- /dev/null +++ b/plugins/Social/Views/shop/social_button.blade.php @@ -0,0 +1,4 @@ + diff --git a/plugins/Stripe/Static/image/logo.png b/plugins/Stripe/Static/image/logo.png index 9cef734f494c23c37c3a5a63cc008438b994c520..d063a121f3de69731f55830b14e7ede58268bd5a 100644 GIT binary patch literal 11128 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 literal 16071 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 WHUi!gRR3(%{w6LjRwH5<^#1@jV?^%& diff --git a/public/vendor/clipboard/clipboard.min.js b/public/vendor/clipboard/clipboard.min.js new file mode 100644 index 00000000..54b3c463 --- /dev/null +++ b/public/vendor/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1
-
+
* @Date 2022-09-09 19:16:39 - * @LastEditTime 2022-09-16 20:56:53 + * @LastEditTime 2022-09-28 17:23:48 */ export default { @@ -12,13 +12,15 @@ export default { * @return {*} */ getCarts() { - $http.get('carts/mini', null, {hload: true}).then((res) => { - $('#offcanvas-right-cart').html(res.data.html); - if (!res.data.quantity) { - $('.cart-badge-quantity').hide(); - } else { - $('.cart-badge-quantity').show().html(res.data.quantity > 99 ? '99+' : res.data.quantity); - } + $(document).ready(() => { + $http.get('carts/mini', null, {hload: true}).then((res) => { + $('#offcanvas-right-cart').html(res.data.html); + if (!res.data.quantity) { + $('.cart-badge-quantity').hide(); + } else { + $('.cart-badge-quantity').show().html(res.data.quantity > 99 ? '99+' : res.data.quantity); + } + }) }) }, @@ -118,9 +120,18 @@ export default { type: 2, title: '', shadeClose: true, + scrollbar: false, area: ['900px', '600px'], skin: 'login-pop-box', content: 'login?iframe=true' //iframe的url }); + }, + + openWin(url, name = '', iWidth = 700, iHeight = 500) { + var iTop = (window.screen.height - 30 - iHeight) / 2;; + var iLeft = (window.screen.width - 10 - iWidth) / 2;; + window.open(url, name, 'height=' + iHeight + ',innerHeight=' + iHeight +    + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft +    + ',toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no'); } } \ No newline at end of file diff --git a/themes/default/account/login.blade.php b/themes/default/account/login.blade.php index b07fc92b..e04b3f3e 100644 --- a/themes/default/account/login.blade.php +++ b/themes/default/account/login.blade.php @@ -16,69 +16,65 @@

{{ __('shop/login.index') }}

@endif -
- -
-
+