PHPackages                             timefrontiers/php-session - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. timefrontiers/php-session

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

timefrontiers/php-session
=========================

Modern PHP session manager with authentication state, access control, and CSRF protection

v1.0.4(3mo ago)026MITPHPPHP &gt;=8.1

Since Apr 16Pushed 3mo agoCompare

[ Source](https://github.com/timefrontiers/php-session)[ Packagist](https://packagist.org/packages/timefrontiers/php-session)[ Docs](https://github.com/timefrontiers/php-session)[ RSS](/packages/timefrontiers-php-session/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (5)Dependencies (5)Versions (6)Used By (0)

TimeFrontiers PHP Session
=========================

[](#timefrontiers-php-session)

Modern PHP session manager with authentication state, access control, CSRF protection, and geolocation.

Installation
------------

[](#installation)

```
composer require timefrontiers/php-session
```

Features
--------

[](#features)

- Secure session handling with HTTPOnly, SameSite cookies
- User authentication state management
- Access rank/group based authorization
- CSRF token generation and validation
- Flash messages
- IP geolocation integration
- PSR-3 logger support

Quick Start
-----------

[](#quick-start)

```
use TimeFrontiers\Session;
use TimeFrontiers\AccessRank;

// Start session
$session = new Session();

// Check if logged in
if (!$session->isLoggedIn()) {
  // Show login form
}

// Access user info
echo $session->id();           // e.g. 1
echo $session->name;           // uniqueid e.g. "01234567890"
echo $session->access_rank();  // 4 (MODERATOR)
echo $session->access_group(); // AccessGroup::MODERATOR

// Full user object
$user = $session->user();
echo $user->surname;

// Geolocation
$loc = $session->location();
echo $loc?->country;
```

Authentication
--------------

[](#authentication)

### Login

[](#login)

```
// User object from your database — must have 'id' and 'uniqueid'
$user = (object)[
  'id'           => 123,
  'uniqueid'     => '01234567890',
  'name'         => 'John',
  'surname'      => 'Doe',
  'access_group' => AccessGroup::MODERATOR,
  'access_rank'  => AccessRank::MODERATOR,
];

// Login with 30-minute session (default)
$session->login($user);

// Custom session lifetime (2 hours)
$session->login($user, session_lifetime: 7200);
```

> **Note:** "Remember me" / persistent login requires storing a token in your database and is intentionally left to the application layer.

### Logout

[](#logout)

```
$session->logout();
```

### Check Authentication

[](#check-authentication)

```
if ($session->isLoggedIn()) {
  $userId = $session->getUserId();  // or $session->id()
  $name   = $session->name;          // uniqueid of logged-in user
  $user   = $session->user();       // full user object
}
```

Access Control
--------------

[](#access-control)

```
use TimeFrontiers\AccessRank;

// Check rank
if ($session->hasRank(AccessRank::MODERATOR)) {
  // Can moderate
}

// Check group
if ($session->inGroup(AccessGroup::ADMIN)) {
  // Is admin
}

// Convenience methods
if ($session->isStaff()) { }     // MODERATOR or higher
if ($session->isTechnical()) { } // DEVELOPER or higher
if ($session->isAdmin()) { }     // ADMIN or higher

// Via getters
if ($session->access_rank() >= AccessRank::DEVELOPER->value) {
  // Show debug info
}
```

CSRF Protection
---------------

[](#csrf-protection)

### Generate Token

[](#generate-token)

```
// In your form
$token = $session->generateCSRFToken('contact_form');
```

```
