From 5e2bf7c3e4ecbad479f61f68decb286292acd3de Mon Sep 17 00:00:00 2001
From: BlackSheep <blsheepmail@gmail.com>
Date: Mon, 29 Jan 2018 09:28:56 +0100
Subject: [PATCH 1/5] Add twitch socialite auth provider

---
 .env.example                           |  3 ++
 app/Providers/EventServiceProvider.php |  1 +
 app/Services/SocialAuthService.php     |  2 +-
 composer.json                          |  3 +-
 config/services.php                    |  7 +++
 resources/assets/icons/twitch.svg      | 59 ++++++++++++++++++++++++++
 6 files changed, 73 insertions(+), 2 deletions(-)
 create mode 100644 resources/assets/icons/twitch.svg

diff --git a/.env.example b/.env.example
index ddb32c0bc..9901189b4 100644
--- a/.env.example
+++ b/.env.example
@@ -49,6 +49,9 @@ GOOGLE_APP_SECRET=false
 OKTA_BASE_URL=false
 OKTA_KEY=false
 OKTA_SECRET=false
+TWITCH_KEY=false
+TWITCH_SECRET=false
+TWITCH_REDIRECT_URI=false  
 
 # External services such as Gravatar
 DISABLE_EXTERNAL_SERVICES=false
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
index 05f9c57c1..5a690069c 100644
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -18,6 +18,7 @@ class EventServiceProvider extends ServiceProvider
             'SocialiteProviders\Slack\SlackExtendSocialite@handle',
             'SocialiteProviders\Azure\AzureExtendSocialite@handle',
             'SocialiteProviders\Okta\OktaExtendSocialite@handle',
+            'SocialiteProviders\Twitch\TwitchExtendSocialite@handle',
         ],
     ];
 
diff --git a/app/Services/SocialAuthService.php b/app/Services/SocialAuthService.php
index 30f7eed0e..6eb5202ae 100644
--- a/app/Services/SocialAuthService.php
+++ b/app/Services/SocialAuthService.php
@@ -16,7 +16,7 @@ class SocialAuthService
     protected $socialite;
     protected $socialAccount;
 
