Skip to content

Commit 9b8aa40

Browse files
committed
Merge remote-tracking branch 'origin/0.13.3'
# Conflicts: # satellizer.min.js
2 parents b46bead + e0d4b6a commit 9b8aa40

File tree

13 files changed

+3604
-210
lines changed

13 files changed

+3604
-210
lines changed

examples/client/controllers/login.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,4 @@ angular.module('MyApp')
2828
}
2929
});
3030
};
31-
});
31+
});

examples/server/node/config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ module.exports = {
1818
// OAuth 1.0
1919
TWITTER_KEY: process.env.TWITTER_KEY || 'YOUR_TWITTER_CONSUMER_KEY',
2020
TWITTER_SECRET: process.env.TWITTER_SECRET || 'YOUR_TWITTER_CONSUMER_SECRET'
21-
};
21+
};

examples/server/node/server.js

-1
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,6 @@ app.post('/auth/facebook', function(req, res) {
556556
if (response.statusCode !== 200) {
557557
return res.status(500).send({ message: profile.error.message });
558558
}
559-
console.log(profile);
560559
if (req.headers.authorization) {
561560
User.findOne({ facebook: profile.id }, function(err, existingUser) {
562561
if (existingUser) {

examples/server/php/app/Http/Controllers/AuthController.php

+89-76
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php namespace App\Http\Controllers;
22

3-
use JWT;
43
use Hash;
54
use Config;
65
use Validator;
6+
use Firebase\JWT\JWT;
77
use Illuminate\Http\Request;
88
use GuzzleHttp;
99
use GuzzleHttp\Subscriber\Oauth\Oauth1;
@@ -99,8 +99,7 @@ public function signup(Request $request)
9999
*/
100100
public function facebook(Request $request)
101101
{
102-
$accessTokenUrl = 'https://graph.facebook.com/v2.3/oauth/access_token';
103-
$graphApiUrl = 'https://graph.facebook.com/v2.3/me';
102+
$client = new GuzzleHttp\Client();
104103

105104
$params = [
106105
'code' => $request->input('code'),
@@ -109,13 +108,18 @@ public function facebook(Request $request)
109108
'client_secret' => Config::get('app.facebook_secret')
110109
];
111110

112-
$client = new GuzzleHttp\Client();
113-
114111
// Step 1. Exchange authorization code for access token.
115-
$accessToken = $client->get($accessTokenUrl, ['query' => $params])->json();
112+
$accessTokenResponse = $client->request('GET', 'https://graph.facebook.com/v2.5/oauth/access_token', [
113+
'query' => $params
114+
]);
115+
$accessToken = json_decode($accessTokenResponse->getBody(), true);
116116

117117
// Step 2. Retrieve profile information about the current user.
118-
$profile = $client->get($graphApiUrl, ['query' => $accessToken])->json();
118+
$profileResponse = $client->request('GET', 'https://graph.facebook.com/v2.5/me', [
119+
'query' => $accessToken
120+
]);
121+
$profile = json_decode($profileResponse->getBody(), true);
122+
119123

120124

121125
// Step 3a. If user is already signed in then link accounts.
@@ -162,8 +166,7 @@ public function facebook(Request $request)
162166
*/
163167
public function google(Request $request)
164168
{
165-
$accessTokenUrl = 'https://accounts.google.com/o/oauth2/token';
166-
$peopleApiUrl = 'https://www.googleapis.com/plus/v1/people/me/openIdConnect';
169+
$client = new GuzzleHttp\Client();
167170

168171
$params = [
169172
'code' => $request->input('code'),
@@ -173,18 +176,17 @@ public function google(Request $request)
173176
'grant_type' => 'authorization_code',
174177
];
175178

176-
$client = new GuzzleHttp\Client();
177-
178179
// Step 1. Exchange authorization code for access token.
179-
$accessTokenResponse = $client->post($accessTokenUrl, ['body' => $params]);
180-
$accessToken = $accessTokenResponse->json()['access_token'];
181-
182-
$headers = array('Authorization' => 'Bearer ' . $accessToken);
180+
$accessTokenResponse = $client->request('POST', 'https://accounts.google.com/o/oauth2/token', [
181+
'form_params' => $params
182+
]);
183+
$accessToken = json_decode($accessTokenResponse->getBody(), true);
183184

184185
// Step 2. Retrieve profile information about the current user.
185-
$profileResponse = $client->get($peopleApiUrl, ['headers' => $headers]);
186-
187-
$profile = $profileResponse->json();
186+
$profileResponse = $client->request('GET', 'https://www.googleapis.com/plus/v1/people/me/openIdConnect', [
187+
'headers' => array('Authorization' => 'Bearer ' . $accessToken['access_token'])
188+
]);
189+
$profile = json_decode($profileResponse->getBody(), true);
188190

189191
// Step 3a. If user is already signed in then link accounts.
190192
if ($request->header('Authorization'))
@@ -230,8 +232,7 @@ public function google(Request $request)
230232
*/
231233
public function linkedin(Request $request)
232234
{
233-
$accessTokenUrl = 'https://www.linkedin.com/uas/oauth2/accessToken';
234-
$peopleApiUrl = 'https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address)';
235+
$client = new GuzzleHttp\Client();
235236

236237
$params = [
237238
'code' => $request->input('code'),
@@ -241,19 +242,20 @@ public function linkedin(Request $request)
241242
'grant_type' => 'authorization_code',
242243
];
243244

244-
$client = new GuzzleHttp\Client();
245-
246245
// Step 1. Exchange authorization code for access token.
247-
$accessTokenResponse = $client->post($accessTokenUrl, ['body' => $params]);
248-
249-
$apiParams = array(
250-
'oauth2_access_token' => $accessTokenResponse->json()['access_token'],
251-
'format' => 'json'
252-
);
246+
$accessTokenResponse = $client->request('POST', 'https://www.linkedin.com/uas/oauth2/accessToken', [
247+
'form_params' => $params
248+
]);
249+
$accessToken = json_decode($accessTokenResponse->getBody(), true);
253250

254251
// Step 2. Retrieve profile information about the current user.
255-
$peopleApiResponse = $client->get($peopleApiUrl, ['query' => $apiParams]);
256-
$profile = $peopleApiResponse->json();
252+
$profileResponse = $client->request('GET', 'https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address)', [
253+
'query' => [
254+
'oauth2_access_token' => $accessToken['access_token'],
255+
'format' => 'json'
256+
]
257+
]);
258+
$profile = json_decode($profileResponse->getBody(), true);
257259

258260
// Step 3a. If user is already signed in then link accounts.
259261
if ($request->header('Authorization'))
@@ -299,25 +301,30 @@ public function linkedin(Request $request)
299301
*/
300302
public function twitter(Request $request)
301303
{
302-
$requestTokenUrl = 'https://api.twitter.com/oauth/request_token';
303-
$accessTokenUrl = 'https://api.twitter.com/oauth/access_token';
304-
$profileUrl = 'https://api.twitter.com/1.1/users/show.json?screen_name=';
305-
306-
$client = new GuzzleHttp\Client();
304+
$stack = GuzzleHttp\HandlerStack::create();
307305

308306
// Part 1 of 2: Initial request from Satellizer.
309307
if (!$request->input('oauth_token') || !$request->input('oauth_verifier'))
310308
{
309+
$stack = GuzzleHttp\HandlerStack::create();
310+
311311
$requestTokenOauth = new Oauth1([
312312
'consumer_key' => Config::get('app.twitter_key'),
313313
'consumer_secret' => Config::get('app.twitter_secret'),
314-
'callback' => Config::get('app.twitter_callback')
314+
'callback' => $request->input('redirectUri'),
315+
'token' => '',
316+
'token_secret' => ''
315317
]);
318+
$stack->push($requestTokenOauth);
316319

317-
$client->getEmitter()->attach($requestTokenOauth);
320+
$client = new GuzzleHttp\Client([
321+
'handler' => $stack
322+
]);
318323

319324
// Step 1. Obtain request token for the authorization popup.
320-
$requestTokenResponse = $client->post($requestTokenUrl, ['auth' => 'oauth']);
325+
$requestTokenResponse = $client->request('POST', 'https://api.twitter.com/oauth/request_token', [
326+
'auth' => 'oauth'
327+
]);
321328

322329
$oauthToken = array();
323330
parse_str($requestTokenResponse->getBody(), $oauthToken);
@@ -333,28 +340,40 @@ public function twitter(Request $request)
333340
'consumer_key' => Config::get('app.twitter_key'),
334341
'consumer_secret' => Config::get('app.twitter_secret'),
335342
'token' => $request->input('oauth_token'),
336-
'verifier' => $request->input('oauth_verifier')
343+
'verifier' => $request->input('oauth_verifier'),
344+
'token_secret' => ''
337345
]);
346+
$stack->push($accessTokenOauth);
338347

339-
$client->getEmitter()->attach($accessTokenOauth);
348+
$client = new GuzzleHttp\Client([
349+
'handler' => $stack
350+
]);
340351

341352
// Step 3. Exchange oauth token and oauth verifier for access token.
342-
$accessTokenResponse = $client->post($accessTokenUrl, ['auth' => 'oauth'])->getBody();
353+
$accessTokenResponse = $client->request('POST', 'https://api.twitter.com/oauth/access_token', [
354+
'auth' => 'oauth'
355+
]);
343356

344357
$accessToken = array();
345-
parse_str($accessTokenResponse, $accessToken);
358+
parse_str($accessTokenResponse->getBody(), $accessToken);
346359

347360
$profileOauth = new Oauth1([
348361
'consumer_key' => Config::get('app.twitter_key'),
349362
'consumer_secret' => Config::get('app.twitter_secret'),
350-
'oauth_token' => $accessToken['oauth_token']
363+
'oauth_token' => $accessToken['oauth_token'],
364+
'token_secret' => ''
351365
]);
366+
$stack->push($profileOauth);
352367

353-
$client->getEmitter()->attach($profileOauth);
368+
$client = new GuzzleHttp\Client([
369+
'handler' => $stack
370+
]);
354371

355372
// Step 4. Retrieve profile information about the current user.
356-
$profile = $client->get($profileUrl . $accessToken['screen_name'], ['auth' => 'oauth'])->json();
357-
373+
$profileResponse = $client->request('GET', 'https://api.twitter.com/1.1/users/show.json?screen_name=' . $accessToken['screen_name'], [
374+
'auth' => 'oauth'
375+
]);
376+
$profile = json_decode($profileResponse->getBody(), true);
358377

359378
// Step 5a. Link user accounts.
360379
if ($request->header('Authorization'))
@@ -400,8 +419,7 @@ public function twitter(Request $request)
400419
*/
401420
public function foursquare(Request $request)
402421
{
403-
$accessTokenUrl = 'https://foursquare.com/oauth2/access_token';
404-
$userProfileUrl = 'https://api.foursquare.com/v2/users/self';
422+
$client = new GuzzleHttp\Client();
405423

406424
$params = [
407425
'code' => $request->input('code'),
@@ -411,21 +429,21 @@ public function foursquare(Request $request)
411429
'grant_type' => 'authorization_code',
412430
];
413431

414-
$client = new GuzzleHttp\Client();
415-
416432
// Step 1. Exchange authorization code for access token.
417-
$accessTokenResponse = $client->post($accessTokenUrl, ['body' => $params]);
418-
$accessToken = $accessTokenResponse->json()['access_token'];
419-
420-
$profileParams = [
421-
'v' => '20140806',
422-
'oauth_token' => $accessToken
423-
];
433+
$accessTokenResponse = $client->request('POST', 'https://foursquare.com/oauth2/access_token', [
434+
'form_params' => $params
435+
]);
436+
$accessToken = json_decode($accessTokenResponse->getBody(), true);
424437

425438
// Step 2. Retrieve profile information about the current user.
426-
$profileResponse = $client->get($userProfileUrl, ['query' => $profileParams]);
439+
$profileResponse = $client->request('GET', 'https://api.foursquare.com/v2/users/self', [
440+
'query' => [
441+
'v' => '20140806',
442+
'oauth_token' => $accessToken['access_token']
443+
]
444+
]);
427445

428-
$profile = $profileResponse->json()['response']['user'];
446+
$profile = json_decode($profileResponse->getBody(), true)['response']['user'];
429447

430448
// Step 3a. If user is already signed in then link accounts.
431449
if ($request->header('Authorization'))
@@ -470,7 +488,7 @@ public function foursquare(Request $request)
470488
*/
471489
public function instagram(Request $request)
472490
{
473-
$accessTokenUrl = 'https://api.instagram.com/oauth/access_token';
491+
$client = new GuzzleHttp\Client();
474492

475493
$params = [
476494
'code' => $request->input('code'),
@@ -480,13 +498,11 @@ public function instagram(Request $request)
480498
'grant_type' => 'authorization_code',
481499
];
482500

483-
$client = new GuzzleHttp\Client();
484-
485501
// Step 1. Exchange authorization code for access token.
486-
$accessTokenResponse = $client->post($accessTokenUrl, ['body' => $params]);
487-
$accessToken = $accessTokenResponse->json();
488-
489-
502+
$accessTokenResponse = $client->request('POST', 'https://api.instagram.com/oauth/access_token', [
503+
'body' => $params
504+
]);
505+
$accessToken = json_decode($accessTokenResponse->getBody(), true);
490506

491507
// Step 2a. If user is already signed in then link accounts.
492508
if ($request->header('Authorization'))
@@ -531,8 +547,7 @@ public function instagram(Request $request)
531547
*/
532548
public function github(Request $request)
533549
{
534-
$accessTokenUrl = 'https://github.com/login/oauth/access_token';
535-
$userApiUrl = 'https://api.github.com/user';
550+
$client = new GuzzleHttp\Client();
536551

537552
$params = [
538553
'code' => $request->input('code'),
@@ -541,22 +556,20 @@ public function github(Request $request)
541556
'redirect_uri' => $request->input('redirectUri')
542557
];
543558

544-
$client = new GuzzleHttp\Client();
545-
546559
// Step 1. Exchange authorization code for access token.
547-
$accessTokenResponse = $client->get($accessTokenUrl, ['query' => $params]);
560+
$accessTokenResponse = $client->request('GET', 'https://github.com/login/oauth/access_token', [
561+
'query' => $params
562+
]);
548563

549564
$accessToken = array();
550565
parse_str($accessTokenResponse->getBody(), $accessToken);
551566

552-
$headers = array('User-Agent' => 'Satellizer');
553-
554567
// Step 2. Retrieve profile information about the current user.
555-
$userApiResponse = $client->get($userApiUrl, [
556-
'headers' => $headers,
568+
$profileResponse = $client->request('GET', 'https://api.github.com/user', [
569+
'headers' => ['User-Agent' => 'Satellizer'],
557570
'query' => $accessToken
558571
]);
559-
$profile = $userApiResponse->json();
572+
$profile = json_decode($profileResponse->getBody(), true);
560573

561574
// Step 3a. If user is already signed in then link accounts.
562575
if ($request->header('Authorization'))
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?php namespace App\Http\Controllers;
22

3-
use Illuminate\Foundation\Bus\DispatchesCommands;
3+
use Illuminate\Foundation\Bus\DispatchesJobs;
44
use Illuminate\Routing\Controller as BaseController;
55
use Illuminate\Foundation\Validation\ValidatesRequests;
66

77
abstract class Controller extends BaseController {
88

9-
use DispatchesCommands, ValidatesRequests;
9+
use DispatchesJobs, ValidatesRequests;
1010

1111
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace App\Providers;
4+
5+
use Illuminate\Contracts\Auth\Access\Gate as GateContract;
6+
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
7+
8+
class AuthServiceProvider extends ServiceProvider
9+
{
10+
/**
11+
* The policy mappings for the application.
12+
*
13+
* @var array
14+
*/
15+
protected $policies = [
16+
'App\Model' => 'App\Policies\ModelPolicy',
17+
];
18+
19+
/**
20+
* Register any application authentication / authorization services.
21+
*
22+
* @param \Illuminate\Contracts\Auth\Access\Gate $gate
23+
* @return void
24+
*/
25+
public function boot(GateContract $gate)
26+
{
27+
$this->registerPolicies($gate);
28+
29+
//
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*
2+
!.gitignore

0 commit comments

Comments
 (0)