HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.ankua.asia/plugins/Social/Controllers/ShopSocialController.php
<?php
/**
 * SocialController.php
 *
 * @copyright  2022 beikeshop.com - All Rights Reserved
 * @link       https://beikeshop.com
 * @author     Edward Yang <yangjin@guangda.work>
 * @created    2022-09-30 18:46:38
 * @modified   2022-09-30 18:46:38
 */

namespace Plugin\Social\Controllers;

use Beike\Admin\Http\Controllers\Controller;
use Beike\Models\Customer;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Config;
use Laravel\Socialite\Facades\Socialite;
use Plugin\Social\Repositories\CustomerRepo;

class ShopSocialController extends Controller
{
    public function initSocial()
    {
        $providerSettings = plugin_setting('social.setting', []);
        foreach ($providerSettings as $providerSetting) {
            $provider = $providerSetting['provider'];
            if (empty($provider)) {
                continue;
            }
            $config = [
                'client_id'     => $providerSetting['key'],
                'client_secret' => $providerSetting['secret'],
                'redirect'      => shop_route('social.callback', $provider),
            ];
            Config::set("services.{$provider}", $config);
        }
    }

    /**
     * @param $provider
     * @return mixed
     */
    public function redirect($provider)
    {
        try {
            $this->initSocial();

            return Socialite::driver($provider)->redirect();
        } catch (\Exception $e) {
            exit($e->getMessage());
        }
    }

    /**
     * @param $provider
     * @return mixed
     */
    public function callback($provider)
    {
        try {
            $this->initSocial();
            $user     = Socialite::driver($provider)->user();
            $userData = [
                'uid'    => $user->getId(),
                'email'  => $user->getEmail(),
                'name'   => $user->getName(),
                'avatar' => $user->getAvatar(),
                'token'  => $user->token,
                'raw'    => $user->getRaw(),
            ];
            $customer = CustomerRepo::createCustomer($provider, $userData);
            Auth::guard(Customer::AUTH_GUARD)->login($customer);

            return view('Social::shop/callback');
        } catch (\Exception $e) {
            exit($e->getMessage());
        }
    }
}