Completed
Push — master ( 0c603e...505b06 )
by Sergi Tur
02:19
created

handleProviderCallback()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 12
rs 9.4285
c 0
b 0
f 0
ccs 0
cts 10
cp 0
cc 2
eloc 7
nc 2
nop 1
crap 6
1
<?php
2
3
namespace Acacha\LaravelSocial\Http\Controllers;
4
5
use Acacha\LaravelSocial\Contracts\Factory as SocialProviderFactory;
6
use Acacha\LaravelSocial\Repositories\SocialUserRepository;
7
use Illuminate\Contracts\Auth\Factory as AuthFactory;
8
use Illuminate\Foundation\Auth\RedirectsUsers;
9
use Illuminate\Routing\Controller;
10
use Illuminate\Foundation\Bus\DispatchesJobs;
11
use Illuminate\Foundation\Validation\ValidatesRequests;
12
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
13
14
/**
15
 * Class SocialProvidersController.
16
 *
17
 * @package App\Http\Controllers
18
 */
19
class SocialProvidersController extends Controller
20
{
21
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests, RedirectsUsers;
22
23
    /**
24
     * Laravel social provider factory.
25
     *
26
     * @var SocialProviderFactory
27
     */
28
    protected $socialProvider;
29
30
    /**
31
     * Laravel auth factory.
32
     *
33
     * @var \Illuminate\Contracts\Auth\Factory
34
     */
35
    protected $auth;
36
37
    /**
38
     * Where to redirect users after login/register.
39
     *
40
     * @var string
41
     */
42
    protected $redirectTo = '/home';
43
44
    /**
45
     * Social user repository.
46
     *
47
     * @var SocialUserRepository
48
     */
49
    protected $users;
50
51
    /**
52
     * SocialProvidersController constructor.
53
     *
54
     * @param SocialProviderFactory $socialProvider
55
     * @param AuthFactory $auth
56
     * @param SocialUserRepository $users
57
     */
58
    public function __construct(SocialProviderFactory $socialProvider, AuthFactory $auth, SocialUserRepository $users)
59
    {
60
        $this->socialProvider = $socialProvider;
61
        $this->auth = $auth;
62
        $this->users = $users;
63
    }
64
65
    /**
66
     * Redirect to social provider.
67
     *
68
     * @param $provider
69
     * @return \Symfony\Component\HttpFoundation\RedirectResponse
70
     */
71
    public function redirectToProvider($provider)
72
    {
73
        return $this->socialProvider->driver($provider)->redirect();
74
    }
75
76
    /**
77
     * Obtain the user information from social network.
78
     *
79
     * @param $provider
80
     * @return \Illuminate\Http\RedirectResponse
81
     */
82
    public function handleProviderCallback($provider)
83
    {
84
        try {
85
            $user = $this->socialProvider->driver($provider)->user();
86
        } catch (Exception $e) {
0 ignored issues
show
Bug introduced by
The class Acacha\LaravelSocial\Http\Controllers\Exception does not exist. Did you forget a USE statement, or did you not list all dependencies?

Scrutinizer analyzes your composer.json/composer.lock file if available to determine the classes, and functions that are defined by your dependencies.

It seems like the listed class was neither found in your dependencies, nor was it found in the analyzed files in your repository. If you are using some other form of dependency management, you might want to disable this analysis.

Loading history...
87
            return Redirect::to('auth/' . $provider);
88
        }
89
90
        $this->auth->login($this->users->provider($provider)->findOrCreateUser($user), true);
0 ignored issues
show
Bug introduced by
The method login() does not seem to exist on object<Illuminate\Contracts\Auth\Factory>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
91
92
        return redirect()->intended($this->redirectPath());
93
    }
94
}
95