Laravel AT Protocol Client (alpha & unstable)
1<?php
2
3namespace SocialDept\AtpClient\Providers;
4
5use Illuminate\Support\Facades\Session;
6use SocialDept\AtpClient\Contracts\CredentialProvider;
7use SocialDept\AtpClient\Data\AccessToken;
8use SocialDept\AtpClient\Data\Credentials;
9
10class SessionCredentialProvider implements CredentialProvider
11{
12 protected string $prefix = 'atp.credentials.';
13
14 public function getCredentials(string $did): ?Credentials
15 {
16 return Session::get($this->key($did));
17 }
18
19 public function storeCredentials(string $did, AccessToken $token): void
20 {
21 Session::put($this->key($did), $this->toCredentials($token));
22 }
23
24 public function updateCredentials(string $did, AccessToken $token): void
25 {
26 $this->storeCredentials($did, $token);
27 }
28
29 public function removeCredentials(string $did): void
30 {
31 Session::forget($this->key($did));
32 }
33
34 protected function key(string $did): string
35 {
36 return $this->prefix.$did;
37 }
38
39 protected function toCredentials(AccessToken $token): Credentials
40 {
41 return new Credentials(
42 did: $token->did,
43 accessToken: $token->accessJwt,
44 refreshToken: $token->refreshJwt,
45 expiresAt: $token->expiresAt,
46 handle: $token->handle,
47 issuer: $token->issuer,
48 scope: $token->scope,
49 authType: $token->authType,
50 );
51 }
52}