-
-
Notifications
You must be signed in to change notification settings - Fork 191
Description
Is there an existing issue for this?
- I have searched the existing issues
Environment
- OS: Ubuntu 20.04
- PHP: 8.4.17
- LDAP Server: openldapPLA Code
Docker hub
PLA Version
v2.3.9-rel-188c1ea4
Current Behavior
I encountered the following error when I tried to change the password using a regular cn account
After changing the password, the current session still uses the old password. You need to delete the current session information and log in again to use the new password.
LdapRecord\Auth\BindException - Internal Server Error
Invalid credentials
PHP 8.4.17
Laravel 12.49.0
17.1.2.2:8081
Stack Trace
0 - vendor/directorytree/ldaprecord/src/LdapRecordException.php:19
1 - vendor/directorytree/ldaprecord/src/Auth/Guard.php:94
2 - vendor/directorytree/ldaprecord/src/Auth/Guard.php:127
3 - vendor/directorytree/ldaprecord/src/Connection.php:220
4 - vendor/directorytree/ldaprecord/src/Connection.php:354
5 - vendor/directorytree/ldaprecord/src/Connection.php:229
6 - vendor/directorytree/ldaprecord/src/Connection.php:305
7 - vendor/directorytree/ldaprecord/src/Query/Builder.php:576
8 - vendor/directorytree/ldaprecord/src/Query/Builder.php:362
9 - vendor/directorytree/ldaprecord/src/Query/Builder.php:562
10 - vendor/directorytree/ldaprecord/src/Query/Builder.php:364
11 - vendor/directorytree/ldaprecord/src/Query/Builder.php:201
12 - vendor/directorytree/ldaprecord/src/Query/Builder.php:218
13 - vendor/directorytree/ldaprecord/src/Query/Builder.php:200
14 - vendor/directorytree/ldaprecord/src/Query/Builder.php:652
15 - vendor/directorytree/ldaprecord/src/Query/Model/Builder.php:104
16 - vendor/directorytree/ldaprecord/src/Query/Builder.php:665
17 - vendor/directorytree/ldaprecord/src/Query/Model/Builder.php:112
18 - app/Classes/LDAP/Server.php:274
19 - app/Classes/LDAP/Server.php:43
20 - app/Http/Middleware/SwapinAuthUser.php:47
21 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
22 - app/Http/Middleware/AllowAnonymous.php:26
23 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
24 - app/Http/Middleware/AcceptLanguage.php:23
25 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
26 - vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:50
27 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
28 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:87
29 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
30 - vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:48
31 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
32 - vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:120
33 - vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:63
34 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
35 - vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:36
36 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
37 - vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:74
38 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
39 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:137
40 - vendor/laravel/framework/src/Illuminate/Routing/Router.php:821
41 - vendor/laravel/framework/src/Illuminate/Routing/Router.php:800
42 - vendor/laravel/framework/src/Illuminate/Routing/Router.php:764
43 - vendor/laravel/framework/src/Illuminate/Routing/Router.php:753
44 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:200
45 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180
46 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21
47 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php:31
48 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
49 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21
50 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php:51
51 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
52 - vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php:27
53 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
54 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php:109
55 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
56 - vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php:61
57 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
58 - vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php:58
59 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
60 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php:22
61 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
62 - vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php:26
63 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:219
64 - vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:137
65 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:175
66 - vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:144
67 - vendor/laravel/framework/src/Illuminate/Foundation/Application.php:1220
68 - public/index.php:17
Request
GET /
Headers
- host: 17.1.2.2:8081
- connection: keep-alive
- cache-control: max-age=0
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36
- accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7
- accept-language: en-US,en;q=0.9,zh-Hans;q=0.8,zh;q=0.7
- cookie: XSRF-TOKEN=laravel_session=
- upgrade-insecure-requests: 1
- referer: http://17.1.2.2:8081/entry/update/pending
- accept-encoding: gzip, deflate
Route Context
controller: App\Http\Controllers\HomeController@home
route name: generated::v6KVb6txRFA4FM5J
middleware: web, App\Http\Middleware\AllowAnonymous
Route Parameters
No route parameter data available.
Database Queries
No database queries detected.
I tried to fix it by modifying the code
Subject: [PATCH] fix Invalid credentials
app/Http/Controllers/EntryController.php | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/app/Http/Controllers/EntryController.php b/app/Http/Controllers/EntryController.php
index 116e36b..ced9c28 100644
--- a/app/Http/Controllers/EntryController.php
+++ b/app/Http/Controllers/EntryController.php
@@ -451,8 +451,24 @@ class EntryController extends Controller
->withInput()
->with('note',__('No attributes changed'));
-
$isModifyingOwnPassword = false; -
if (isset($dirty['userpassword']) && session()->has('username_encrypt')) { -
$currentUserDn = Crypt::decryptString(session()->get('username_encrypt')); -
if ($currentUserDn === $dn) { -
$isModifyingOwnPassword = true; -
} -
} -
try { $o->update($request->except(['_token','dn'])); -
if ($isModifyingOwnPassword) { -
\Log::debug('User changed their own password, invalidating session', ['dn' => $dn]); -
session()->invalidate(); -
return Redirect::to('/login') -
->with('success', __('Password changed successfully. Please log in with your new password.')); -
} } catch (InsufficientAccessException $e) { $request->flash();
--
Expected Behavior
After a regular user changes the password, they can load the page normally.
Steps To Reproduce
Log in with a regular CN account and then change the password