From ffdfa52031b0a94343790f3080b17ccfb99816e9 Mon Sep 17 00:00:00 2001 From: symfonyluxury Date: Mon, 21 May 2012 18:05:31 +0800 Subject: [PATCH 1/3] write some GDATA stuff in working place --- app/AppKernel.php | 1 + app/config/routing.yml | 5 ++ composer.json | 3 +- composer.lock | 64 +++++++++++-------- .../Controller/DefaultController.php | 43 +++++++++++++ .../DependencyInjection/Configuration.php | 29 +++++++++ .../GoogleOauthExtension.php | 28 ++++++++ src/Google/OauthBundle/GoogleOauthBundle.php | 9 +++ .../OauthBundle/Resources/config/services.xml | 20 ++++++ .../Resources/views/Default/index.html.twig | 1 + .../Controller/DefaultControllerTest.php | 17 +++++ 11 files changed, 191 insertions(+), 29 deletions(-) create mode 100644 src/Google/OauthBundle/Controller/DefaultController.php create mode 100644 src/Google/OauthBundle/DependencyInjection/Configuration.php create mode 100644 src/Google/OauthBundle/DependencyInjection/GoogleOauthExtension.php create mode 100644 src/Google/OauthBundle/GoogleOauthBundle.php create mode 100644 src/Google/OauthBundle/Resources/config/services.xml create mode 100644 src/Google/OauthBundle/Resources/views/Default/index.html.twig create mode 100644 src/Google/OauthBundle/Tests/Controller/DefaultControllerTest.php diff --git a/app/AppKernel.php b/app/AppKernel.php index a19c9c1..a6ac552 100644 --- a/app/AppKernel.php +++ b/app/AppKernel.php @@ -19,6 +19,7 @@ public function registerBundles() new JMS\AopBundle\JMSAopBundle(), new JMS\DiExtraBundle\JMSDiExtraBundle($this), new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(), + new Google\OauthBundle\GoogleOauthBundle(), ); if (in_array($this->getEnvironment(), array('dev', 'test'))) { diff --git a/app/config/routing.yml b/app/config/routing.yml index 684d364..1927059 100644 --- a/app/config/routing.yml +++ b/app/config/routing.yml @@ -1,3 +1,8 @@ +GoogleOauthBundle: + resource: "@GoogleOauthBundle/Controller/" + type: annotation + prefix: / + # Internal routing configuration to handle ESI #_internal: # resource: "@FrameworkBundle/Resources/config/routing/internal.xml" diff --git a/composer.json b/composer.json index 483de4d..71bdc66 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,8 @@ "sensio/generator-bundle": "dev-master", "jms/security-extra-bundle": "1.1.*", "jms/di-extra-bundle": "1.0.*", - "doctrine/data-fixtures": "*" + "doctrine/data-fixtures": "*", + "zend/gdata": "*" }, "scripts": { "post-install-cmd": [ diff --git a/composer.lock b/composer.lock index 7306f0b..dfe9fa2 100644 --- a/composer.lock +++ b/composer.lock @@ -12,17 +12,18 @@ }, { "package": "doctrine/dbal", - "version": "2.2.2" + "version": "2.2.x-dev", + "source-reference": "f3effdb752519bfc7842a1005fd4cef55f7661e8" }, { "package": "doctrine/doctrine-bundle", "version": "dev-master", - "source-reference": "5dad4a6ae187c6d345ec2b02be20ccc33779f53e" + "source-reference": "74632539010f1f8887e8afadf41a732efce971c1" }, { "package": "doctrine/orm", "version": "2.2.x-dev", - "source-reference": "202e675d2bf25ce980acc2db69bb971beb8936b9" + "source-reference": "36cac855dce4ec50f12ecc3628cd41f7801a4f1d" }, { "package": "jms/aop-bundle", @@ -47,14 +48,14 @@ { "package": "kriswallsmith/assetic", "version": "dev-master", - "source-reference": "1a1b5f963db158a1065343fab617d25ce351a2dc", - "alias-pretty-version": "1.1.x-dev", - "alias-version": "1.1.9999999.9999999-dev" + "source-reference": "1a1b5f963db158a1065343fab617d25ce351a2dc" }, { "package": "kriswallsmith/assetic", "version": "dev-master", - "source-reference": "1a1b5f963db158a1065343fab617d25ce351a2dc" + "source-reference": "1a1b5f963db158a1065343fab617d25ce351a2dc", + "alias-pretty-version": "1.1.x-dev", + "alias-version": "1.1.9999999.9999999-dev" }, { "package": "monolog/monolog", @@ -63,37 +64,30 @@ { "package": "sensio/distribution-bundle", "version": "dev-master", - "source-reference": "6517345b6b28021efad311123413000792e892ee" + "source-reference": "9a1b2ef970575c8b35f72ce857df2fa9aef7b470" }, { "package": "sensio/framework-extra-bundle", "version": "dev-master", - "source-reference": "ab3130462a01437f4f748a778100e010c6d91ed3" + "source-reference": "e00b525b14784ea4f21c14945e58b4a76a530a6a" }, { "package": "sensio/generator-bundle", "version": "dev-master", - "source-reference": "423f505811307185eeea38a0a396bede32713497" + "source-reference": "0813379920dcaa4b06361501f654379383d75f16" }, { "package": "swiftmailer/swiftmailer", "version": "dev-master", - "source-reference": "9895567cec5a13d1a43db5053defbaad260c1b87", - "alias-pretty-version": "4.1.x-dev", - "alias-version": "4.1.9999999.9999999-dev" + "source-reference": "9895567cec5a13d1a43db5053defbaad260c1b87" }, { "package": "swiftmailer/swiftmailer", "version": "dev-master", - "source-reference": "57789082d1d53529dcf8cd3ca132d9787a59afee", + "source-reference": "9895567cec5a13d1a43db5053defbaad260c1b87", "alias-pretty-version": "4.1.x-dev", "alias-version": "4.1.9999999.9999999-dev" }, - { - "package": "swiftmailer/swiftmailer", - "version": "dev-master", - "source-reference": "9895567cec5a13d1a43db5053defbaad260c1b87" - }, { "package": "symfony/assetic-bundle", "version": "dev-master", @@ -107,36 +101,43 @@ { "package": "symfony/swiftmailer-bridge", "version": "dev-master", - "source-reference": "463536de4b149e1560bd764582cbf50dc9936ebd", + "source-reference": "408eb09f5799d393ddc3d916ec3667857fb3a20d", "alias-pretty-version": "2.1.x-dev", "alias-version": "2.1.9999999.9999999-dev" }, { "package": "symfony/swiftmailer-bridge", "version": "dev-master", - "source-reference": "509901cb13f43a6319a55804f787d206aa649ab4", - "alias-pretty-version": "2.1.x-dev", - "alias-version": "2.1.9999999.9999999-dev" + "source-reference": "408eb09f5799d393ddc3d916ec3667857fb3a20d" }, { "package": "symfony/swiftmailer-bridge", "version": "dev-master", - "source-reference": "509901cb13f43a6319a55804f787d206aa649ab4" + "source-reference": "463536de4b149e1560bd764582cbf50dc9936ebd", + "alias-pretty-version": "2.1.x-dev", + "alias-version": "2.1.9999999.9999999-dev" }, { "package": "symfony/swiftmailer-bundle", "version": "dev-master", - "source-reference": "7a7ab8ec2dd6ec381eed5be999164095ef757bdf" + "source-reference": "71e1789868665cf94dc7831f645625fd0f70aac6" }, { "package": "symfony/symfony", "version": "dev-master", - "source-reference": "18132c18b41637a05a3a13990651a4054cf0ce59" + "source-reference": "18132c18b41637a05a3a13990651a4054cf0ce59", + "alias-pretty-version": "2.1.x-dev", + "alias-version": "2.1.9999999.9999999-dev" }, { "package": "symfony/symfony", "version": "dev-master", - "source-reference": "18132c18b41637a05a3a13990651a4054cf0ce59", + "source-reference": "1407f112fcfb6565e69b8040c7ceaae810a8acb3" + }, + { + "package": "symfony/symfony", + "version": "dev-master", + "source-reference": "1407f112fcfb6565e69b8040c7ceaae810a8acb3", "alias-pretty-version": "2.1.x-dev", "alias-version": "2.1.9999999.9999999-dev" }, @@ -148,7 +149,14 @@ { "package": "twig/twig", "version": "dev-master", - "source-reference": "875fa010ce597edf97c04ce6490be950068e9372" + "source-reference": "e28663efd83d76ee36bf9e8a790f75bd880abbf2", + "alias-pretty-version": "1.8.x-dev", + "alias-version": "1.8.9999999.9999999-dev" + }, + { + "package": "twig/twig", + "version": "dev-master", + "source-reference": "e28663efd83d76ee36bf9e8a790f75bd880abbf2" }, { "package": "twig/twig", diff --git a/src/Google/OauthBundle/Controller/DefaultController.php b/src/Google/OauthBundle/Controller/DefaultController.php new file mode 100644 index 0000000..fe9e386 --- /dev/null +++ b/src/Google/OauthBundle/Controller/DefaultController.php @@ -0,0 +1,43 @@ + 'Zend_Http_Client_Adapter_Proxy', +// 'proxy' => 'localhost', +// 'proxy_port' => 3128 +// ); +// $proxiedHttpClient = new \Zend_Http_Client( 'http://www.google.com:443/', $config ); + + $client = \Zend_Gdata_ClientLogin::getHttpClient( $this->email, $this->password, \Zend_Gdata_Gapps::AUTH_SERVICE_NAME ); +// $service = new \Zend_Gdata_Gapps( $client, self::domain ); +// $service->createUser( $this->username, $this->givenname, $this->familyname, $this->password_c, $passwordHashFunction = null, $quota = null ); + + return array('name' => $name); + } + +} diff --git a/src/Google/OauthBundle/DependencyInjection/Configuration.php b/src/Google/OauthBundle/DependencyInjection/Configuration.php new file mode 100644 index 0000000..98d1cf8 --- /dev/null +++ b/src/Google/OauthBundle/DependencyInjection/Configuration.php @@ -0,0 +1,29 @@ +root('google_oauth'); + + // Here you should define the parameters that are allowed to + // configure your bundle. See the documentation linked above for + // more information on that topic. + + return $treeBuilder; + } +} diff --git a/src/Google/OauthBundle/DependencyInjection/GoogleOauthExtension.php b/src/Google/OauthBundle/DependencyInjection/GoogleOauthExtension.php new file mode 100644 index 0000000..92122e9 --- /dev/null +++ b/src/Google/OauthBundle/DependencyInjection/GoogleOauthExtension.php @@ -0,0 +1,28 @@ +processConfiguration($configuration, $configs); + + $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); + $loader->load('services.xml'); + } +} diff --git a/src/Google/OauthBundle/GoogleOauthBundle.php b/src/Google/OauthBundle/GoogleOauthBundle.php new file mode 100644 index 0000000..a78e8ee --- /dev/null +++ b/src/Google/OauthBundle/GoogleOauthBundle.php @@ -0,0 +1,9 @@ + + + + + + diff --git a/src/Google/OauthBundle/Resources/views/Default/index.html.twig b/src/Google/OauthBundle/Resources/views/Default/index.html.twig new file mode 100644 index 0000000..4ce626e --- /dev/null +++ b/src/Google/OauthBundle/Resources/views/Default/index.html.twig @@ -0,0 +1 @@ +Hello {{ name }}! diff --git a/src/Google/OauthBundle/Tests/Controller/DefaultControllerTest.php b/src/Google/OauthBundle/Tests/Controller/DefaultControllerTest.php new file mode 100644 index 0000000..da7bb1b --- /dev/null +++ b/src/Google/OauthBundle/Tests/Controller/DefaultControllerTest.php @@ -0,0 +1,17 @@ +request('GET', '/hello/Fabien'); + + $this->assertTrue($crawler->filter('html:contains("Hello Fabien")')->count() > 0); + } +} From fcebc4345a15786f6a9bfbf1ed2cf610e68eb2b1 Mon Sep 17 00:00:00 2001 From: symfonyluxury Date: Tue, 22 May 2012 18:03:22 +0800 Subject: [PATCH 2/3] knpOauth --- app/AppKernel.php | 2 + app/config/security.yml | 24 +++++- composer.json | 3 +- composer.lock | 51 +++++++----- nbproject/project.properties | 7 -- nbproject/project.xml | 9 -- .../Controller/DefaultController.php | 17 +++- src/Google/OauthBundle/Entity/User.php | 83 +++++++++++++++++++ src/Google/OauthBundle/Entity/User.php~ | 28 +++++++ 9 files changed, 181 insertions(+), 43 deletions(-) delete mode 100644 nbproject/project.properties delete mode 100644 nbproject/project.xml create mode 100644 src/Google/OauthBundle/Entity/User.php create mode 100644 src/Google/OauthBundle/Entity/User.php~ diff --git a/app/AppKernel.php b/app/AppKernel.php index a6ac552..6cf8e01 100644 --- a/app/AppKernel.php +++ b/app/AppKernel.php @@ -20,6 +20,8 @@ public function registerBundles() new JMS\DiExtraBundle\JMSDiExtraBundle($this), new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(), new Google\OauthBundle\GoogleOauthBundle(), + new Knp\Bundle\OAuthBundle\KnpOAuthBundle(), + new Sensio\Bundle\BuzzBundle\SensioBuzzBundle(), ); if (in_array($this->getEnvironment(), array('dev', 'test'))) { diff --git a/app/config/security.yml b/app/config/security.yml index e01c1c2..ceebf09 100644 --- a/app/config/security.yml +++ b/app/config/security.yml @@ -11,6 +11,11 @@ security: ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] providers: + main: + oauth_entity: + class: Google\OauthBundle\Entity:User + property: name + in_memory: memory: users: @@ -27,13 +32,26 @@ security: security: false secured_area: - pattern: ^/demo/secured/ + pattern: ^/secured/ + oauth: + oauth_provider: google + authorization_url: ~ + access_token_url: ~ + infos_url: ~ + username_path: user.login + client_id: 66772032914.apps.googleusercontent.com + secret: 6ITw8qAL--zt34nzAPodEAgW + scope: userinfo.profile + check_path: /secured/login_check + login_path: /secured/login + failure_path: / + form_login: check_path: /demo/secured/login_check login_path: /demo/secured/login logout: - path: /demo/secured/logout - target: /demo/ + path: /secured/logout + target: / #anonymous: ~ #http_basic: # realm: "Secured Demo Area" diff --git a/composer.json b/composer.json index 71bdc66..af6e8b4 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,8 @@ "jms/security-extra-bundle": "1.1.*", "jms/di-extra-bundle": "1.0.*", "doctrine/data-fixtures": "*", - "zend/gdata": "*" + "zend/gdata": "*", + "knplabs/knp-oauth-bundle": "*" }, "scripts": { "post-install-cmd": [ diff --git a/composer.lock b/composer.lock index dfe9fa2..39d6b66 100644 --- a/composer.lock +++ b/composer.lock @@ -1,5 +1,5 @@ { - "hash": "64ef8edd92e0a1c3c3afc3d0c7f32697", + "hash": "c2727b5e1bcb96db190724685281a3c5", "packages": [ { "package": "doctrine/common", @@ -45,6 +45,11 @@ "package": "jms/security-extra-bundle", "version": "1.1.0" }, + { + "package": "knplabs/knp-oauth-bundle", + "version": "dev-master", + "source-reference": "307baaa564ed41a9fe666e358ec6d4dcf0294ccc" + }, { "package": "kriswallsmith/assetic", "version": "dev-master", @@ -57,10 +62,20 @@ "alias-pretty-version": "1.1.x-dev", "alias-version": "1.1.9999999.9999999-dev" }, + { + "package": "kriswallsmith/buzz", + "version": "dev-master", + "source-reference": "1bab480dfdb3e4687dcb60a76eaed5b1e59a20cb" + }, { "package": "monolog/monolog", "version": "1.1.0" }, + { + "package": "sensio/buzz-bundle", + "version": "dev-master", + "source-reference": "c8c0ef65768fddfa28e41cb513b0b9b4dec04ee6" + }, { "package": "sensio/distribution-bundle", "version": "dev-master", @@ -98,13 +113,6 @@ "version": "dev-master", "source-reference": "51a25acc57f4c027b28f0305976b887e2da6250a" }, - { - "package": "symfony/swiftmailer-bridge", - "version": "dev-master", - "source-reference": "408eb09f5799d393ddc3d916ec3667857fb3a20d", - "alias-pretty-version": "2.1.x-dev", - "alias-version": "2.1.9999999.9999999-dev" - }, { "package": "symfony/swiftmailer-bridge", "version": "dev-master", @@ -113,7 +121,7 @@ { "package": "symfony/swiftmailer-bridge", "version": "dev-master", - "source-reference": "463536de4b149e1560bd764582cbf50dc9936ebd", + "source-reference": "408eb09f5799d393ddc3d916ec3667857fb3a20d", "alias-pretty-version": "2.1.x-dev", "alias-version": "2.1.9999999.9999999-dev" }, @@ -125,26 +133,26 @@ { "package": "symfony/symfony", "version": "dev-master", - "source-reference": "18132c18b41637a05a3a13990651a4054cf0ce59", - "alias-pretty-version": "2.1.x-dev", - "alias-version": "2.1.9999999.9999999-dev" + "source-reference": "335d4eab86362a249e4c58d28320b7b843773492" }, { "package": "symfony/symfony", "version": "dev-master", - "source-reference": "1407f112fcfb6565e69b8040c7ceaae810a8acb3" + "source-reference": "335d4eab86362a249e4c58d28320b7b843773492", + "alias-pretty-version": "2.1.x-dev", + "alias-version": "2.1.9999999.9999999-dev" }, { "package": "symfony/symfony", "version": "dev-master", - "source-reference": "1407f112fcfb6565e69b8040c7ceaae810a8acb3", + "source-reference": "18132c18b41637a05a3a13990651a4054cf0ce59", "alias-pretty-version": "2.1.x-dev", "alias-version": "2.1.9999999.9999999-dev" }, { "package": "twig/extensions", "version": "dev-master", - "source-reference": "446d870272cd87a720e95242eade38a2acf56eaa" + "source-reference": "feb6d3f10c411e2631997c0a905aa581c80305c1" }, { "package": "twig/twig", @@ -156,14 +164,19 @@ { "package": "twig/twig", "version": "dev-master", - "source-reference": "e28663efd83d76ee36bf9e8a790f75bd880abbf2" + "source-reference": "0fa26d642994630b2ec19c090149fa56ce84c789", + "alias-pretty-version": "1.8.x-dev", + "alias-version": "1.8.9999999.9999999-dev" }, { "package": "twig/twig", "version": "dev-master", - "source-reference": "875fa010ce597edf97c04ce6490be950068e9372", - "alias-pretty-version": "1.8.x-dev", - "alias-version": "1.8.9999999.9999999-dev" + "source-reference": "0fa26d642994630b2ec19c090149fa56ce84c789" + }, + { + "package": "zend/gdata", + "version": "dev-master", + "source-reference": "827dc8696f1e5b70a4c507355877cdbab60fb3fa" } ], "packages-dev": null, diff --git a/nbproject/project.properties b/nbproject/project.properties deleted file mode 100644 index 94429c9..0000000 --- a/nbproject/project.properties +++ /dev/null @@ -1,7 +0,0 @@ -include.path=${php.global.include.path} -php.version=PHP_53 -source.encoding=UTF-8 -src.dir=. -tags.asp=false -tags.short=true -web.root=. diff --git a/nbproject/project.xml b/nbproject/project.xml deleted file mode 100644 index 50d6887..0000000 --- a/nbproject/project.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - org.netbeans.modules.php.project - - - monSymfony2 - - - diff --git a/src/Google/OauthBundle/Controller/DefaultController.php b/src/Google/OauthBundle/Controller/DefaultController.php index fe9e386..9dbfba7 100644 --- a/src/Google/OauthBundle/Controller/DefaultController.php +++ b/src/Google/OauthBundle/Controller/DefaultController.php @@ -9,10 +9,10 @@ class DefaultController extends Controller { - const domain = 'testGoogle.au'; + const domain = 'teamlogin.com'; - protected $email = 'chen.li@teamlogin.com'; - protected $password = '123456qqq'; + protected $email = 'gotcha@teamlogin.com'; + protected $password = '12345694'; protected $username = 'cp3'; protected $givenname = 'nima'; protected $familyname = 'heiA'; @@ -34,8 +34,17 @@ public function indexAction($name) // $proxiedHttpClient = new \Zend_Http_Client( 'http://www.google.com:443/', $config ); $client = \Zend_Gdata_ClientLogin::getHttpClient( $this->email, $this->password, \Zend_Gdata_Gapps::AUTH_SERVICE_NAME ); -// $service = new \Zend_Gdata_Gapps( $client, self::domain ); + $gdata = new \Zend_Gdata_Gapps( $client, self::domain ); // $service->createUser( $this->username, $this->givenname, $this->familyname, $this->password_c, $passwordHashFunction = null, $quota = null ); + $users = $gdata->getUserFeed(); + + foreach ($users as $user) + { + echo " * " . $user->login->username . ' (' . $user->name->givenName . + ' ' . $user->name->familyName . ")\n"; + } + + var_dump($gdata->isOwner('gotcha@teamlogin.com', 'hr')); return array('name' => $name); } diff --git a/src/Google/OauthBundle/Entity/User.php b/src/Google/OauthBundle/Entity/User.php new file mode 100644 index 0000000..79404d5 --- /dev/null +++ b/src/Google/OauthBundle/Entity/User.php @@ -0,0 +1,83 @@ +id; + } + + /** + * Set name + * + * @param string $name + * @return User + */ + public function setName($name) + { + $this->name = $name; + return $this; + } + + /** + * Get name + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Set pwd + * + * @param string $pwd + * @return User + */ + public function setPwd($pwd) + { + $this->pwd = $pwd; + return $this; + } + + /** + * Get pwd + * + * @return string + */ + public function getPwd() + { + return $this->pwd; + } + +} \ No newline at end of file diff --git a/src/Google/OauthBundle/Entity/User.php~ b/src/Google/OauthBundle/Entity/User.php~ new file mode 100644 index 0000000..4fecc91 --- /dev/null +++ b/src/Google/OauthBundle/Entity/User.php~ @@ -0,0 +1,28 @@ + \ No newline at end of file From 8a453aef09a6680326fec6adf36a2cdff6a57f3b Mon Sep 17 00:00:00 2001 From: symfonyluxury Date: Fri, 1 Jun 2012 17:22:58 +0800 Subject: [PATCH 3/3] initial openID --- app/AppKernel.php | 64 +++---- app/config/config.yml | 5 + app/config/routing.yml | 3 + app/config/security.yml | 104 +++++++----- composer.json | 3 +- composer.lock | 67 ++++---- php_error_log | 2 + .../Controller/DefaultController.php | 65 +++++--- .../GoogleOauthExtension.php | 4 +- .../OauthBundle/Entity/OpenIdIdentity.php | 70 ++++++++ .../OauthBundle/Entity/OpenIdIdentity.php~ | 40 +++++ .../OauthBundle/Entity/OpenIdUserManager.php | 51 ++++++ src/Google/OauthBundle/Entity/User.php | 156 +++++++++++++++--- src/Google/OauthBundle/Entity/User.php~ | 95 +++++++++-- .../config/{services.xml => service1s.xml} | 0 .../OauthBundle/Resources/config/services.yml | 17 ++ 16 files changed, 587 insertions(+), 159 deletions(-) create mode 100644 php_error_log create mode 100644 src/Google/OauthBundle/Entity/OpenIdIdentity.php create mode 100644 src/Google/OauthBundle/Entity/OpenIdIdentity.php~ create mode 100644 src/Google/OauthBundle/Entity/OpenIdUserManager.php rename src/Google/OauthBundle/Resources/config/{services.xml => service1s.xml} (100%) create mode 100644 src/Google/OauthBundle/Resources/config/services.yml diff --git a/app/AppKernel.php b/app/AppKernel.php index 6cf8e01..77a89ca 100644 --- a/app/AppKernel.php +++ b/app/AppKernel.php @@ -5,37 +5,41 @@ class AppKernel extends Kernel { - public function registerBundles() - { - $bundles = array( - new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), - new Symfony\Bundle\SecurityBundle\SecurityBundle(), - new Symfony\Bundle\TwigBundle\TwigBundle(), - new Symfony\Bundle\MonologBundle\MonologBundle(), - new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), - new Symfony\Bundle\AsseticBundle\AsseticBundle(), - new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), - new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), - new JMS\AopBundle\JMSAopBundle(), - new JMS\DiExtraBundle\JMSDiExtraBundle($this), - new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(), - new Google\OauthBundle\GoogleOauthBundle(), - new Knp\Bundle\OAuthBundle\KnpOAuthBundle(), - new Sensio\Bundle\BuzzBundle\SensioBuzzBundle(), - ); - if (in_array($this->getEnvironment(), array('dev', 'test'))) { - $bundles[] = new Acme\DemoBundle\AcmeDemoBundle(); - $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); - $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); - $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); - } + public function registerBundles() + { + $bundles = array( + new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), + new Symfony\Bundle\SecurityBundle\SecurityBundle(), + new Symfony\Bundle\TwigBundle\TwigBundle(), + new Symfony\Bundle\MonologBundle\MonologBundle(), + new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), + new Symfony\Bundle\AsseticBundle\AsseticBundle(), + new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), + new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), + new JMS\AopBundle\JMSAopBundle(), + new JMS\DiExtraBundle\JMSDiExtraBundle( $this ), + new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(), + new Google\OauthBundle\GoogleOauthBundle(), + new Knp\Bundle\OAuthBundle\KnpOAuthBundle(), + new Sensio\Bundle\BuzzBundle\SensioBuzzBundle(), + new Fp\OpenIdBundle\FpOpenIdBundle(), + ); - return $bundles; - } + if (in_array( $this->getEnvironment(), array('dev', 'test') )) + { + $bundles[] = new Acme\DemoBundle\AcmeDemoBundle(); + $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); + $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); + $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); + } + + return $bundles; + } + + public function registerContainerConfiguration(LoaderInterface $loader) + { + $loader->load( __DIR__ . '/config/config_' . $this->getEnvironment() . '.yml' ); + } - public function registerContainerConfiguration(LoaderInterface $loader) - { - $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml'); - } } diff --git a/app/config/config.yml b/app/config/config.yml index 4dd6560..33476ff 100644 --- a/app/config/config.yml +++ b/app/config/config.yml @@ -1,6 +1,7 @@ imports: - { resource: parameters.yml } - { resource: security.yml } +# - { resource: @GoogleOauthBundle/Resources/config/services.yml } framework: #esi: ~ @@ -56,3 +57,7 @@ swiftmailer: username: %mailer_user% password: %mailer_password% spool: { type: memory } + +fp_open_id: + db_driver: orm + identity_class: Google\OauthBundle\Entity\OpenIdIdentity diff --git a/app/config/routing.yml b/app/config/routing.yml index 1927059..1bb17c3 100644 --- a/app/config/routing.yml +++ b/app/config/routing.yml @@ -3,6 +3,9 @@ GoogleOauthBundle: type: annotation prefix: / +fp_openid_security: + resource: "@FpOpenIdBundle/Resources/config/routing/security.xml" + # Internal routing configuration to handle ESI #_internal: # resource: "@FrameworkBundle/Resources/config/routing/internal.xml" diff --git a/app/config/security.yml b/app/config/security.yml index ceebf09..4334bca 100644 --- a/app/config/security.yml +++ b/app/config/security.yml @@ -4,58 +4,88 @@ jms_security_extra: security: encoders: - Symfony\Component\Security\Core\User\User: plaintext +# Symfony\Component\Security\Core\User\User: plaintext + Google\OauthBundle\Entity\User: md5 role_hierarchy: ROLE_ADMIN: ROLE_USER ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] providers: - main: - oauth_entity: - class: Google\OauthBundle\Entity:User - property: name +# secured_area: +# oauth_entity: +# class: GoogleOauthBundle:User +# property: name + administrators: + entity: {class: GoogleOauthBundle:User, property: username} + openid_user_manager: + id: google.oauth.openid_user_manager - in_memory: - memory: - users: - user: { password: userpass, roles: [ 'ROLE_USER' ] } - admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] } +# in_memory: +# memory: +# users: +# user: { password: userpass, roles: [ 'ROLE_USER' ] } +# admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] } firewalls: - dev: - pattern: ^/(_(profiler|wdt)|css|images|js)/ - security: false + main: + pattern: ^/ + logout: true + anonymous: true + + fp_openid: + create_user_if_not_exists: true + required_attributes: [namePerson/friendly,contact/email,namePerson,birthDate,pref/language,contact/country/home,person/gender] + optional_attributes: [] + # options come with abstract listener + check_path: /login_check + default_target_path: /hello/wtf + provider: openid_user_manager - login: - pattern: ^/demo/secured/login$ - security: false - secured_area: - pattern: ^/secured/ - oauth: - oauth_provider: google - authorization_url: ~ - access_token_url: ~ - infos_url: ~ - username_path: user.login - client_id: 66772032914.apps.googleusercontent.com - secret: 6ITw8qAL--zt34nzAPodEAgW - scope: userinfo.profile - check_path: /secured/login_check - login_path: /secured/login - failure_path: / - - form_login: - check_path: /demo/secured/login_check - login_path: /demo/secured/login - logout: - path: /secured/logout - target: / + +# dev: +# pattern: ^/(_(profiler|wdt)|css|images|js)/ +# security: false +# +# login: +# pattern: ^/demo/secured/login$ +# security: false +# +# secured_area: +## pattern: ^/secured/ +## oauth: +## oauth_provider: google +## authorization_url: https://accounts.google.com/o/oauth2/auth +## access_token_url: https://accounts.google.com/o/oauth2/token +## infos_url: https://www.googleapis.com/oauth2/v1/userinfo +## username_path: name +## client_id: 66772032914.apps.googleusercontent.com +## secret: 6ITw8qAL--zt34nzAPodEAgW +## scope: userinfo.profile +## check_path: /secured/login_check +## login_path: /secured/login +## failure_path: / +# +# pattern: ^/demo/secured/ +# +# form_login: +# check_path: /demo/secured/login_check +# login_path: /demo/secured/login +# logout: +# path: /secured/logout +# target: / #anonymous: ~ #http_basic: # realm: "Secured Demo Area" access_control: + - { path: ^/login_openid$, role: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: ^/hello, role: IS_AUTHENTICATED_OPENID } + #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } #- { path: ^/_internal/secure, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 } + +#fp_open_id: +# db_driver: orm +# identity_class: Google\OauthBundle\Entity\OpenIdIdentity diff --git a/composer.json b/composer.json index af6e8b4..d1d2785 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,8 @@ "jms/di-extra-bundle": "1.0.*", "doctrine/data-fixtures": "*", "zend/gdata": "*", - "knplabs/knp-oauth-bundle": "*" + "knplabs/knp-oauth-bundle": "*", + "fp/openid-bundle": "dev-master" }, "scripts": { "post-install-cmd": [ diff --git a/composer.lock b/composer.lock index 39d6b66..489d0bb 100644 --- a/composer.lock +++ b/composer.lock @@ -1,5 +1,5 @@ { - "hash": "c2727b5e1bcb96db190724685281a3c5", + "hash": "645f8055d141ef7a26b816addeedd19b", "packages": [ { "package": "doctrine/common", @@ -8,22 +8,32 @@ { "package": "doctrine/data-fixtures", "version": "dev-master", - "source-reference": "f201391349f3dc6bd9c9c698927ea7c78104c461" + "source-reference": "d233d05437c1a10034867f22069b4bb0f7dc96b6" }, { "package": "doctrine/dbal", "version": "2.2.x-dev", - "source-reference": "f3effdb752519bfc7842a1005fd4cef55f7661e8" + "source-reference": "8cc129aa64a8de6447056bce20f0a274fe2a340b" }, { "package": "doctrine/doctrine-bundle", "version": "dev-master", - "source-reference": "74632539010f1f8887e8afadf41a732efce971c1" + "source-reference": "f100a7727b89ab5519ed68a72d29e75eb2c85d8b" }, { "package": "doctrine/orm", "version": "2.2.x-dev", - "source-reference": "36cac855dce4ec50f12ecc3628cd41f7801a4f1d" + "source-reference": "5f66c65c9a8d984899903b54215d0249a45b92d6" + }, + { + "package": "fp/lightopenid", + "version": "dev-master", + "source-reference": "ad14146f9c93e90699888e150427aca431dc3c18" + }, + { + "package": "fp/openid-bundle", + "version": "dev-master", + "source-reference": "1.3.0" }, { "package": "jms/aop-bundle", @@ -65,7 +75,7 @@ { "package": "kriswallsmith/buzz", "version": "dev-master", - "source-reference": "1bab480dfdb3e4687dcb60a76eaed5b1e59a20cb" + "source-reference": "5c7d0523501f02c766166b08ac98613bde0254b5" }, { "package": "monolog/monolog", @@ -74,12 +84,12 @@ { "package": "sensio/buzz-bundle", "version": "dev-master", - "source-reference": "c8c0ef65768fddfa28e41cb513b0b9b4dec04ee6" + "source-reference": "0754d7dd155efc4f85de60993571b0b6a5aaccb9" }, { "package": "sensio/distribution-bundle", "version": "dev-master", - "source-reference": "9a1b2ef970575c8b35f72ce857df2fa9aef7b470" + "source-reference": "7d75b222c8e4ead64ff82e5c9b2fa3ba71c70cf0" }, { "package": "sensio/framework-extra-bundle", @@ -94,14 +104,14 @@ { "package": "swiftmailer/swiftmailer", "version": "dev-master", - "source-reference": "9895567cec5a13d1a43db5053defbaad260c1b87" + "source-reference": "d33d54cc8a081b0b85734744936ede1ba230dd64", + "alias-pretty-version": "4.1.x-dev", + "alias-version": "4.1.9999999.9999999-dev" }, { "package": "swiftmailer/swiftmailer", "version": "dev-master", - "source-reference": "9895567cec5a13d1a43db5053defbaad260c1b87", - "alias-pretty-version": "4.1.x-dev", - "alias-version": "4.1.9999999.9999999-dev" + "source-reference": "d33d54cc8a081b0b85734744936ede1ba230dd64" }, { "package": "symfony/assetic-bundle", @@ -111,19 +121,19 @@ { "package": "symfony/monolog-bundle", "version": "dev-master", - "source-reference": "51a25acc57f4c027b28f0305976b887e2da6250a" + "source-reference": "1231105826078c117e07e57d7f658141d6147d35" }, { "package": "symfony/swiftmailer-bridge", "version": "dev-master", - "source-reference": "408eb09f5799d393ddc3d916ec3667857fb3a20d" + "source-reference": "408eb09f5799d393ddc3d916ec3667857fb3a20d", + "alias-pretty-version": "2.1.x-dev", + "alias-version": "2.1.9999999.9999999-dev" }, { "package": "symfony/swiftmailer-bridge", "version": "dev-master", - "source-reference": "408eb09f5799d393ddc3d916ec3667857fb3a20d", - "alias-pretty-version": "2.1.x-dev", - "alias-version": "2.1.9999999.9999999-dev" + "source-reference": "408eb09f5799d393ddc3d916ec3667857fb3a20d" }, { "package": "symfony/swiftmailer-bundle", @@ -133,21 +143,21 @@ { "package": "symfony/symfony", "version": "dev-master", - "source-reference": "335d4eab86362a249e4c58d28320b7b843773492" + "source-reference": "49e213ce7c6b9957433c2a64a0144c9ee4b61266", + "alias-pretty-version": "2.1.x-dev", + "alias-version": "2.1.9999999.9999999-dev" }, { "package": "symfony/symfony", "version": "dev-master", - "source-reference": "335d4eab86362a249e4c58d28320b7b843773492", + "source-reference": "adf07f1e539193ae1975348afc34ed37e1382e0a", "alias-pretty-version": "2.1.x-dev", "alias-version": "2.1.9999999.9999999-dev" }, { "package": "symfony/symfony", "version": "dev-master", - "source-reference": "18132c18b41637a05a3a13990651a4054cf0ce59", - "alias-pretty-version": "2.1.x-dev", - "alias-version": "2.1.9999999.9999999-dev" + "source-reference": "49e213ce7c6b9957433c2a64a0144c9ee4b61266" }, { "package": "twig/extensions", @@ -157,21 +167,21 @@ { "package": "twig/twig", "version": "dev-master", - "source-reference": "e28663efd83d76ee36bf9e8a790f75bd880abbf2", - "alias-pretty-version": "1.8.x-dev", - "alias-version": "1.8.9999999.9999999-dev" + "source-reference": "82e73f6bf26b2301c8d7b51807660bf9ccd43020" }, { "package": "twig/twig", "version": "dev-master", - "source-reference": "0fa26d642994630b2ec19c090149fa56ce84c789", + "source-reference": "78a935b6ffbcbd8f4e740df895f87a93347b551c", "alias-pretty-version": "1.8.x-dev", "alias-version": "1.8.9999999.9999999-dev" }, { "package": "twig/twig", "version": "dev-master", - "source-reference": "0fa26d642994630b2ec19c090149fa56ce84c789" + "source-reference": "82e73f6bf26b2301c8d7b51807660bf9ccd43020", + "alias-pretty-version": "1.8.x-dev", + "alias-version": "1.8.9999999.9999999-dev" }, { "package": "zend/gdata", @@ -192,6 +202,7 @@ "symfony/monolog-bundle": 20, "sensio/distribution-bundle": 20, "sensio/framework-extra-bundle": 20, - "sensio/generator-bundle": 20 + "sensio/generator-bundle": 20, + "fp/openid-bundle": 20 } } diff --git a/php_error_log b/php_error_log new file mode 100644 index 0000000..8aab109 --- /dev/null +++ b/php_error_log @@ -0,0 +1,2 @@ +[29-May-2012 09:23:44] PHP Fatal error: Declaration of Google\OauthBundle\Entity\OpenIdIdentity::setUser() must be compatible with that of Fp\OpenIdBundle\Model\UserIdentityInterface::setUser() in C:\wamp\www\monSymfony2\src\Google\OauthBundle\Entity\OpenIdIdentity.php on line 15 +[29-May-2012 09:23:47] PHP Fatal error: Declaration of Google\OauthBundle\Entity\OpenIdIdentity::setUser() must be compatible with that of Fp\OpenIdBundle\Model\UserIdentityInterface::setUser() in C:\wamp\www\monSymfony2\src\Google\OauthBundle\Entity\OpenIdIdentity.php on line 15 diff --git a/src/Google/OauthBundle/Controller/DefaultController.php b/src/Google/OauthBundle/Controller/DefaultController.php index 9dbfba7..749fa84 100644 --- a/src/Google/OauthBundle/Controller/DefaultController.php +++ b/src/Google/OauthBundle/Controller/DefaultController.php @@ -5,25 +5,26 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; +use Google\OauthBundle\Entity\OpenIdIdentity; class DefaultController extends Controller { - const domain = 'teamlogin.com'; - - protected $email = 'gotcha@teamlogin.com'; - protected $password = '12345694'; - protected $username = 'cp3'; - protected $givenname = 'nima'; - protected $familyname = 'heiA'; - protected $password_c = '12345694'; - - /** - * @Route("/hello/{name}") - * @Template() - */ - public function indexAction($name) - { + const domain = 'teamlogin.com'; + + protected $email = 'chen.li@teamlogin.com'; + protected $password = '123456qqq'; + protected $username = 'cp3'; + protected $givenname = 'nima'; + protected $familyname = 'heiA'; + protected $password_c = '12345694'; + + /** + * @Route("/hello/{name}") + * @Template() + */ + public function indexAction($name) + { // $clientLibPath = 'C:\wamp\www\monSymfony2\vendor\Zend\gdata\library'; // $exe = set_include_path(get_include_path().PATH_SEPARATOR.$clientLibPath); // $config = array( @@ -33,20 +34,32 @@ public function indexAction($name) // ); // $proxiedHttpClient = new \Zend_Http_Client( 'http://www.google.com:443/', $config ); - $client = \Zend_Gdata_ClientLogin::getHttpClient( $this->email, $this->password, \Zend_Gdata_Gapps::AUTH_SERVICE_NAME ); - $gdata = new \Zend_Gdata_Gapps( $client, self::domain ); + $client = \Zend_Gdata_ClientLogin::getHttpClient( $this->email, $this->password, \Zend_Gdata_Gapps::AUTH_SERVICE_NAME ); + $gdata = new \Zend_Gdata_Gapps( $client, self::domain ); // $service->createUser( $this->username, $this->givenname, $this->familyname, $this->password_c, $passwordHashFunction = null, $quota = null ); - $users = $gdata->getUserFeed(); + $users = $gdata->getUserFeed(); + + foreach ($users as $user) + { + echo " * " . $user->login->username . ' (' . $user->name->givenName . + ' ' . $user->name->familyName . ")\n"; + } + + var_dump( $gdata->isOwner( 'gotcha@teamlogin.com', 'hr' ) ); - foreach ($users as $user) - { - echo " * " . $user->login->username . ' (' . $user->name->givenName . - ' ' . $user->name->familyName . ")\n"; - } + var_dump( $this->get( 'request' )->request ); + var_dump ($this->get( 'security.context' )->getToken()->getAttributes()); + $this->getRequest()->getSession()->set( 'ca', 'ca ni ma' ); + var_dump( $this->getRequest()->getSession()->get( 'gaga' ) ); + + +// $openid = $this->getDoctrine()->getRepository( 'GoogleOauthBundle:OpenIdIdentity' ); +// $open_result = $openid->find(2); +// var_dump($open_result); + - var_dump($gdata->isOwner('gotcha@teamlogin.com', 'hr')); + return array('name' => $name); + } - return array('name' => $name); - } } diff --git a/src/Google/OauthBundle/DependencyInjection/GoogleOauthExtension.php b/src/Google/OauthBundle/DependencyInjection/GoogleOauthExtension.php index 92122e9..2ab524a 100644 --- a/src/Google/OauthBundle/DependencyInjection/GoogleOauthExtension.php +++ b/src/Google/OauthBundle/DependencyInjection/GoogleOauthExtension.php @@ -22,7 +22,7 @@ public function load(array $configs, ContainerBuilder $container) $configuration = new Configuration(); $config = $this->processConfiguration($configuration, $configs); - $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); - $loader->load('services.xml'); + $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); + $loader->load('services.yml'); } } diff --git a/src/Google/OauthBundle/Entity/OpenIdIdentity.php b/src/Google/OauthBundle/Entity/OpenIdIdentity.php new file mode 100644 index 0000000..ee86b35 --- /dev/null +++ b/src/Google/OauthBundle/Entity/OpenIdIdentity.php @@ -0,0 +1,70 @@ +id; +// } + +// /** +// * Set user +// * +// * @param Google\OauthBundle\Entity\User $user +// * @return OpenIdIdentity +// */ +// public function setUser(\Google\OauthBundle\Entity\User $user = null) +// { +// $this->user = $user; +// return $this; +// } +// +// /** +// * Get user +// * +// * @return Google\OauthBundle\Entity\User +// */ +// public function getUser() +// { +// return $this->user; +// } + +} \ No newline at end of file diff --git a/src/Google/OauthBundle/Entity/OpenIdIdentity.php~ b/src/Google/OauthBundle/Entity/OpenIdIdentity.php~ new file mode 100644 index 0000000..2dc6cbc --- /dev/null +++ b/src/Google/OauthBundle/Entity/OpenIdIdentity.php~ @@ -0,0 +1,40 @@ + \ No newline at end of file diff --git a/src/Google/OauthBundle/Entity/OpenIdUserManager.php b/src/Google/OauthBundle/Entity/OpenIdUserManager.php new file mode 100644 index 0000000..3f7abf9 --- /dev/null +++ b/src/Google/OauthBundle/Entity/OpenIdUserManager.php @@ -0,0 +1,51 @@ +identityManager = $identityManager; + $this->em = $em; + } + + public function createUserFromIdentity($identity, array $attributes = array()) + { + //put your user creation logic here + $user = new User(); + $user->setEmail( isset( $attributes['contact/email'] ) ? $attributes['contact/email'] : '' ); +// $factory = $this->get( 'security.encoder_factory' ); +// $encoder = $factory->getEncoder( $user ); +// $password = $encoder->encodePassword( 'lichenpass', $user->getSalt() ); + $user->setPassword( 'haha' ); + if ($attributes['contact/email']) + { + $username = explode( "@", $attributes['contact/email'] ); + } + $user->setUsername( $username[0] ); + + + $openid = new OpenIdIdentity(); + $openid->setIdentity( $identity ); + $openid->setAttributes( $attributes ); + $openid->setUser( $user ); + $this->em->persist( $user ); + $this->em->persist( $openid ); + $this->em->flush(); + return $user; // must always return UserInterface instance or throw an exception. + } + +} + +?> \ No newline at end of file diff --git a/src/Google/OauthBundle/Entity/User.php b/src/Google/OauthBundle/Entity/User.php index 79404d5..0c0ed63 100644 --- a/src/Google/OauthBundle/Entity/User.php +++ b/src/Google/OauthBundle/Entity/User.php @@ -2,29 +2,101 @@ namespace Google\OauthBundle\Entity; -use Doctrine\ORM\Mapping as ORM; +use Doctrine\ORM\Mapping as ORM, + Symfony\Component\Security\Core\User\UserInterface; /** * @ORM\Entity * @ORM\Table(name="user") */ -class User +class User implements UserInterface { /** - * @ORM\Id * @ORM\Column(type="integer") + * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ - protected $id; + private $id; + + /** + * @ORM\Column(type="string", length=25, unique=true) + */ + private $username; + + /** + * @ORM\Column(type="string", length=32) + */ + private $salt; + + /** + * @ORM\Column(type="string", length=40) + */ + private $password; + + /** + * @ORM\Column(type="string", length=60, unique=true) + */ + private $email; + + /** + * @ORM\Column(name="is_active", type="boolean") + */ + private $isActive; + + public function __construct() + { + $this->isActive = true; + $this->salt = md5( uniqid( null, true ) ); + } + + /** + * @inheritDoc + */ + public function getUsername() + { + return $this->username; + } + + /** + * @inheritDoc + */ + public function getSalt() + { + return $this->salt; + } - /** @ORM\Column(type="string") * */ - protected $name; + /** + * @inheritDoc + */ + public function getPassword() + { + return $this->password; + } + + /** + * @inheritDoc + */ + public function getRoles() + { + return array('ROLE_USER'); + } - /** @ORM\Column(type="string") * */ - protected $pwd; + /** + * @inheritDoc + */ + public function eraseCredentials() + { + + } - //put your code here + /** + * @inheritDoc + */ + public function equals(UserInterface $user) + { + return $this->username === $user->getUsername(); + } /** * Get id @@ -37,47 +109,83 @@ public function getId() } /** - * Set name + * Set username * - * @param string $name + * @param string $username * @return User */ - public function setName($name) + public function setUsername($username) { - $this->name = $name; + $this->username = $username; return $this; } /** - * Get name + * Set salt * - * @return string + * @param string $salt + * @return User + */ + public function setSalt($salt) + { + $this->salt = $salt; + return $this; + } + + /** + * Set password + * + * @param string $password + * @return User */ - public function getName() + public function setPassword($password) { - return $this->name; + $this->password = $password; + return $this; } /** - * Set pwd + * Set email * - * @param string $pwd + * @param string $email * @return User */ - public function setPwd($pwd) + public function setEmail($email) { - $this->pwd = $pwd; + $this->email = $email; return $this; } /** - * Get pwd + * Get email * * @return string */ - public function getPwd() + public function getEmail() + { + return $this->email; + } + + /** + * Set isActive + * + * @param boolean $isActive + * @return User + */ + public function setIsActive($isActive) + { + $this->isActive = $isActive; + return $this; + } + + /** + * Get isActive + * + * @return boolean + */ + public function getIsActive() { - return $this->pwd; + return $this->isActive; } } \ No newline at end of file diff --git a/src/Google/OauthBundle/Entity/User.php~ b/src/Google/OauthBundle/Entity/User.php~ index 4fecc91..148a5f6 100644 --- a/src/Google/OauthBundle/Entity/User.php~ +++ b/src/Google/OauthBundle/Entity/User.php~ @@ -2,27 +2,100 @@ namespace Google\OauthBundle\Entity; -use Doctrine\ORM\Mapping as ORM; +use Doctrine\ORM\Mapping as ORM, + Symfony\Component\Security\Core\User\UserInterface; /** * @ORM\Entity * @ORM\Table(name="user") */ -class User +class User implements UserInterface { /** - * @ORM\Id * @ORM\Column(type="integer") + * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ - protected $id; - /** @ORM\Column(type="string") **/ - protected $name; - /** @ORM\Column(type="string") **/ - protected $pwd; + private $id; + + /** + * @ORM\Column(type="string", length=25, unique=true) + */ + private $username; + + /** + * @ORM\Column(type="string", length=32) + */ + private $salt; + + /** + * @ORM\Column(type="string", length=40) + */ + private $password; + + /** + * @ORM\Column(type="string", length=60, unique=true) + */ + private $email; + + /** + * @ORM\Column(name="is_active", type="boolean") + */ + private $isActive; + + public function __construct() + { + $this->isActive = true; + $this->salt = md5( uniqid( null, true ) ); + } - //put your code here -} + /** + * @inheritDoc + */ + public function getUsername() + { + return $this->username; + } + + /** + * @inheritDoc + */ + public function getSalt() + { + return $this->salt; + } + + /** + * @inheritDoc + */ + public function getPassword() + { + return $this->password; + } + + /** + * @inheritDoc + */ + public function getRoles() + { + return array('ROLE_USER'); + } + + /** + * @inheritDoc + */ + public function eraseCredentials() + { + + } + + /** + * @inheritDoc + */ + public function equals(UserInterface $user) + { + return $this->username === $user->getUsername(); + } -?> \ No newline at end of file +} \ No newline at end of file diff --git a/src/Google/OauthBundle/Resources/config/services.xml b/src/Google/OauthBundle/Resources/config/service1s.xml similarity index 100% rename from src/Google/OauthBundle/Resources/config/services.xml rename to src/Google/OauthBundle/Resources/config/service1s.xml diff --git a/src/Google/OauthBundle/Resources/config/services.yml b/src/Google/OauthBundle/Resources/config/services.yml new file mode 100644 index 0000000..d89742c --- /dev/null +++ b/src/Google/OauthBundle/Resources/config/services.yml @@ -0,0 +1,17 @@ +parameters: + google_oauth.example.class: Google\OauthBundle\Example + doctrine_orm_entity_manager: Doctrine\ORM\EntityManager + +services: +# google_oauth.example: +# class: %google_oauth.example.class% +# arguments: [@service_id, plain_value, %parameter_name%] + +# entity_manager: +# class: Doctrine\ORM\EntityManager + + google.oauth.openid_user_manager: + class: Google\OauthBundle\Entity\OpenIdUserManager + arguments: [@doctrine.orm.default_entity_manager, @fp_openid.identity_manager] + +