Use the SocialConnect-Library to create an absolute lightweight Authentication-Layer for your ZendFramework3-App
You can login with all supported SocialNetwork-Logins. The network and a user-object holding id, name, mail and language will be stored in the session. If you already have SocialNetwork users in your application you can use these to authorize your users.
In your application.conf-file add the Module to the list of modules
Copy the file vendor/org_heigl/hybridauth/config/autoload/module-orgHeiglHybridAuth.local.php
to your
applications config/autoload
-directory and adapt as appropriate. That might look like this:
return [
'OrgHeiglHybridAuth' => [
'socialAuth' => [
'redirectUri' => 'http://localhost:8080/authenticate/backend',
'provider' => [
'twitter' => [
'applicationId' => '',
'applicationSecret' => '',
'scope' => ['email'],
],
'github' => [
'applicationId' => '',
'applicationSecret' => '',
'scope' => ['email'],
],
],
],
'session_name' => 'orgheiglhybridauth',
'backend' => array('Twitter'), // could also be ['Twitter', 'Facebook']
// 'link' => '<a class="hybridauth" href="https://github.com/heiglandreas/HybridAuth/blob/master/%2$s">%1$s</a>', // Will be either inserted as first parameter into item or simply returned as complete entry
// 'item' => '<li%2$s>%1$s</li>',
// 'itemlist' => '<ul%2$s>%1$s</ul>',
// 'logincontainer' => '<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">%1$s<b class="caret"></b></a>%2$s</li>',
// 'logoffcontainer' => '<li>%1$s</li>',
// 'logoffstring' => 'Logout %1$s',
// 'loginstring' => 'Login%1$s',
// 'listAttribs' => null, // Will be inserted as 2nd parameter into item
// 'itemAttribs' => null, // Will be inserted as 2nd parameter into itemlist
]
];
Add this snippet to create a login-link
<?php
$provider = "Twitter";
echo $this->hybridauthinfo($provider);
?>
After login you can access the user-info the following way:
$config = $this->getServiceLocator()->get('Config');
$config = $config['OrgHeiglHybridAuth'];
$hybridAuth = new Hybridauth($config['hybrid_auth']);
$token = $this->getServiceLocator()->get('OrgHeiglHybridAuthToken');
if (! $token->isAuthenticated()) {
echo 'No user logged in';
}
/** @var OrgHeiglHybridAuth\UserToken $user */
echo $token->getDisplayName(); // The name of the logged in user
echo $token->getUID(); // The internal UID of the used service
echo $token->getMail(); // The mail-address the service provides
echo $token->getLanguage(); // The language the service provides for the user
echo $token->getService() // Should print out the Name of the service provider.
This module is best installed using composer. For that, run the following command to add the library to your app:
# Require the hybridauth-module
composer require org_heigl/hybridauth
If you want to use more than one authentication-provider you should instead run this:
# Require the hybridauth-module
composer require org_heigl/hybridauth:dev-feature/multipleProviders
So you want it the hard way? Sure you don't want to give composer a try?
Then go figure it out. You might want to ask on the gitter channel or on IRC (freenode) but expect a reply along the line "use composer!"
Note that you can either download the zip-files of the libraries or use the git submodule command to clone the
libs into the appropriate folders. You should not simply use git clone <library> <target>
as that might
interfere with your local git-repo (when you use one). The submodule approach makes Lib-updates easier bun can
end in a lot of headaches due to the caveats of the submodule-command! I can not provide you with support in that case!
Alternatively you can fork the project at github.
There is an example-implementation at https://hybridauth.heigl.org - The sourcecode is on github.