-    protected $validSocialDrivers = ['google', 'github', 'facebook', 'slack', 'twitter', 'azure', 'okta'];
+    protected $validSocialDrivers = ['google', 'github', 'facebook', 'slack', 'twitter', 'azure', 'okta', 'twitch'];
 
     /**
      * SocialAuthService constructor.
diff --git a/composer.json b/composer.json
index 2750b7cb3..54eb3f26c 100644
--- a/composer.json
+++ b/composer.json
@@ -18,7 +18,8 @@
         "barryvdh/laravel-snappy": "^0.4.0",
         "socialiteproviders/slack": "^3.0",
         "socialiteproviders/microsoft-azure": "^3.0",
-        "socialiteproviders/okta": "^1.0"
+        "socialiteproviders/okta": "^1.0",
+        "socialiteproviders/twitch": "^3.0"
     },
     "require-dev": {
         "filp/whoops": "~2.0",
diff --git a/config/services.php b/config/services.php
index 18649c093..a630e8297 100644
--- a/config/services.php
+++ b/config/services.php
@@ -92,6 +92,13 @@ return [
         'redirect' => env('APP_URL') . '/login/service/okta/callback', 
         'base_url' => env('OKTA_BASE_URL'), 
         'name'          => 'Okta',
+    ],
+
+    'twitch' => [
+        'client_id' => env('TWITCH_KEY'),
+        'client_secret' => env('TWITCH_SECRET'),
+        'redirect' => env('TWITCH_REDIRECT_URI'),
+        'name'          => 'Twitch',
     ], 
 
     'ldap' => [
diff --git a/resources/assets/icons/twitch.svg b/resources/assets/icons/twitch.svg
new file mode 100644
index 000000000..0293ed9a1
--- /dev/null
+++ b/resources/assets/icons/twitch.svg
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2985"
+   version="1.1"
+   inkscape:version="0.48.2 r9819"
+   width="1000"
+   height="1139.412"
+   xml:space="preserve"
+   sodipodi:docname="Twitch logo black.svg"><metadata
+     id="metadata2991"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs2989" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1234"
+     inkscape:window-height="1038"
+     id="namedview2987"
+     showgrid="false"
+     fit-margin-left="0.5"
+     fit-margin-bottom="0.5"
+     fit-margin-top="0.5"
+     fit-margin-right="0.5"
+     inkscape:zoom="0.33712566"
+     inkscape:cx="344.76544"
+     inkscape:cy="201.71567"
+     inkscape:window-x="675"
+     inkscape:window-y="11"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="g2993" /><g
+     id="g2993"
+     inkscape:groupmode="layer"
+     inkscape:label="Twitch_IntegrationGuidelines"
+     transform="matrix(1.25,0,0,-1.25,-779.56837,2089.8162)"><g
+       id="g2995"
+       transform="matrix(9.5324427,0,0,9.5324427,1348.9493,1188.2344)"><path
+         d="m 0,0 -13.652,-13.651 -21.445,0 -11.699,-11.697 0,11.697 -17.548,0 0,56.544 L 0,42.893 0,0 z m -72.146,50.692 -3.899,-15.599 0,-70.19 17.55,0 0,-9.751 9.746,0 9.752,9.751 15.596,0 31.196,31.192 0,54.597 -79.941,0 z"
+         style="fill:#6441a5;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path2997"
+         inkscape:connector-curvature="0" /></g><path
+       d="m 940.03601,1225.3756 74.34349,0 0,223.0687 -74.34349,0 0,-223.0687 z m 204.43279,0 74.3435,0 0,223.0687 -74.3435,0 0,-223.0687 z"
+       style="fill:#6441a5;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path2999"
+       inkscape:connector-curvature="0" /></g></svg>
\ No newline at end of file

From 1651c807cbb289fdd19f09ef46bdc7949c21c2d6 Mon Sep 17 00:00:00 2001
From: BlackSheep <blsheepmail@gmail.com>
Date: Tue, 30 Jan 2018 09:59:56 +0100
Subject: [PATCH 2/5] Update...

---
 composer.lock | 187 ++++++++++++++++++++++++++++++--------------------
 1 file changed, 112 insertions(+), 75 deletions(-)

diff --git a/composer.lock b/composer.lock
index 9db080bab..bf9bc489f 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "content-hash": "8ad5cb7acc1115a77404d1be899984ac",
+    "content-hash": "96d5f23f0652b8093d7939e8c29bdf18",
     "packages": [
         {
             "name": "aws/aws-sdk-php",
-            "version": "3.45.3",
+            "version": "3.52.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/aws/aws-sdk-php.git",
-                "reference": "d0abb0b1194fa64973b135191f56df991bc5787c"
+                "reference": "69ba4e07288a532fe7635f7cdd73cffa6509f538"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d0abb0b1194fa64973b135191f56df991bc5787c",
-                "reference": "d0abb0b1194fa64973b135191f56df991bc5787c",
+                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/69ba4e07288a532fe7635f7cdd73cffa6509f538",
+                "reference": "69ba4e07288a532fe7635f7cdd73cffa6509f538",
                 "shasum": ""
             },
             "require": {
@@ -84,7 +84,7 @@
                 "s3",
                 "sdk"
             ],
-            "time": "2017-12-08T21:36:50+00:00"
+            "time": "2018-01-26T22:17:57+00:00"
         },
         {
             "name": "barryvdh/laravel-dompdf",
@@ -898,16 +898,16 @@
         },
         {
             "name": "knplabs/knp-snappy",
-            "version": "v1.0.3",
+            "version": "v1.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/KnpLabs/snappy.git",
-                "reference": "68590ef3aa94425b1c0019cc28ce471729f51fcb"
+                "reference": "144c4ecd1ccaeda936bf832b93079efc490e6850"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/KnpLabs/snappy/zipball/68590ef3aa94425b1c0019cc28ce471729f51fcb",
-                "reference": "68590ef3aa94425b1c0019cc28ce471729f51fcb",
+                "url": "https://api.github.com/repos/KnpLabs/snappy/zipball/144c4ecd1ccaeda936bf832b93079efc490e6850",
+                "reference": "144c4ecd1ccaeda936bf832b93079efc490e6850",
                 "shasum": ""
             },
             "require": {
@@ -960,20 +960,20 @@
                 "thumbnail",
                 "wkhtmltopdf"
             ],
-            "time": "2017-12-03T23:18:18+00:00"
+            "time": "2018-01-22T19:40:51+00:00"
         },
         {
             "name": "laravel/framework",
-            "version": "v5.5.24",
+            "version": "v5.5.32",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laravel/framework.git",
-                "reference": "06135405bb1f736dac5e9529ed1541fc446c9c0f"
+                "reference": "254e4c3e133f5bc8d6068cdf28ea062abc10adf2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laravel/framework/zipball/06135405bb1f736dac5e9529ed1541fc446c9c0f",
-                "reference": "06135405bb1f736dac5e9529ed1541fc446c9c0f",
+                "url": "https://api.github.com/repos/laravel/framework/zipball/254e4c3e133f5bc8d6068cdf28ea062abc10adf2",
+                "reference": "254e4c3e133f5bc8d6068cdf28ea062abc10adf2",
                 "shasum": ""
             },
             "require": {
@@ -1053,6 +1053,7 @@
                 "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).",
                 "laravel/tinker": "Required to use the tinker console command (~1.0).",
                 "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).",
+                "league/flysystem-cached-adapter": "Required to use Flysystem caching (~1.0).",
                 "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).",
                 "nexmo/client": "Required to use the Nexmo transport (~1.0).",
                 "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).",
@@ -1093,7 +1094,7 @@
                 "framework",
                 "laravel"
             ],
-            "time": "2017-12-07T01:28:21+00:00"
+            "time": "2018-01-18T13:27:23+00:00"
         },
         {
             "name": "laravel/socialite",
@@ -1159,16 +1160,16 @@
         },
         {
             "name": "league/flysystem",
-            "version": "1.0.41",
+            "version": "1.0.42",
             "source": {
                 "type": "git",
                 "url": "https://github.com/thephpleague/flysystem.git",
-                "reference": "f400aa98912c561ba625ea4065031b7a41e5a155"
+                "reference": "09eabc54e199950041aef258a85847676496fe8e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f400aa98912c561ba625ea4065031b7a41e5a155",
-                "reference": "f400aa98912c561ba625ea4065031b7a41e5a155",
+                "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/09eabc54e199950041aef258a85847676496fe8e",
+                "reference": "09eabc54e199950041aef258a85847676496fe8e",
                 "shasum": ""
             },
             "require": {
@@ -1179,12 +1180,13 @@
             },
             "require-dev": {
                 "ext-fileinfo": "*",
-                "mockery/mockery": "~0.9",
-                "phpspec/phpspec": "^2.2",
-                "phpunit/phpunit": "~4.8"
+                "phpspec/phpspec": "^3.4",
+                "phpunit/phpunit": "^5.7"
             },
             "suggest": {
                 "ext-fileinfo": "Required for MimeType",
+                "ext-ftp": "Allows you to use FTP server storage",
+                "ext-openssl": "Allows you to use FTPS server storage",
                 "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
                 "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
                 "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
@@ -1238,7 +1240,7 @@
                 "sftp",
                 "storage"
             ],
-            "time": "2017-08-06T17:41:04+00:00"
+            "time": "2018-01-27T16:03:56+00:00"
         },
         {
             "name": "league/flysystem-aws-s3-v3",
@@ -1951,16 +1953,16 @@
         },
         {
             "name": "ramsey/uuid",
-            "version": "3.7.1",
+            "version": "3.7.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/ramsey/uuid.git",
-                "reference": "45cffe822057a09e05f7bd09ec5fb88eeecd2334"
+                "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/ramsey/uuid/zipball/45cffe822057a09e05f7bd09ec5fb88eeecd2334",
-                "reference": "45cffe822057a09e05f7bd09ec5fb88eeecd2334",
+                "url": "https://api.github.com/repos/ramsey/uuid/zipball/44abcdad877d9a46685a3a4d221e3b2c4b87cb76",
+                "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76",
                 "shasum": ""
             },
             "require": {
@@ -1971,17 +1973,15 @@
                 "rhumsaa/uuid": "self.version"
             },
             "require-dev": {
-                "apigen/apigen": "^4.1",
-                "codeception/aspect-mock": "^1.0 | ^2.0",
+                "codeception/aspect-mock": "^1.0 | ~2.0.0",
                 "doctrine/annotations": "~1.2.0",
                 "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ^2.1",
                 "ircmaxell/random-lib": "^1.1",
                 "jakub-onderka/php-parallel-lint": "^0.9.0",
-                "mockery/mockery": "^0.9.4",
+                "mockery/mockery": "^0.9.9",
                 "moontoast/math": "^1.1",
                 "php-mock/php-mock-phpunit": "^0.3|^1.1",
-                "phpunit/phpunit": "^4.7|>=5.0 <5.4",
-                "satooshi/php-coveralls": "^0.6.1",
+                "phpunit/phpunit": "^4.7|^5.0",
                 "squizlabs/php_codesniffer": "^2.3"
             },
             "suggest": {
@@ -2029,7 +2029,7 @@
                 "identifier",
                 "uuid"
             ],
-            "time": "2017-09-22T20:46:04+00:00"
+            "time": "2018-01-20T00:28:24+00:00"
         },
         {
             "name": "sabberworm/php-css-parser",
@@ -2077,16 +2077,16 @@
         },
         {
             "name": "socialiteproviders/manager",
-            "version": "v3.3.0",
+            "version": "v3.3.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/SocialiteProviders/Manager.git",
-                "reference": "ac108bce073135a55dfebf28ceaf1459669348e8"
+                "reference": "1de3f3d874392da6f1a4c0bf30d843e9cd903ea7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/ac108bce073135a55dfebf28ceaf1459669348e8",
-                "reference": "ac108bce073135a55dfebf28ceaf1459669348e8",
+                "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/1de3f3d874392da6f1a4c0bf30d843e9cd903ea7",
+                "reference": "1de3f3d874392da6f1a4c0bf30d843e9cd903ea7",
                 "shasum": ""
             },
             "require": {
@@ -2122,7 +2122,7 @@
                 }
             ],
             "description": "Easily add new or override built-in providers in Laravel Socialite.",
-            "time": "2017-09-21T07:21:55+00:00"
+            "time": "2017-11-20T08:42:57+00:00"
         },
         {
             "name": "socialiteproviders/microsoft-azure",
@@ -2235,6 +2235,43 @@
             "description": "Slack OAuth2 Provider for Laravel Socialite",
             "time": "2017-04-10T05:10:48+00:00"
         },
+        {
+            "name": "socialiteproviders/twitch",
+            "version": "v3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/SocialiteProviders/Twitch.git",
+                "reference": "a7ad148c0b42d0c607d8a034b6e47faf5fc85e93"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/SocialiteProviders/Twitch/zipball/a7ad148c0b42d0c607d8a034b6e47faf5fc85e93",
+                "reference": "a7ad148c0b42d0c607d8a034b6e47faf5fc85e93",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0",
+                "socialiteproviders/manager": "~3.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "SocialiteProviders\\Twitch\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Brian Faust",
+                    "email": "hello@brianfaust.de"
+                }
+            ],
+            "description": "Twitch OAuth2 Provider for Laravel Socialite",
+            "time": "2017-01-25T09:48:29+00:00"
+        },
         {
             "name": "swiftmailer/swiftmailer",
             "version": "v6.0.2",
@@ -3040,29 +3077,29 @@
         },
         {
             "name": "tijsverkoyen/css-to-inline-styles",
-            "version": "2.2.0",
+            "version": "2.2.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
-                "reference": "ab03919dfd85a74ae0372f8baf9f3c7d5c03b04b"
+                "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/ab03919dfd85a74ae0372f8baf9f3c7d5c03b04b",
-                "reference": "ab03919dfd85a74ae0372f8baf9f3c7d5c03b04b",
+                "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
+                "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5 || ^7",
-                "symfony/css-selector": "^2.7|~3.0"
+                "php": "^5.5 || ^7.0",
+                "symfony/css-selector": "^2.7 || ^3.0 || ^4.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.8|5.1.*"
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.0.x-dev"
+                    "dev-master": "2.2.x-dev"
                 }
             },
             "autoload": {
@@ -3083,7 +3120,7 @@
             ],
             "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
             "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
-            "time": "2016-09-20T12:50:39+00:00"
+            "time": "2017-11-27T11:13:29+00:00"
         },
         {
             "name": "vlucas/phpdotenv",
@@ -3917,16 +3954,16 @@
         },
         {
             "name": "phpdocumentor/reflection-docblock",
-            "version": "4.2.0",
+            "version": "4.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "66465776cfc249844bde6d117abff1d22e06c2da"
+                "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/66465776cfc249844bde6d117abff1d22e06c2da",
-                "reference": "66465776cfc249844bde6d117abff1d22e06c2da",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
+                "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
                 "shasum": ""
             },
             "require": {
@@ -3964,7 +4001,7 @@
                 }
             ],
             "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
-            "time": "2017-11-27T17:38:31+00:00"
+            "time": "2017-11-30T07:14:17+00:00"
         },
         {
             "name": "phpdocumentor/type-resolver",
@@ -4327,16 +4364,16 @@
         },
         {
             "name": "phpunit/phpunit",
-            "version": "6.5.3",
+            "version": "6.5.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "882e886cc928a0abd3c61282b2a64026237d14a4"
+                "reference": "83d27937a310f2984fd575686138597147bdc7df"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/882e886cc928a0abd3c61282b2a64026237d14a4",
-                "reference": "882e886cc928a0abd3c61282b2a64026237d14a4",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/83d27937a310f2984fd575686138597147bdc7df",
+                "reference": "83d27937a310f2984fd575686138597147bdc7df",
                 "shasum": ""
             },
             "require": {
@@ -4354,7 +4391,7 @@
                 "phpunit/php-file-iterator": "^1.4.3",
                 "phpunit/php-text-template": "^1.2.1",
                 "phpunit/php-timer": "^1.0.9",
-                "phpunit/phpunit-mock-objects": "^5.0.4",
+                "phpunit/phpunit-mock-objects": "^5.0.5",
                 "sebastian/comparator": "^2.1",
                 "sebastian/diff": "^2.0",
                 "sebastian/environment": "^3.1",
@@ -4407,27 +4444,27 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2017-12-06T09:42:03+00:00"
+            "time": "2017-12-17T06:31:19+00:00"
         },
         {
             "name": "phpunit/phpunit-mock-objects",
-            "version": "5.0.4",
+            "version": "5.0.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-                "reference": "16b50f4167e5e85e81ca8a3dd105d0a5fd32009a"
+                "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/16b50f4167e5e85e81ca8a3dd105d0a5fd32009a",
-                "reference": "16b50f4167e5e85e81ca8a3dd105d0a5fd32009a",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf",
+                "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf",
                 "shasum": ""
             },
             "require": {
                 "doctrine/instantiator": "^1.0.5",
                 "php": "^7.0",
                 "phpunit/php-text-template": "^1.2.1",
-                "sebastian/exporter": "^3.0"
+                "sebastian/exporter": "^3.1"
             },
             "conflict": {
                 "phpunit/phpunit": "<6.0"
@@ -4466,7 +4503,7 @@
                 "mock",
                 "xunit"
             ],
-            "time": "2017-12-02T05:31:19+00:00"
+            "time": "2018-01-06T05:45:45+00:00"
         },
         {
             "name": "sebastian/code-unit-reverse-lookup",
@@ -4515,16 +4552,16 @@
         },
         {
             "name": "sebastian/comparator",
-            "version": "2.1.0",
+            "version": "2.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "1174d9018191e93cb9d719edec01257fc05f8158"
+                "reference": "11c07feade1d65453e06df3b3b90171d6d982087"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1174d9018191e93cb9d719edec01257fc05f8158",
-                "reference": "1174d9018191e93cb9d719edec01257fc05f8158",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/11c07feade1d65453e06df3b3b90171d6d982087",
+                "reference": "11c07feade1d65453e06df3b3b90171d6d982087",
                 "shasum": ""
             },
             "require": {
@@ -4575,7 +4612,7 @@
                 "compare",
                 "equality"
             ],
-            "time": "2017-11-03T07:16:52+00:00"
+            "time": "2018-01-12T06:34:42+00:00"
         },
         {
             "name": "sebastian/diff",
@@ -5232,16 +5269,16 @@
         },
         {
             "name": "webmozart/assert",
-            "version": "1.2.0",
+            "version": "1.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f"
+                "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f",
-                "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
+                "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
                 "shasum": ""
             },
             "require": {
@@ -5278,7 +5315,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2016-11-23T20:04:58+00:00"
+            "time": "2018-01-29T19:49:41+00:00"
         }
     ],
     "aliases": [],

From f51e0e9eb95c02a7d7d0b6bf90439629ac968a7d Mon Sep 17 00:00:00 2001
From: BlackSheep <moutonnoireu@users.noreply.github.com>
Date: Thu, 1 Feb 2018 08:51:35 +0100
Subject: [PATCH 3/5] Update services.php

---
 config/services.php | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/config/services.php b/config/services.php
index a630e8297..81f2af360 100644
--- a/config/services.php
+++ b/config/services.php
@@ -95,11 +95,11 @@ return [
     ],
 
     'twitch' => [
-        'client_id' => env('TWITCH_KEY'),
-        'client_secret' => env('TWITCH_SECRET'),
-        'redirect' => env('TWITCH_REDIRECT_URI'),
+        'client_id' => env('TWITCH_APP_ID'),
+        'client_secret' => env('TWITCH_APP_SECRET'),
+        'redirect' => env('APP_URL') . '/login/service/twitch/callback',
         'name'          => 'Twitch',
-    ], 
+    ],
 
     'ldap' => [
         'server' => env('LDAP_SERVER', false),

From 6f7cfe7206511953aee0a3d060ebc01241d35b0d Mon Sep 17 00:00:00 2001
From: BlackSheep <moutonnoireu@users.noreply.github.com>
Date: Thu, 1 Feb 2018 08:53:08 +0100
Subject: [PATCH 4/5] Update .env.example

---
 .env.example | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/.env.example b/.env.example
index 9901189b4..d06ef675b 100644
--- a/.env.example
+++ b/.env.example
@@ -49,9 +49,8 @@ GOOGLE_APP_SECRET=false
 OKTA_BASE_URL=false
 OKTA_KEY=false
 OKTA_SECRET=false
-TWITCH_KEY=false
-TWITCH_SECRET=false
-TWITCH_REDIRECT_URI=false  
+TWITCH_APP_ID=false
+TWITCH_APP_SECRET=false
 
 # External services such as Gravatar
 DISABLE_EXTERNAL_SERVICES=false
@@ -70,4 +69,4 @@ MAIL_HOST=localhost
 MAIL_PORT=1025
 MAIL_USERNAME=null
 MAIL_PASSWORD=null
-MAIL_ENCRYPTION=null
\ No newline at end of file
+MAIL_ENCRYPTION=null

From addfb9600277f0ce7d9a4159f3b77d9daf4ea36f Mon Sep 17 00:00:00 2001
From: BlackSheep <blsheepmail@gmail.com>
Date: Thu, 1 Feb 2018 09:55:37 +0100
Subject: [PATCH 5/5] reduced icon size

---
 package.json                      |  2 +-
 resources/assets/icons/twitch.svg | 90 +++++++++++--------------------
 2 files changed, 32 insertions(+), 60 deletions(-)

diff --git a/package.json b/package.json
index 23b01cf6e..42e892333 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,7 @@
     "babelify": "^7.3.0",
     "browserify": "^14.3.0",
     "envify": "^4.0.0",
-    "gulp": "3.9.1",
+    "gulp": "^3.9.1",
     "gulp-autoprefixer": "3.1.1",
     "gulp-clean-css": "^3.0.4",
     "gulp-livereload": "^3.8.1",
diff --git a/resources/assets/icons/twitch.svg b/resources/assets/icons/twitch.svg
index 0293ed9a1..2281f2223 100644
--- a/resources/assets/icons/twitch.svg
+++ b/resources/assets/icons/twitch.svg
@@ -1,59 +1,31 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   id="svg2985"
-   version="1.1"
-   inkscape:version="0.48.2 r9819"
-   width="1000"
-   height="1139.412"
-   xml:space="preserve"
-   sodipodi:docname="Twitch logo black.svg"><metadata
-     id="metadata2991"><rdf:RDF><cc:Work
-         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
-     id="defs2989" /><sodipodi:namedview
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1"
-     objecttolerance="10"
-     gridtolerance="10"
-     guidetolerance="10"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:window-width="1234"
-     inkscape:window-height="1038"
-     id="namedview2987"
-     showgrid="false"
-     fit-margin-left="0.5"
-     fit-margin-bottom="0.5"
-     fit-margin-top="0.5"
-     fit-margin-right="0.5"
-     inkscape:zoom="0.33712566"
-     inkscape:cx="344.76544"
-     inkscape:cy="201.71567"
-     inkscape:window-x="675"
-     inkscape:window-y="11"
-     inkscape:window-maximized="0"
-     inkscape:current-layer="g2993" /><g
-     id="g2993"
-     inkscape:groupmode="layer"
-     inkscape:label="Twitch_IntegrationGuidelines"
-     transform="matrix(1.25,0,0,-1.25,-779.56837,2089.8162)"><g
-       id="g2995"
-       transform="matrix(9.5324427,0,0,9.5324427,1348.9493,1188.2344)"><path
-         d="m 0,0 -13.652,-13.651 -21.445,0 -11.699,-11.697 0,11.697 -17.548,0 0,56.544 L 0,42.893 0,0 z m -72.146,50.692 -3.899,-15.599 0,-70.19 17.55,0 0,-9.751 9.746,0 9.752,9.751 15.596,0 31.196,31.192 0,54.597 -79.941,0 z"
-         style="fill:#6441a5;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         id="path2997"
-         inkscape:connector-curvature="0" /></g><path
-       d="m 940.03601,1225.3756 74.34349,0 0,223.0687 -74.34349,0 0,-223.0687 z m 204.43279,0 74.3435,0 0,223.0687 -74.3435,0 0,-223.0687 z"
-       style="fill:#6441a5;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       id="path2999"
-       inkscape:connector-curvature="0" /></g></svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="267" height="267" viewBox="0 0 267 267">
+  <metadata><?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
+   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <rdf:Description rdf:about=""/>
+   </rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                           
+<?xpacket end="w"?></metadata>
+<image id="Calque_0" data-name="Calque 0" width="267" height="267" xlink:href="data:img/png;base64,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"/>
+</svg>