Missing Emails
Some providers (such as GitHub) don't always return an email address when authenticating with them. To attempt to solve this problem, Socialstream offers the ability to generate an email for any user this happens with. This email address is a unique combination of the
user_id
returned after authentication and the name of the provider used to authenticate with, coupled with your applications domain name:$email = "{$user->id}@{$provider}".config('app.domain');
For example, for a GitHub user with the ID of 758273, the resulting email address would be
[email protected]
If you wish to customise how your application handles missing email, Socialstream publishes a
ResolveSocialiteUser.php
file containing this logic in your applications app/Actions/Socialstream
directory:<?php
namespace App\Actions\Socialstream;
use JoelButcher\Socialstream\Contracts\ResolvesSocialiteUsers;
use JoelButcher\Socialstream\Socialstream;
use Laravel\Socialite\Facades\Socialite;
class ResolveSocialiteUser implements ResolvesSocialiteUsers
{
/**
* Resolve the user for a given provider.
*
* @param string $provider
* @return \Laravel\Socialite\Contracts\User
*/
public function resolve($provider)
{
$user = Socialite::driver($provider)->user();
if (Socialstream::generatesMissingEmails()) {
$user->email = $user->getEmail() ?? ("{$user->id}@{$provider}".config('app.domain'));
}
return $user;
}
}
To turn on this feature add the following to applications
socialstream.php
config file:'features' => [
Features::generateMissingEmails(),
],
Last modified 7mo ago