Skip to content

Commit f4a1b22

Browse files
committed
[yggdrasil-connect] revoke tokens issued to PA client after user password changes
1 parent bc0192d commit f4a1b22

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

plugins/yggdrasil-connect/bootstrap.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@
1515
use LittleSkin\YggdrasilConnect\Console\FixUUIDTable;
1616
use LittleSkin\YggdrasilConnect\Models\AccessToken;
1717
use LittleSkin\YggdrasilConnect\Models\UUID;
18+
use LittleSkin\YggdrasilConnect\Observers\UserObserver;
1819
use LittleSkin\YggdrasilConnect\Scope;
1920

2021
require __DIR__.'/src/Utils/helpers.php';
2122

2223
return function (Dispatcher $events, Filter $filter, Request $request) {
2324
Passport::personalAccessTokensExpireIn(now()->addSeconds(intval(Option::get('ygg_token_expire_1'))));
25+
User::observe(UserObserver::class);
2426

2527
if (env('YGG_VERBOSE_LOG')) {
2628
config(['logging.channels.ygg' => [

plugins/yggdrasil-connect/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "yggdrasil-connect",
3-
"version": "6.1.1",
3+
"version": "6.1.2",
44
"title": "Yggdrasil Connect",
55
"description": "LittleSkin\\YggdrasilConnect::config.plugin-description",
66
"author": "LittleSkin",
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace LittleSkin\YggdrasilConnect\Observers;
4+
5+
use App\Models\User;
6+
use App\Services\Facades\Option;
7+
use Laravel\Passport\Token;
8+
9+
class UserObserver {
10+
public function updated(User $user) {
11+
// Invalidate tokens when the user's password is changed
12+
if($user->isDirty('password')) {
13+
Token::where([
14+
['user_id', '=', $user->uid],
15+
['client_id', '=', intval(env('PASSPORT_PERSONAL_ACCESS_CLIENT_ID'))],
16+
['revoked', '=', false],
17+
['created_at', '>', now()->subSeconds(Option::get('ygg_token_expire_2'))],
18+
])->get()->each(function (Token $token) {
19+
$token->revoke();
20+
});
21+
}
22+
}
23+
}

0 commit comments

Comments
 (0)