Commit a00f1f42a7fbc5eb18e6456284975691fe189317

Authored by Yarik
1 parent 1f6e9673

Social auth + view history

backend/config/main.php
... ... @@ -35,17 +35,21 @@
35 35 'variant-option-complementary' => 'artbox\catalog\controllers\VariantOptionComplController',
36 36 'variant-option-exclusion' => 'artbox\catalog\controllers\VariantOptionExclController',
37 37 'product-option-complementary' => 'artbox\catalog\controllers\ProductOptionComplController',
38   - 'product-option-exclusion' => 'artbox\catalog\controllers\ProductOptionExclController',
39   - 'import' => 'artbox\catalog\controllers\ImportController',
40   - 'blog-article' => 'artbox\weblog\controllers\ArticleController',
41   - 'blog-category' => 'artbox\weblog\controllers\CategoryController',
42   - 'blog-tag' => 'artbox\weblog\controllers\TagController',
43   - 'order' => 'artbox\order\controllers\OrderController',
44   - 'order-product' => 'artbox\order\controllers\OrderProductController',
45   - 'label' => 'artbox\order\controllers\LabelController',
46   - 'delivery' => 'artbox\order\controllers\DeliveryController',
47   - 'payment' => 'artbox\order\controllers\PaymentController',
48   - 'sitemap' => 'artbox\core\controllers\SitemapController',
  38 + 'product-option-exclusion' => 'artbox\catalog\controllers\ProductOptionExclController',
  39 + 'import' => 'artbox\catalog\controllers\ImportController',
  40 + 'blog-article' => 'artbox\weblog\controllers\ArticleController',
  41 + 'blog-category' => 'artbox\weblog\controllers\CategoryController',
  42 + 'blog-tag' => 'artbox\weblog\controllers\TagController',
  43 + 'order' => 'artbox\order\controllers\OrderController',
  44 + 'order-product' => 'artbox\order\controllers\OrderProductController',
  45 + 'label' => 'artbox\order\controllers\LabelController',
  46 + 'delivery' => 'artbox\order\controllers\DeliveryController',
  47 + 'payment' => 'artbox\order\controllers\PaymentController',
  48 + 'sitemap' => 'artbox\core\controllers\SitemapController',
  49 + 'comment' => [
  50 + 'class' => 'artbox\webcomment\controllers\ManageController',
  51 + 'viewPath' => '@artbox/webcomment/views/manage',
  52 + ],
49 53 ],
50 54 'components' => [
51 55 'assetManager' => [
... ...
common/config/main.php
... ... @@ -52,6 +52,10 @@
52 52 'class' => 'yii\i18n\PhpMessageSource',
53 53 'basePath' => '@artbox/webcomment/messages',
54 54 ],
  55 + 'eauth' => [
  56 + 'class' => 'yii\i18n\PhpMessageSource',
  57 + 'basePath' => '@eauth/messages',
  58 + ],
55 59 ],
56 60 ],
57 61 'filedb' => [
... ...
composer.json
... ... @@ -35,7 +35,8 @@
35 35 "bower-asset/amcharts": "@dev",
36 36 "bower-asset/pnotify": "@dev",
37 37 "kartik-v/yii2-widget-colorinput": "*",
38   - "kartik-v/yii2-widget-datepicker": "@dev"
  38 + "kartik-v/yii2-widget-datepicker": "@dev",
  39 + "nodge/yii2-eauth": "~2.0"
39 40 },
40 41 "require-dev": {
41 42 "yiisoft/yii2-debug": "~2.0.0",
... ...
composer.lock
... ... @@ -4,7 +4,7 @@
4 4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 5 "This file is @generated automatically"
6 6 ],
7   - "content-hash": "5df5513d6efdd9ab201fd9f3e65ba409",
  7 + "content-hash": "f43dbc89b0b20b177ad04a1c8c260992",
