Skip to content

SessionTokenData DTO Reference

The ThingsTelemetry\Traccar\Dto\SessionTokenData represents a session authentication token.

Overview

Session tokens are long-lived authentication credentials that can be used in place of passwords. They are useful for mobile applications, external integrations, or any scenario where storing user passwords is undesirable.

Creating SessionTokenData

php
use ThingsTelemetry\Traccar\Facades\Session;

// Generate a new token
$tokenData = Session::generateToken();

Properties

tokenstring

The authentication token string. This token can be used as a password substitute when creating sessions.

php
$tokenData = Session::generateToken();
$token = $tokenData->token;
// e.g., "abc123xyz789..."

CAUTION

Treat tokens as sensitive credentials. Store them securely and never expose them in logs or error messages.

Methods

fromString(string $token): self

Factory method to create a SessionTokenData from a plain token string.

php
use ThingsTelemetry\Traccar\Dto\SessionTokenData;

$tokenData = SessionTokenData::fromString('abc123xyz789...');

toArray(): array

Serialize the token to an associative array.

php
$tokenData = Session::generateToken();
$array = $tokenData->toArray();
// ['token' => 'abc123xyz789...']

Usage Examples

Generate and Store Token

php
use ThingsTelemetry\Traccar\Facades\Session;

// Generate token with 30-day expiration
$tokenData = Session::generateToken(now()->addDays(30));

// Store in database (encrypted)
$userToken = UserToken::create([
    'user_id' => auth()->id(),
    'token' => encrypt($tokenData->token),
    'expires_at' => now()->addDays(30),
]);

// Return only the token ID to client
return response()->json([
    'token_id' => $userToken->id,
]);

Authenticate with Token

php
use ThingsTelemetry\Traccar\Facades\Session;

// User logs in with token instead of password
$token = decrypt($storedToken);

$user = Session::create(
    email: $userEmail,
    password: $token  // Token acts as password
);

Revoke Token

php
use ThingsTelemetry\Traccar\Facades\Session;

// When user logs out or token is compromised
Session::revokeToken($tokenData->token);

Security Best Practices

  1. Encrypt at Rest: Always encrypt tokens when storing in databases
  2. Set Expiration: Don't create infinite tokens unless absolutely necessary
  3. Secure Transmission: Only transmit tokens over HTTPS
  4. Token Rotation: Implement periodic token rotation for enhanced security
  5. Revoke Unused Tokens: Clean up tokens when no longer needed
  6. Access Control: Restrict token generation to authenticated users only
php
// Good: Encrypt before storing
$encrypted = encrypt($tokenData->token);

// Good: Set reasonable expiration
$tokenData = Session::generateToken(now()->addDays(30));

// Good: Revoke when done
Session::revokeToken($tokenData->token);

Released under the MIT License.