Laravel authentication using Google Datastore
- Laravel >= 5.5.0
- Composer
$ composer require egs33/laravel-datastore-auth
$ php artisan vendor:publish --provider="DatastoreAuth\DatastoreAuthServiceProvider"
Set authentication driver to datastore
.
For example, in config/auth.php
'providers' => [
'users' => [
'driver' => 'datastore'
]
],
Then it can use same as Laravel authentication
$userConfig = [
'name' => 'hoge',
'email' => '[email protected]',
'password' => 'secret'
];
$userProvider = Auth::createUserProvider('users');
$userProvider->create($userConfig);
// or
DatastoreAuth::create($userConfig);
Use Auth
facade.
Same as Laravel authentication
$user = Auth::user(); // get current user
$isLoggedIn = Auth::check();
$user['name'] = 'new-name';
$user['group'] = 'new-group';
$user->save();
Config file is config/datastore_auth.php
Default is
[
'client_config' => [],
'kind' => 'users',
'cache' => [
'isEnabled' => false,
'keyPrefix' => \DatastoreAuth\DatastoreUserProvider::class . ':',
'ttl' => null,
]
]
client_config
is passed to constructor of Google\Cloud\Datastore\DatastoreClient
.
Please see document of google/cloud-datastore
.
kind
is kind name of user table.
The cache is only used when fetch user by id.
Cache storage is specified by config/cache.php
in your laravel project.
ttl
is expressed in seconds regardless of the laravel version.
If it's null, no expire.
When DatastoreUserProvider#resetPassword
, DatastoreUserProvider#save
, DatastoreUserProvider#updateRememberToken
or User#save
is called, cache is cleared.
But you can call DatastoreUserProvider#deleteCache
if necessary.