8 8 "packages": [
9 9 {
10 10 "name": "2amigos/yii2-tinymce-widget",
... ... @@ -575,16 +575,16 @@
575 575 },
576 576 {
577 577 "name": "ezyang/htmlpurifier",
578   - "version": "v4.9.2",
  578 + "version": "v4.9.3",
579 579 "source": {
580 580 "type": "git",
581 581 "url": "https://github.com/ezyang/htmlpurifier.git",
582   - "reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4"
  582 + "reference": "95e1bae3182efc0f3422896a3236e991049dac69"
583 583 },
584 584 "dist": {
585 585 "type": "zip",
586   - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4",
587   - "reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4",
  586 + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/95e1bae3182efc0f3422896a3236e991049dac69",
  587 + "reference": "95e1bae3182efc0f3422896a3236e991049dac69",
588 588 "shasum": ""
589 589 },
590 590 "require": {
... ... @@ -618,7 +618,7 @@
618 618 "keywords": [
619 619 "html"
620 620 ],
621   - "time": "2017-03-13T06:30:53+00:00"
  621 + "time": "2017-06-03T02:28:16+00:00"
622 622 },
623 623 {
624 624 "name": "firebase/php-jwt",
... ... @@ -1545,6 +1545,68 @@
1545 1545 "time": "2017-04-12 09:00:24"
1546 1546 },
1547 1547 {
  1548 + "name": "lusitanian/oauth",
  1549 + "version": "v0.3.6",
  1550 + "source": {
  1551 + "type": "git",
  1552 + "url": "https://github.com/Lusitanian/PHPoAuthLib.git",
  1553 + "reference": "4ce8c488971410233eb3b1e6d9ac4e81debb41d5"
  1554 + },
  1555 + "dist": {
  1556 + "type": "zip",
  1557 + "url": "https://api.github.com/repos/Lusitanian/PHPoAuthLib/zipball/4ce8c488971410233eb3b1e6d9ac4e81debb41d5",
  1558 + "reference": "4ce8c488971410233eb3b1e6d9ac4e81debb41d5",
  1559 + "shasum": ""
  1560 + },
  1561 + "require": {
  1562 + "php": ">=5.3.0"
  1563 + },
  1564 + "require-dev": {
  1565 + "phpunit/phpunit": "3.7.*",
  1566 + "predis/predis": "0.8.*@dev",
  1567 + "symfony/http-foundation": "~2.1"
  1568 + },
  1569 + "suggest": {
  1570 + "ext-openssl": "Allows for usage of secure connections with the stream-based HTTP client.",
  1571 + "predis/predis": "Allows using the Redis storage backend.",
  1572 + "symfony/http-foundation": "Allows using the Symfony Session storage backend."
  1573 + },
  1574 + "type": "library",
  1575 + "extra": {
  1576 + "branch-alias": {
  1577 + "dev-master": "0.1-dev"
  1578 + }
  1579 + },
  1580 + "autoload": {
  1581 + "psr-0": {
  1582 + "OAuth": "src",
  1583 + "OAuth\\Unit": "tests"
  1584 + }
  1585 + },
  1586 + "notification-url": "https://packagist.org/downloads/",
  1587 + "license": [
  1588 + "MIT"
  1589 + ],
  1590 + "authors": [
  1591 + {
  1592 + "name": "David Desberg",
  1593 + "email": "david@daviddesberg.com"
  1594 + },
  1595 + {
  1596 + "name": "Pieter Hordijk",
  1597 + "email": "info@pieterhordijk.com"
  1598 + }
  1599 + ],
  1600 + "description": "PHP 5.3+ oAuth 1/2 Library",
  1601 + "keywords": [
  1602 + "Authentication",
  1603 + "authorization",
  1604 + "oauth",
  1605 + "security"
  1606 + ],
  1607 + "time": "2015-09-09T06:43:02+00:00"
  1608 + },
  1609 + {
1548 1610 "name": "monolog/monolog",
1549 1611 "version": "1.22.1",
1550 1612 "source": {
... ... @@ -1718,6 +1780,105 @@
1718 1780 "time": "2016-11-29T18:17:37+00:00"
1719 1781 },
1720 1782 {
  1783 + "name": "nodge/lightopenid",
  1784 + "version": "1.1.2",
  1785 + "source": {
  1786 + "type": "git",
  1787 + "url": "https://github.com/Nodge/LightOpenID.git",
  1788 + "reference": "a5492cc0c932c557b7e9b54a6e5bbd85cc5fa041"
  1789 + },
  1790 + "dist": {
  1791 + "type": "zip",
  1792 + "url": "https://api.github.com/repos/Nodge/LightOpenID/zipball/a5492cc0c932c557b7e9b54a6e5bbd85cc5fa041",
  1793 + "reference": "a5492cc0c932c557b7e9b54a6e5bbd85cc5fa041",
  1794 + "shasum": ""
  1795 + },
  1796 + "require": {
  1797 + "php": ">=5.2"
  1798 + },
  1799 + "type": "library",
  1800 + "autoload": {
  1801 + "classmap": [
  1802 + "openid.php",
  1803 + "provider/provider.php"
  1804 + ]
  1805 + },
  1806 + "notification-url": "https://packagist.org/downloads/",
  1807 + "license": [
  1808 + "MIT License"
  1809 + ],
  1810 + "authors": [
  1811 + {
  1812 + "name": "Mewp",
  1813 + "homepage": "http://code.google.com/p/lightopenid/"
  1814 + },
  1815 + {
  1816 + "name": "Ignat Ignatov",
  1817 + "homepage": "https://github.com/iignatov/LightOpenID"
  1818 + }
  1819 + ],
  1820 + "description": "Lightweight PHP5 library for easy OpenID authentication.",
  1821 + "homepage": "https://github.com/Nodge/LightOpenID",
  1822 + "keywords": [
  1823 + "Authentication",
  1824 + "OpenId"
  1825 + ],
  1826 + "time": "2013-08-31T16:48:56+00:00"
  1827 + },
  1828 + {
  1829 + "name": "nodge/yii2-eauth",
  1830 + "version": "2.5.0",
  1831 + "source": {
  1832 + "type": "git",
  1833 + "url": "https://github.com/Nodge/yii2-eauth.git",
  1834 + "reference": "04798651fdb3a0db9ed5272330f18b26733507a0"
  1835 + },
  1836 + "dist": {
  1837 + "type": "zip",
  1838 + "url": "https://api.github.com/repos/Nodge/yii2-eauth/zipball/04798651fdb3a0db9ed5272330f18b26733507a0",
  1839 + "reference": "04798651fdb3a0db9ed5272330f18b26733507a0",
  1840 + "shasum": ""
  1841 + },
  1842 + "require": {
  1843 + "lib-curl": "*",
  1844 + "lusitanian/oauth": "~0.3.0",
  1845 + "nodge/lightopenid": "~1.1.0",
  1846 + "php": ">=5.4.0",
  1847 + "yiisoft/yii2": "*"
  1848 + },
  1849 + "type": "yii2-extension",
  1850 + "extra": {
  1851 + "bootstrap": "nodge\\eauth\\Bootstrap"
  1852 + },
  1853 + "autoload": {
  1854 + "psr-4": {
  1855 + "nodge\\eauth\\": "src/"
  1856 + }
  1857 + },
  1858 + "notification-url": "https://packagist.org/downloads/",
  1859 + "license": [
  1860 + "New BSD License"
  1861 + ],
  1862 + "authors": [
  1863 + {
  1864 + "name": "Maxim Zemskov",
  1865 + "email": "nodge@yandex.ru",
  1866 + "homepage": "http://nodge.ru/"
  1867 + }
  1868 + ],
  1869 + "description": "Yii2 EAuth Extension. EAuth allows to authenticate users with accounts on other websites (Google, Facebook, Twitter, etc).",
  1870 + "homepage": "https://github.com/Nodge/yii2-eauth",
  1871 + "keywords": [
  1872 + "Authentication",
  1873 + "OpenId",
  1874 + "eauth",
  1875 + "extension",
  1876 + "oauth",
  1877 + "yii2"
  1878 + ],
  1879 + "time": "2017-04-09T20:23:01+00:00"
  1880 + },
  1881 + {
1721 1882 "name": "phpoffice/phpexcel",
1722 1883 "version": "1.8.1",
1723 1884 "source": {
... ... @@ -1776,16 +1937,16 @@
1776 1937 },
1777 1938 {
1778 1939 "name": "phpseclib/phpseclib",
1779   - "version": "2.0.5",
  1940 + "version": "2.0.6",
1780 1941 "source": {
1781 1942 "type": "git",
1782 1943 "url": "https://github.com/phpseclib/phpseclib.git",
1783   - "reference": "f8dd0e18d2328c447dd4190fecd11ef52680d968"
  1944 + "reference": "34a7699e6f31b1ef4035ee36444407cecf9f56aa"
1784 1945 },
1785 1946 "dist": {
1786 1947 "type": "zip",
1787   - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/f8dd0e18d2328c447dd4190fecd11ef52680d968",
1788   - "reference": "f8dd0e18d2328c447dd4190fecd11ef52680d968",
  1948 + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/34a7699e6f31b1ef4035ee36444407cecf9f56aa",
  1949 + "reference": "34a7699e6f31b1ef4035ee36444407cecf9f56aa",
1789 1950 "shasum": ""
1790 1951 },
1791 1952 "require": {
... ... @@ -1864,7 +2025,7 @@
1864 2025 "x.509",
1865 2026 "x509"
1866 2027 ],
1867   - "time": "2017-05-08T05:58:35+00:00"
  2028 + "time": "2017-06-05T06:31:10+00:00"
1868 2029 },
1869 2030 {
1870 2031 "name": "psr/cache",
... ... @@ -2253,21 +2414,21 @@
2253 2414 },
2254 2415 {
2255 2416 "name": "yiisoft/yii2",
2256   - "version": "2.0.11.2",
  2417 + "version": "2.0.12",
2257 2418 "source": {
2258 2419 "type": "git",
2259 2420 "url": "https://github.com/yiisoft/yii2-framework.git",
2260   - "reference": "ee996adec1dfd7babb67bd0c604f5bd6425fe5ab"
  2421 + "reference": "70acbecc75cb26b6cd66d16be0b06e4b73db190d"
2261 2422 },
2262 2423 "dist": {
2263 2424 "type": "zip",
2264   - "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/ee996adec1dfd7babb67bd0c604f5bd6425fe5ab",
2265   - "reference": "ee996adec1dfd7babb67bd0c604f5bd6425fe5ab",
  2425 + "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/70acbecc75cb26b6cd66d16be0b06e4b73db190d",
  2426 + "reference": "70acbecc75cb26b6cd66d16be0b06e4b73db190d",
2266 2427 "shasum": ""
2267 2428 },
2268 2429 "require": {
2269 2430 "bower-asset/jquery": "2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable",
2270   - "bower-asset/jquery.inputmask": "~3.2.2 | ~3.3.3",
  2431 + "bower-asset/jquery.inputmask": "~3.2.2 | ~3.3.5",
2271 2432 "bower-asset/punycode": "1.3.*",
2272 2433 "bower-asset/yii2-pjax": "~2.0.1",
2273 2434 "cebe/markdown": "~1.0.0 | ~1.1.0",
... ... @@ -2349,7 +2510,7 @@
2349 2510 "framework",
2350 2511 "yii2"
2351 2512 ],
2352   - "time": "2017-02-08T09:04:32+00:00"
  2513 + "time": "2017-06-05T14:33:41+00:00"
2353 2514 },
2354 2515 {
2355 2516 "name": "yiisoft/yii2-bootstrap",
... ... @@ -3568,16 +3729,16 @@
3568 3729 },
3569 3730 {
3570 3731 "name": "phpunit/phpunit",
3571   - "version": "6.2.0",
  3732 + "version": "6.2.1",
3572 3733 "source": {
3573 3734 "type": "git",
3574 3735 "url": "https://github.com/sebastianbergmann/phpunit.git",
3575   - "reference": "23bcb03e5c6a8b8067f6c2b28f6cd84b2df321cc"
  3736 + "reference": "16999a1e9a8a25d68f0ab8cc8ab818b043ad5374"
3576 3737 },
3577 3738 "dist": {
3578 3739 "type": "zip",
3579   - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/23bcb03e5c6a8b8067f6c2b28f6cd84b2df321cc",
3580   - "reference": "23bcb03e5c6a8b8067f6c2b28f6cd84b2df321cc",
  3740 + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/16999a1e9a8a25d68f0ab8cc8ab818b043ad5374",
  3741 + "reference": "16999a1e9a8a25d68f0ab8cc8ab818b043ad5374",
3581 3742 "shasum": ""
3582 3743 },
3583 3744 "require": {
... ... @@ -3622,7 +3783,7 @@
3622 3783 "type": "library",
3623 3784 "extra": {
3624 3785 "branch-alias": {
3625   - "dev-master": "6.1.x-dev"
  3786 + "dev-master": "6.2.x-dev"
3626 3787 }
3627 3788 },
3628 3789 "autoload": {
... ... @@ -3648,7 +3809,7 @@
3648 3809 "testing",
3649 3810 "xunit"
3650 3811 ],
3651   - "time": "2017-06-02T08:02:48+00:00"
  3812 + "time": "2017-06-02T12:24:37+00:00"
3652 3813 },
3653 3814 {
3654 3815 "name": "phpunit/phpunit-mock-objects",
... ... @@ -4315,7 +4476,7 @@
4315 4476 },
4316 4477 {
4317 4478 "name": "symfony/browser-kit",
4318   - "version": "v3.3.0",
  4479 + "version": "v3.3.2",
4319 4480 "source": {
4320 4481 "type": "git",
4321 4482 "url": "https://github.com/symfony/browser-kit.git",
... ... @@ -4372,16 +4533,16 @@
4372 4533 },
4373 4534 {
4374 4535 "name": "symfony/console",
4375   - "version": "v3.3.0",
  4536 + "version": "v3.3.2",
4376 4537 "source": {
4377 4538 "type": "git",
4378 4539 "url": "https://github.com/symfony/console.git",
4379   - "reference": "c80e63f3f5e3a331bfc25e6e9332b10422eb9b05"
  4540 + "reference": "70d2a29b2911cbdc91a7e268046c395278238b2e"
4380 4541 },
4381 4542 "dist": {
4382 4543 "type": "zip",
4383   - "url": "https://api.github.com/repos/symfony/console/zipball/c80e63f3f5e3a331bfc25e6e9332b10422eb9b05",
4384   - "reference": "c80e63f3f5e3a331bfc25e6e9332b10422eb9b05",
  4544 + "url": "https://api.github.com/repos/symfony/console/zipball/70d2a29b2911cbdc91a7e268046c395278238b2e",
  4545 + "reference": "70d2a29b2911cbdc91a7e268046c395278238b2e",
4385 4546 "shasum": ""
4386 4547 },
4387 4548 "require": {
... ... @@ -4394,6 +4555,7 @@
4394 4555 },
4395 4556 "require-dev": {
4396 4557 "psr/log": "~1.0",
  4558 + "symfony/config": "~3.3",
4397 4559 "symfony/dependency-injection": "~3.3",
4398 4560 "symfony/event-dispatcher": "~2.8|~3.0",
4399 4561 "symfony/filesystem": "~2.8|~3.0",
... ... @@ -4436,11 +4598,11 @@
4436 4598 ],
4437 4599 "description": "Symfony Console Component",
4438 4600 "homepage": "https://symfony.com",
4439   - "time": "2017-05-28T14:08:56+00:00"
  4601 + "time": "2017-06-02T19:24:58+00:00"
4440 4602 },
4441 4603 {
4442 4604 "name": "symfony/css-selector",
4443   - "version": "v3.3.0",
  4605 + "version": "v3.3.2",
4444 4606 "source": {
4445 4607 "type": "git",
4446 4608 "url": "https://github.com/symfony/css-selector.git",
... ... @@ -4493,16 +4655,16 @@
4493 4655 },
4494 4656 {
4495 4657 "name": "symfony/debug",
4496   - "version": "v3.3.0",
  4658 + "version": "v3.3.2",
4497 4659 "source": {
4498 4660 "type": "git",
4499 4661 "url": "https://github.com/symfony/debug.git",
4500   - "reference": "ef5f19a7a68075a0bd05969a329ead3b0776fb7a"
  4662 + "reference": "e9c50482841ef696e8fa1470d950a79c8921f45d"
4501 4663 },
4502 4664 "dist": {
4503 4665 "type": "zip",
4504   - "url": "https://api.github.com/repos/symfony/debug/zipball/ef5f19a7a68075a0bd05969a329ead3b0776fb7a",
4505   - "reference": "ef5f19a7a68075a0bd05969a329ead3b0776fb7a",
  4666 + "url": "https://api.github.com/repos/symfony/debug/zipball/e9c50482841ef696e8fa1470d950a79c8921f45d",
  4667 + "reference": "e9c50482841ef696e8fa1470d950a79c8921f45d",
4506 4668 "shasum": ""
4507 4669 },
4508 4670 "require": {
... ... @@ -4545,11 +4707,11 @@
4545 4707 ],
4546 4708 "description": "Symfony Debug Component",
4547 4709 "homepage": "https://symfony.com",
4548   - "time": "2017-05-27T16:02:27+00:00"
  4710 + "time": "2017-06-01T21:01:25+00:00"
4549 4711 },
4550 4712 {
4551 4713 "name": "symfony/dom-crawler",
4552   - "version": "v3.3.0",
  4714 + "version": "v3.3.2",
4553 4715 "source": {
4554 4716 "type": "git",
4555 4717 "url": "https://github.com/symfony/dom-crawler.git",
... ... @@ -4605,16 +4767,16 @@
4605 4767 },
4606 4768 {
4607 4769 "name": "symfony/event-dispatcher",
4608   - "version": "v3.3.0",
  4770 + "version": "v3.3.2",
4609 4771 "source": {
4610 4772 "type": "git",
4611 4773 "url": "https://github.com/symfony/event-dispatcher.git",
4612   - "reference": "a9f8b02b0ef07302eca92cd4bba73200b7980e9c"
  4774 + "reference": "4054a102470665451108f9b59305c79176ef98f0"
4613 4775 },
4614 4776 "dist": {
4615 4777 "type": "zip",
4616   - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a9f8b02b0ef07302eca92cd4bba73200b7980e9c",
4617   - "reference": "a9f8b02b0ef07302eca92cd4bba73200b7980e9c",
  4778 + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4054a102470665451108f9b59305c79176ef98f0",
  4779 + "reference": "4054a102470665451108f9b59305c79176ef98f0",
4618 4780 "shasum": ""
4619 4781 },
4620 4782 "require": {
... ... @@ -4664,20 +4826,20 @@
4664 4826 ],
4665 4827 "description": "Symfony EventDispatcher Component",
4666 4828 "homepage": "https://symfony.com",
4667   - "time": "2017-05-04T12:23:07+00:00"
  4829 + "time": "2017-06-04T18:15:29+00:00"
4668 4830 },
4669 4831 {
4670 4832 "name": "symfony/finder",
4671   - "version": "v3.3.0",
  4833 + "version": "v3.3.2",
4672 4834 "source": {
4673 4835 "type": "git",
4674 4836 "url": "https://github.com/symfony/finder.git",
4675   - "reference": "30cb2a2c09627823a7243638dd456de4e2748fed"
  4837 + "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4"
4676 4838 },
4677 4839 "dist": {
4678 4840 "type": "zip",
4679   - "url": "https://api.github.com/repos/symfony/finder/zipball/30cb2a2c09627823a7243638dd456de4e2748fed",
4680   - "reference": "30cb2a2c09627823a7243638dd456de4e2748fed",
  4841 + "url": "https://api.github.com/repos/symfony/finder/zipball/baea7f66d30854ad32988c11a09d7ffd485810c4",
  4842 + "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4",
4681 4843 "shasum": ""
4682 4844 },
4683 4845 "require": {
... ... @@ -4713,7 +4875,7 @@
4713 4875 ],
4714 4876 "description": "Symfony Finder Component",
4715 4877 "homepage": "https://symfony.com",
4716   - "time": "2017-05-25T23:10:31+00:00"
  4878 + "time": "2017-06-01T21:01:25+00:00"
4717 4879 },
4718 4880 {
4719 4881 "name": "symfony/polyfill-mbstring",
... ... @@ -4776,16 +4938,16 @@
4776 4938 },
4777 4939 {
4778 4940 "name": "symfony/yaml",
4779   - "version": "v3.3.0",
  4941 + "version": "v3.3.2",
4780 4942 "source": {
4781 4943 "type": "git",
4782 4944 "url": "https://github.com/symfony/yaml.git",
4783   - "reference": "885db865f6b2b918404a1fae28f9ac640f71f994"
  4945 + "reference": "9752a30000a8ca9f4b34b5227d15d0101b96b063"
4784 4946 },
4785 4947 "dist": {
4786 4948 "type": "zip",
4787   - "url": "https://api.github.com/repos/symfony/yaml/zipball/885db865f6b2b918404a1fae28f9ac640f71f994",
4788   - "reference": "885db865f6b2b918404a1fae28f9ac640f71f994",
  4949 + "url": "https://api.github.com/repos/symfony/yaml/zipball/9752a30000a8ca9f4b34b5227d15d0101b96b063",
  4950 + "reference": "9752a30000a8ca9f4b34b5227d15d0101b96b063",
4789 4951 "shasum": ""
4790 4952 },
4791 4953 "require": {
... ... @@ -4827,7 +4989,7 @@
4827 4989 ],
4828 4990 "description": "Symfony Yaml Component",
4829 4991 "homepage": "https://symfony.com",
4830   - "time": "2017-05-28T10:56:20+00:00"
  4992 + "time": "2017-06-02T22:05:06+00:00"
4831 4993 },
4832 4994 {
4833 4995 "name": "theseer/tokenizer",
... ...
environments/index.php
... ... @@ -4,7 +4,6 @@
4 4 * This file returns a list of environments that the application
5 5 * may be installed under. The returned data must be in the following
6 6 * format:
7   - *
8 7 * ```php
9 8 * return [
10 9 * 'environment name' => [
... ... @@ -36,6 +35,8 @@
36 35 'backend/web/assets',
37 36 'frontend/runtime',
38 37 'frontend/web/assets',
  38 + 'storage',
  39 + 'common/config/settings.php',
39 40 ],
40 41 'setExecutable' => [
41 42 'yii',
... ... @@ -54,6 +55,8 @@
54 55 'backend/web/assets',
55 56 'frontend/runtime',
56 57 'frontend/web/assets',
  58 + 'storage',
  59 + 'common/config/settings.php',
57 60 ],
58 61 'setExecutable' => [
59 62 'yii',
... ...
frontend/config/eauth.php 0 → 100644
  1 +<?php
  2 + return [
  3 + 'class' => 'nodge\eauth\EAuth',
  4 + 'popup' => true,
  5 + 'cache' => false,
  6 + 'cacheExpire' => 0,
  7 + 'httpClient' => [
  8 + // uncomment this to use streams in safe_mode
  9 + //'useStreamsFallback' => true,
  10 + ],
  11 + 'services' => [
  12 + 'google' => [
  13 + // register your app here: https://code.google.com/apis/console/
  14 + 'class' => 'nodge\eauth\services\GoogleOAuth2Service',
  15 + 'clientId' => '857343172443-th52trcqruo6pct71hmn72pud8ob9c9o.apps.googleusercontent.com',
  16 + 'clientSecret' => 'PgQIYSOjEUm4lffk_o7zMhxZ',
  17 + 'title' => 'Google',
  18 + ],
  19 + 'facebook' => [
  20 + // register your app here: https://developers.facebook.com/apps/
  21 + 'class' => 'nodge\eauth\services\FacebookOAuth2Service',
  22 + 'clientId' => '1453788021358149',
  23 + 'clientSecret' => '97dc7b9863b482dce6c6e7618bda9738',
  24 + ],
  25 + 'yahoo' => [
  26 + 'class' => 'nodge\eauth\services\YahooOpenIDService',
  27 + //'realm' => '*.example.org', // your domain, can be with wildcard to authenticate on subdomains.
  28 + ],
  29 + 'linkedin_oauth2' => [
  30 + // register your app here: https://www.linkedin.com/secure/developer
  31 + 'class' => 'nodge\eauth\services\LinkedinOAuth2Service',
  32 + 'clientId' => '86uay6912iwzn7',
  33 + 'clientSecret' => 'IkOc8oMOlxkyNSfK',
  34 + 'title' => 'LinkedIn (OAuth2)',
  35 + ],
  36 + 'github' => [
  37 + // register your app here: https://github.com/settings/applications
  38 + 'class' => 'nodge\eauth\services\GitHubOAuth2Service',
  39 + 'clientId' => '1a72fc01be1ecca28c76',
  40 + 'clientSecret' => '188376ae0736133bdca9f4376a99a1cd2a6e6254',
  41 + ],
  42 + 'steam' => [
  43 + 'class' => 'nodge\eauth\services\SteamOpenIDService',
  44 + //'realm' => '*.example.org', // your domain, can be with wildcard to authenticate on subdomains.
  45 + 'apiKey' => 'ED8812C3AA509B94D4744AADBF4FDF49',
  46 + // Optional. You can get it here: https://steamcommunity.com/dev/apikey
  47 + ],
  48 + 'instagram' => [
  49 + // register your app here: https://instagram.com/developer/register/
  50 + 'class' => 'nodge\eauth\services\InstagramOAuth2Service',
  51 + 'clientId' => '7c3de0236bb4467bae58707012addce8',
  52 + 'clientSecret' => 'bfcf8a5eb47d4998b6e3dd573777a857',
  53 + ],
  54 + ],
  55 + ];
0 56 \ No newline at end of file
... ...
frontend/config/main.php
1 1 <?php
  2 + use artbox\catalog\components\History;
2 3 use artbox\core\components\LanguageRequest;
3 4 use artbox\core\components\SeoUrlManager;
4 5 use artbox\order\models\Basket;
... ... @@ -47,6 +48,14 @@
47 48 'warning',
48 49 ],
49 50 ],
  51 + [
  52 + 'class' => 'yii\log\FileTarget',
  53 + 'logFile' => '@frontend/runtime/logs/eauth.log',
  54 + 'categories' => [
  55 + 'nodge\eauth\*',
  56 + ],
  57 + 'logVars' => [],
  58 + ],
50 59 ],
51 60 ],
52 61 'errorHandler' => [
... ... @@ -68,9 +77,9 @@
68 77 'route' => 'category/view',
69 78 'defaults' => [ 'filter' => '' ],
70 79 ],
71   - 'special/<type:(new|sale)>' => 'special/index',
72   - 'special/<category>/<type:(new|sale)>' => 'special/category',
73   - 'robots.txt' => 'site/robots',
  80 + 'special/<type:(new|sale)>' => 'special/index',
  81 + 'special/<category>/<type:(new|sale)>' => 'special/category',
  82 + 'robots.txt' => 'site/robots',
74 83 [
75 84 'pattern' => 'artbox-comment/manage/<action>',
76 85 'route' => 'notfound',
... ... @@ -78,11 +87,16 @@
78 87 'action' => '',
79 88 ],
80 89 ],
  90 + 'login/<service:google|twitter|facebook|yahoo|linkedin|linkedin_oauth2|github|steam|instagram>' => 'site/login',
81 91 ],
82 92 ],
83 93 'basket' => [
84 94 'class' => Basket::className(),
85 95 ],
  96 + 'eauth' => require( 'eauth.php' ),
  97 + 'history' => [
  98 + 'class' => History::className(),
  99 + ],
86 100 ],
87 101 'params' => $params,
88 102 ];
... ...
frontend/controllers/SiteController.php
... ... @@ -7,12 +7,15 @@
7 7 use artbox\catalog\models\Product;
8 8 use artbox\core\models\DummyAlias;
9 9 use artbox\core\models\Feedback;
  10 + use artbox\order\models\Customer;
10 11 use artbox\order\models\LoginForm;
11 12 use artbox\order\models\PasswordResetRequestForm;
12 13 use artbox\order\models\ResetPasswordForm;
13 14 use artbox\order\models\SignupForm;
14 15 use artbox\weblog\models\Article;
15 16 use common\models\Settings;
  17 + use nodge\eauth\ErrorException;
  18 + use nodge\eauth\openid\ControllerBehavior;
16 19 use Yii;
17 20 use yii\base\InvalidParamException;
18 21 use yii\bootstrap\Html;
... ... @@ -50,6 +53,10 @@
50 53 'feedback' => [ 'post' ],
51 54 ],
52 55 ],
  56 + 'eauth' => [
  57 + 'class' => ControllerBehavior::className(),
  58 + 'only' => [ 'login' ],
  59 + ],
53 60 ];
54 61 }
55 62  
... ... @@ -90,6 +97,33 @@
90 97 ->is('mask', 4)
91 98 ->limit(20)
92 99 ->all();
  100 + $historyItems = [];
  101 + /**
  102 + * @var \artbox\catalog\components\History $history
  103 + */
  104 + if ($history = \Yii::$app->get('history', false)) {
  105 + if (!empty($history->get())) {
  106 + $historyItems = Product::find()
  107 + ->with('lang', 'image')
  108 + ->innerJoinWith(
  109 + [
  110 + 'variants' => function ($query) {
  111 + /**
  112 + * @var \yii\db\ActiveQuery $query
  113 + */
  114 + $query->with('image');
  115 + },
  116 + ]
  117 + )
  118 + ->where(
  119 + [
  120 + 'variant.id' => $history->get(),
  121 + ]
  122 + )
  123 + ->limit(20)
  124 + ->all();
  125 + }
  126 + }
93 127 $productCount = Product::find()
94 128 ->count();
95 129 $brandCount = Brand::find()
... ... @@ -124,6 +158,7 @@
124 158 'topItems' => $topItems,
125 159 'newItems' => $newItems,
126 160 'saleItems' => $saleItems,
  161 + 'historyItems' => $historyItems,
127 162 'productCount' => $productCount,
128 163 'brandCount' => $brandCount,
129 164 'brands' => $brands,
... ... @@ -249,6 +284,44 @@
249 284  
250 285 public function actionLogin()
251 286 {
  287 + $serviceName = Yii::$app->getRequest()
  288 + ->getQueryParam('service');
  289 + if (isset($serviceName)) {
  290 + /** @var $eauth \nodge\eauth\ServiceBase */
  291 + $eauth = Yii::$app->get('eauth')
  292 + ->getIdentity($serviceName);
  293 + $eauth->setRedirectUrl(
  294 + Yii::$app->getUser()
  295 + ->getReturnUrl()
  296 + );
  297 + $eauth->setCancelUrl(
  298 + Yii::$app->getUrlManager()
  299 + ->createAbsoluteUrl('site/login')
  300 + );
  301 +
  302 + try {
  303 + if ($eauth->authenticate()) {
  304 + // var_dump($eauth->getIsAuthenticated(), $eauth->getAttributes()); exit;
  305 + $identity = Customer::findByEAuth($eauth);
  306 + Yii::$app->getUser()
  307 + ->login($identity);
  308 +
  309 + // special redirect with closing popup window
  310 + $eauth->redirect();
  311 + } else {
  312 + // close popup window and redirect to cancelUrl
  313 + $eauth->cancel();
  314 + }
  315 + } catch (ErrorException $e) {
  316 + // save error to show it later
  317 + Yii::$app->getSession()
  318 + ->setFlash('error', 'EAuthException: ' . $e->getMessage());
  319 +
  320 + // close popup window and redirect to cancelUrl
  321 + // $eauth->cancel();
  322 + $eauth->redirect($eauth->getCancelUrl());
  323 + }
  324 + }
252 325 if (!\Yii::$app->user->isGuest) {
253 326 return $this->redirect([ 'index' ]);
254 327 }
... ...
frontend/controllers/VariantController.php
... ... @@ -27,6 +27,12 @@
27 27 {
28 28 $model = $this->findModel($id);
29 29 /**
  30 + * @var \artbox\catalog\components\History $history
  31 + */
  32 + if ($history = \Yii::$app->get('history', false)) {
  33 + $history->add($model->id);
  34 + }
  35 + /**
30 36 * @var SeoComponent $seo
31 37 */
32 38 $seo = Yii::$app->get('seo');
... ...
frontend/views/layouts/main.php
... ... @@ -16,6 +16,7 @@
16 16 use common\models\Settings;
17 17 use frontend\assets\AppAsset;
18 18 use frontend\widgets\LangLink;
  19 + use nodge\eauth\Widget;
19 20 use yii\base\Model;
20 21 use yii\bootstrap\ActiveForm;
21 22 use yii\bootstrap\Html;
... ... @@ -368,6 +369,19 @@ _________________________________________________________ --&gt;
368 369 </div>
369 370 <div class="modal-body">
370 371 <?php
  372 + if (\Yii::$app->get('eauth', false)) {
  373 + echo Html::tag(
  374 + 'p',
  375 + \Yii::t(
  376 + 'app',
  377 + 'Do you already have an account on one of these sites? Click the logo to log in with it here'
  378 + ) . ':',
  379 + [
  380 + 'class' => 'lead',
  381 + ]
  382 + );
  383 + echo Widget::widget([ 'action' => 'site/login' ]);
  384 + }
371 385 $login = ActiveForm::begin(
372 386 [
373 387 'action' => [ '/site/login' ],
... ...
frontend/views/site/index.php
... ... @@ -15,6 +15,7 @@
15 15 * @var Product[] $topItems
16 16 * @var Product[] $newItems
17 17 * @var Product[] $saleItems
  18 + * @var Product[] $historyItems
18 19 * @var int $brandCount
19 20 * @var int $productCount
20 21 * @var Brand[] $brands
... ... @@ -179,6 +180,36 @@ _________________________________________________________ --&gt;
179 180 </div>
180 181 <?php
181 182 }
  183 + if (!empty($historyItems)) {
  184 + ?>
  185 + <div class="heading text-center">
  186 + <h2><?php echo \Yii::t('app', 'Недавно просматривали'); ?></h2>
  187 + </div>
  188 + <div class="product-carousel">
  189 + <div class="homepage owl-carousel">
  190 + <?php
  191 + $newItemsArrays = array_chunk($historyItems, 4);
  192 + foreach ($newItemsArrays as $newItemsArray) {
  193 + ?>
  194 + <div class="products">
  195 + <?php
  196 + foreach ($newItemsArray as $product) {
  197 + echo $this->render(
  198 + '_slider_product',
  199 + [
  200 + 'product' => $product,
  201 + ]
  202 + );
  203 + }
  204 + ?>
  205 + </div>
  206 + <?php
  207 + }
  208 + ?>
  209 + </div>
  210 + </div>
  211 + <?php
  212 + }
182 213 ?>
183 214 </div>
184 215 </section>
... ...
frontend/views/site/login.php
... ... @@ -2,9 +2,11 @@
2 2  
3 3 /* @var $this yii\web\View */
4 4 /* @var $form yii\bootstrap\ActiveForm */
5   - /* @var $loginForm \common\models\LoginForm */
6   - /* @var $signupForm \common\models\SignupForm */
  5 + /* @var $loginForm LoginForm */
  6 + /* @var $signupForm SignupForm */
7 7  
  8 + use artbox\order\models\LoginForm;
  9 + use artbox\order\models\SignupForm;
8 10 use yii\bootstrap\ActiveForm;
9 11 use yii\bootstrap\Html;
10 12  
... ... @@ -73,8 +75,15 @@
73 75 <p class="lead"><?php echo \Yii::t('app', 'Уже зарегистрированы?'); ?></p>
74 76  
75 77 <hr>
76   -
  78 + <p class="lead">Do you already have an account on one of these sites? Click the logo to log in with it here:</p>
  79 + <?php echo \nodge\eauth\Widget::widget([ 'action' => 'site/login' ]); ?>
77 80 <?php
  81 + if (Yii::$app->getSession()
  82 + ->hasFlash('error')
  83 + ) {
  84 + echo '<div class="alert alert-danger">' . Yii::$app->getSession()
  85 + ->getFlash('error') . '</div>';
  86 + }
78 87 $formLogin = ActiveForm::begin();
79 88 echo $formLogin->field($loginForm, 'username')
80 89 ->textInput();
... ...