Skip to content

[Bug]: When I try to change the password as a regular user, it reports an Internal Server Error Invalid credentials #452

@jojo578578

Description

@jojo578578

Is there an existing issue for this?

  • I have searched the existing issues

Environment

- OS: Ubuntu 20.04
- PHP: 8.4.17
- LDAP Server: openldap

PLA 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

Relevant log output

Anything else?

0001-fix-Invalid-credentials(2).patch

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions