Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions src/PossessionManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,5 @@ protected function logoutAndDestroySession ( $guard = null ): void
} else {
Auth::logout();
}

Session::invalidate();
Session::regenerateToken();
Session::flush();
}
}
61 changes: 61 additions & 0 deletions tests/SessionDataTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php

namespace Verseles\Possession\Tests;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use Verseles\Possession\Facades\Possession;
use Verseles\Possession\Traits\ImpersonatesUsers;

class SessionDataUserStub extends Authenticatable
{
use ImpersonatesUsers;

protected $guarded = [];
protected $table = 'users';

public function canPossess(): bool
{
return true;
}
}

class SessionDataTest extends TestCase
{
protected function getEnvironmentSetUp($app)
{
$app['config']->set('possession.user_model', SessionDataUserStub::class);
$app['config']->set('possession.admin_guard', 'web');
$app['config']->set('possession.session_keys.original_user', 'possession_original_user');
$app['config']->set('possession.session_keys.impersonation_guard', 'possession_impersonation_guard');

// Need to define the provider explicitly as it defaults to standard User class
$app['config']->set('auth.providers.users.model', SessionDataUserStub::class);

$app['db']->connection()->getSchemaBuilder()->create('users', function ($table) {
$table->increments('id');
$table->string('name');
$table->string('email');
$table->string('password');
$table->timestamps();
});
}

public function test_it_retains_session_data_when_possessing_and_unpossessing()
{
$admin = SessionDataUserStub::create(['name' => 'Admin', 'email' => 'admin@example.com', 'password' => 'password']);
$user1 = SessionDataUserStub::create(['name' => 'User 1', 'email' => 'user1@example.com', 'password' => 'password']);

Auth::login($admin);
Session::put('my_custom_data', 'foo');

Possession::possess($user1);

$this->assertEquals('foo', Session::get('my_custom_data'));

Possession::unpossess();

$this->assertEquals('foo', Session::get('my_custom_data'));
}
}