Code Monkey home page Code Monkey logo

flarum-ext-auth-ldap's Introduction

Flarum LDAP authentication

This extension enables users to log into Flarum through LDAP.

How to install

composer require tituspijean/flarum-ext-auth-ldap and activate it in Flarum's administration panel.

Languages

This extension is translated in French and English.

Configuration

Screenshot

  • LDAP server name: sets the end of the Login with link at the top of the forum: image
  • LDAP domains or server IP adresses (comma separated): list of LDAP servers to use.
  • Base DNs (semicolon separated): list of base DNs to search users in.
  • Filter to apply (optional): Additional filtering, for example require users to be in a specific group.
  • Port: LDAP server port
  • Follow referrals, Use SSL, Use TLS: LDAP server settings
  • LDAP admin distinguished name and LDAP admin password (leave empty for anonymous binding) : if needed, specific the DN and password of the user allowed to perform searches in the LDAP server.
  • LDAP user search fields (comma separed): list of the LDAP fields used to look for the users. The extension will try all combinations of base DNs and search fields.
  • LDAP user mail field: name of the field containing the user's email address. The extension will use the first email found for the user's registration in Flarum.
  • LDAP username field: name of the field containing the username that uniquely identifies the user. Can be uid or sAMAccountname, for example.
  • Disable Flarum login and only use LDAP authentication: merely hides the standard login links and buttons. Users can still use the standard login method through the API.

Development (With docker)

  • Clone the repository
  • Copy docker.conf : cp docker/.docker.conf.dist docker/.docker.conf
  • Change UID in docker/.docker.conf if needed.
  • Start dockers : ./install.sh install
  • Open http://flarum.localhost
    • MySQL host: mysql
    • MySQL DB: flarum
    • MySQL user: flarum
    • MySQL password: flarum
  • Go to Admin panel and enable extension
    • LDAP domain: ldap
    • LDAP DN: dc=flarum,dc=com
    • Check connect with Ldap admin
    • LDAP admin: cn=admin,dc=flarum,dc=com
    • LDAP admin password: flarum
    • LDAP search user fields: cn,mail
    • LDAP user mail: mail
    • LDAP user username: cn
  • Add and user on : http://localhost:8081/
    • Login: cn=admin,dc=flarum,dc=com
    • Password: flarum
    • Create a new entry -> Default -> inetOrgPerson

flarum-ext-auth-ldap's People

Contributors

codazzis avatar dependabot[bot] avatar stormfox2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

flarum-ext-auth-ldap's Issues

Display proper failed login alert

Right now, a wrong password, or a "user not found" error will trigger the same cryptic "An error occurred while trying to load this page. "

Displaying a proper alert like the standard authentication method would be better.

ldap query doesn't seems to look into subdirectories

Hey again !

So I'm just at a few steps from a perfect ldap config of flarum thanks to your plugin !
My last problem is that some of my users are registered into specific organizations (ou=people,o=foo,dc=foo,dc=org).

To login with those users, I have to adjust the base_dn like this : ou=people,o=foo,dc=foo,dc=org because if I attempt to connect with my normal base_dn (ou=people,dc=foo,dc=org), ldap queries doesn't search recursively. I imagine it's a simple parameter in the ldap module you are using but maybe am I wrong. According to several threads across the web, this seems to be a "scope" issue but I'm not sure.

Summary :
user A is uid=userA,ou=people,o=foo,dc=foo,dc=org
user B is uid=userB,ou=people,dc=foo,dc=org

Both of them are in my filtered group (and the filter is working fine)

But user A can't login if base_dn is not ou=people,o=foo,dc=foo,dc=org
And user B can't login if base_dn is not ou=people,dc=foo,dc=org

Hope it's not too complicated...

`memberof` filter problem

Hey @tituspijean !

Here is a first issue I have with my new LDAP config on beta-12.

My Base_dn is memberof=cn=talk,ou=groups,dc=foo,dc=foo

My ldap receives a bad request with the second = of the memberOf filter, which is interpreted as a \3D (?!) :

cannot find entry: "uid=ornano,memberOf=cn\3Dtalk,ou=groups,dc=foo,dc=foo

Without memberOf, if I give others basic filters, it's working fine. But I will have to apply a filter, as I want that only users who are members of our talk ldap group can access to flarum.

Thanks again !

Logging in fails

Hello,

I have installed and configured this extension, but when I try to login via LDAP I get the following error:

image

It would also be nice if the LDAP server name gets separated from the actual LDAP server that needs to be used, when you fill in an IP that is being used with Log in with 1.2.3.4

image

Allow to alter how the DN is built (do not only rely on uid)

Hi ! Thank you for this extension, I'm configuring a flarum instance and ldap is the only way my users will log in.

I tried to configure the extension, but all my attempts are failing with no error. Only this in the firefox console :

TypeError: this.ldaplogin(...) is undefined LDAPLogInModal.js:165:9
    onsubmit LDAPLogInModal.js:165
    onsubmit self-hosted:1019
    L/t[e]< mithril.js:1286

My access.log :

POST /auth/ldap HTTP/1.1" 500

php-ldap is installed, I have no other clue...

Error popup when entering wrong credentials with debug=false

Describe the bug
A popup with An error occured while trying to load this page. with the url https://forum.host.tld/auth/ldap is shown when the user enters invalid credentials.
This just happens when the forum is in debug=false.
When putting it in debug=true, this popup correctly shows LDAP error: (Authentication failed...[stacktrace].

Expected behavior
No popup and a message saying Invalid credentials.

Versions

  • Flarum version: beta.13
  • Using, or trying to install LDAP extension version/branch: v0.1.0-beta.13-5

To Reproduce

  • Install v0.1.0-beta.13-5
  • configure your AD
  • have debug=false in flarum
  • login with wrong credentials

Logs
When putting the forum in debug mode, it correctly shows:

LDAP error: (Authentication failed with these login and password.

Improve internationalization

Reference post on the forum:

Hope to change the logic of this field:

.tituspijean-auth-ldap.forum.log_in_with: 'Login With'

Current Logic:
Login with

Optimized Logic:
Login With {serverName}

After optimized, this field can be translated into other languages that are logically different from English. For example, in
Chinese, the order of the field is as below:
{serverName} 登录

Reference documentation item for including variables in translations:

You can include variables in translations. As an example, let's look at the code that creates the first item in Flarum's search results dropdown. This button quotes the search query entered by the user — information that is passed to the translator along with the translation key, as an additional parameter:

{LinkButton.component({ icon: 'search', children: app.translator.trans('all_discussions_button', {query}), href: app.route('index', {q: query}) })}

A matching placeholder in the translation lets the translator know where it should insert the variable:
all_discussions_button: 'Search all discussions for "{query}"'
Since curly brackets are used to denote the placeholder, the translation as a whole needs to be enclosed in quotation marks. Normally, double quotes would be used; but since this particular translation is using double quotes to set off the search query, the single-quote rule takes precedence.

MethodNotAllowedException on /auth/ldap route

When I install this extension, I get a 405 error on the route /auth/ldap when I try to test my LDAP settings and log in.

Using debug mode still doesn't alleviate the problem and gives no information.

Any help is appreciated with this problem.

Provide an example config

I'm trying to incorporate this plugin on my company but I can't seem to make it work and the placeholder info isn't helping at all, could you please elaborate more on it?

Not compatible with beta.12

Hi,
I just wanted to install this in my flarum instance just to see that it requires flarum/core >=0.1.0-beta.10 <0.1.0-beta.12 so the composer won't run.
Can I somehow force the installation to test this or can you release a new version?

Default Login not disabled

If not logged in, clicking on reply or posting discussion will bring up the default login screen and not this plugins login screen.

beta 14 compatibility

Hey there !

Do you have any plans concerning compatibility with beta 14 ?

Regards,

Ldap search error

hi i got error.

[2020-04-20 08:53:11] production.ERROR: LdapRecord\LdapRecordException: LDAP error: (ErrorException: ldap_search(): Search: Operations error in C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Ldap.php:476
Stack trace:
#0 [internal function]: LdapRecord\Ldap->LdapRecord\{closure}(2, 'ldap_search(): ...', 'C:\\xampp\\htdocs...', 476, Array)
#1 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Ldap.php(476): ldap_search(Resource id #494, 'DC=istinye,DC=e...', '(sn=\\6f\\67\\75\\7...', Array, false, 1, 0, NULL)
#2 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Ldap.php(881): LdapRecord\Ldap->LdapRecord\{closure}()
#3 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Ldap.php(477): LdapRecord\Ldap->executeFailableOperation(Object(Closure))
#4 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Query\Builder.php(528): LdapRecord\Ldap->search('DC=istinye,DC=e...', '(sn=\\6f\\67\\75\\7...', Array, false, 1)
#5 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Connection.php(247): LdapRecord\Query\Builder->LdapRecord\Query\{closure}(Object(LdapRecord\Ldap))
#6 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Connection.php(304): LdapRecord\Connection->runOperationCallback(Object(Closure))
#7 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Connection.php(231): LdapRecord\Connection->tryAgainIfCausedByLostConnection(Object(LdapRecord\LdapRecordException), Object(Closure))
#8 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Query\Builder.php(530): LdapRecord\Connection->run(Object(Closure))
#9 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Query\Builder.php(395): LdapRecord\Query\Builder->run('(sn=\\6f\\67\\75\\7...')
#10 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Query\Builder.php(500): LdapRecord\Query\Builder->LdapRecord\Query\{closure}()
#11 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Query\Builder.php(398): LdapRecord\Query\Builder->getCachedResponse('(sn=\\6f\\67\\75\\7...', Object(Closure))
#12 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Query\Builder.php(221): LdapRecord\Query\Builder->query('(sn=\\6f\\67\\75\\7...')
#13 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Query\Builder.php(243): LdapRecord\Query\Builder->LdapRecord\Query\{closure}()
#14 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Query\Builder.php(222): LdapRecord\Query\Builder->onceWithColumns(Array, Object(Closure))
#15 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Query\Builder.php(696): LdapRecord\Query\Builder->get(Array)
#16 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Query\Builder.php(714): LdapRecord\Query\Builder->first(Array)
#17 C:\xampp\htdocs\flarum\vendor\tituspijean\flarum-ext-auth-ldap\src\Controllers\LDAPAuthController.php(74): LdapRecord\Query\Builder->firstOrFail()
#18 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\RouteHandlerFactory.php(38): TitusPiJean\Flarum\Auth\LDAP\Controllers\LDAPAuthController->handle(Object(Laminas\Diactoros\ServerRequest))
#19 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\DispatchRoute.php(65): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}(Object(Laminas\Diactoros\ServerRequest), Array)
#20 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\DispatchRoute->process(Object(Laminas\Diactoros\ServerRequest), Object(Closure))
#21 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\ShareErrorsFromSession.php(56): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#22 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\ShareErrorsFromSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#23 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\SetLocale.php(50): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#24 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\SetLocale->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#25 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\CheckCsrfToken.php(31): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#26 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\CheckCsrfToken->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#27 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\AuthenticateWithSession.php(32): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#28 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\AuthenticateWithSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#29 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\RememberFromCookie.php(51): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#30 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\RememberFromCookie->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#31 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\StartSession.php(61): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#32 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\StartSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#33 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\CollectGarbage.php(46): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#34 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\CollectGarbage->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#35 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\ParseJsonBody.php(28): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#36 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\ParseJsonBody->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#37 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\HandleErrors.php(57): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#38 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\HandleErrors->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#39 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\MiddlewarePipe.php(84): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#40 C:\xampp\htdocs\flarum\vendor\middlewares\request-handler\src\RequestHandler.php(84): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#41 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Middlewares\RequestHandler->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#42 C:\xampp\htdocs\flarum\vendor\middlewares\base-path-router\src\BasePathRouter.php(97): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#43 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Middlewares\BasePathRouter->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#44 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Middleware\OriginalMessages.php(42): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#45 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Laminas\Stratigility\Middleware\OriginalMessages->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#46 C:\xampp\htdocs\flarum\vendor\middlewares\base-path\src\BasePath.php(53): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#47 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Middlewares\BasePath->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#48 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\MiddlewarePipe.php(84): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#49 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\MiddlewarePipe.php(73): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\EmptyPipelineHandler))
#50 C:\xampp\htdocs\flarum\vendor\laminas\laminas-httphandlerrunner\src\RequestHandlerRunner.php(96): Laminas\Stratigility\MiddlewarePipe->handle(Object(Laminas\Diactoros\ServerRequest))
#51 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Server.php(42): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
#52 C:\xampp\htdocs\flarum\public\index.php(26): Flarum\Http\Server->listen()
#53 {main}, ErrorException: ldap_search(): Search: Operations error in C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Ldap.php:476
Stack trace:
#0 [internal function]: LdapRecord\Ldap->LdapRecord\{closure}(2, 'ldap_search(): ...', 'C:\\xampp\\htdocs...', 476, Array)
#1 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Ldap.php(476): ldap_search(Resource id #496, 'DC=istinye,DC=e...', '(mail=\\6f\\67\\75...', Array, false, 1, 0, NULL)
#2 C:\xampp\htdocs\flarum\vendor\directorytree\ldaprecord\src\Ldap.php(881): LdapRecord\Ldap->LdapRecord\{closure}()

Use this plugin without sign in permission

Hi there!
Thank you for this wonderful extension!
What I try to do is to use it with "Sign In" permission set to Closed. When a user tries to login the first time one's being redirected to sign in form, wich fails with the permission set to Closed.
Is there a way to workaround this somehow?

Cannot log in with modal in reply modal

When you want to reply on post, a connexion modal appear, but LDAP extension doesn't work.

Error in console :

LDAPLogInModal.js:165 Uncaught TypeError: this.ldaplogin is not a function
    at e.onsubmit (LDAPLogInModal.js:165)
    at HTMLFormElement.L.t.<computed> (mithril.js:1286)

Versions

  • Flarum version: 0.1.0-beta.13
  • Using, or trying to install LDAP extension version/branch: v0.1.0-beta.13-5

Translate extension

Hello,

Simple question, my Flarum is in French, and I would like to know how can I translate the LDAP extension?
I tried to modify the .yml file directly, but the translation is only done in the English version of the site.
I tried to add a fr.yml file, but the same thing happens

How to debug failing ldap connection?

Hi,
after installing beta 12-1 I configured the plugin with my configuration that is working in other systems, but on login I only get a popup saying "An error occurred while trying to load this page.".

Nothing in the docker container logs and nothing in the nginx logs.

My php and nginx skills are "limited", how can I further debug this issues?
Regards

Domains: ldap.host.limited
Base DN: ou=users,dc=host,dc=limited
Filter: (&(objectClass=inetOrgPerson)(memberOf=cn=active,ou=groups,dc=host,dc=limited))
Port: 389
Use TLS: true
Connect with admin account: true
Admin name: cn=flarum,ou=bots,dc=host,dc=limited

Make `mail` attribute optional

Currently, mail attribute seems to be required. Would it be possible to make it optional and let the user enter an email when creating the account ?

LdapRecordException: LDAP error

Describe the bug

Expected behavior

Versions

  • Flarum version: latest
  • PHP: 8.1-FPM + NGINX
  • Using, or trying to install LDAP extension version/branch:
forum# composer require tituspijean/flarum-ext-auth-ldap
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]?
Info from https://repo.packagist.org: #StandWithUkraine
Using version ^1.0 for tituspijean/flarum-ext-auth-ldap
./composer.json has been updated
Running composer update tituspijean/flarum-ext-auth-ldap
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Generating autoload files
73 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

To Reproduce

  1. Login

Logs

[2022-03-19 23:18:27] flarum.ERROR: LdapRecord\LdapRecordException: LDAP error: (ldap_search(): Passing null to parameter #8 ($deref) of type int is deprecated, ldap_search(): Passing null to parameter #8 ($deref) of type int is deprecated) in /home/www/forum/vendor/tituspijean/flarum-ext-auth-ldap/src/Controllers/LDAPAuthController.php:95
Stack trace:
#0 /home/www/forum/vendor/flarum/core/src/Http/RouteHandlerFactory.php(41): TitusPiJean\Flarum\Auth\LDAP\Controllers\LDAPAuthController->handle(Object(Laminas\Diactoros\ServerRequest))
#1 /home/www/forum/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php(27): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}(Object(Laminas\Diactoros\ServerRequest), Array)
#2 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ExecuteRoute->process(Object(Laminas\Diactoros\ServerRequest), Object(Closure))
#3 /home/www/forum/vendor/flarum/core/src/Http/Middleware/ContentTypeOptionsHeader.php(21): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#4 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ContentTypeOptionsHeader->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#5 /home/www/forum/vendor/flarum/core/src/Http/Middleware/ReferrerPolicyHeader.php(30): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#6 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ReferrerPolicyHeader->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#7 /home/www/forum/vendor/flarum/core/src/Http/Middleware/FlarumPromotionHeader.php(30): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#8 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\FlarumPromotionHeader->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#9 /home/www/forum/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php(57): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#10 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ShareErrorsFromSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#11 /home/www/forum/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php(44): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#12 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\CheckCsrfToken->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#13 /home/www/forum/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php(67): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#14 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ResolveRoute->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#15 /home/www/forum/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#16 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\SetLocale->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#17 /home/www/forum/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(31): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#18 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\AuthenticateWithSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#19 /home/www/forum/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#20 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\RememberFromCookie->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#21 /home/www/forum/vendor/flarum/core/src/Http/Middleware/StartSession.php(61): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#22 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\StartSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#23 /home/www/forum/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php(46): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#24 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\CollectGarbage->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#25 /home/www/forum/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(28): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#26 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ParseJsonBody->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#27 /home/www/forum/vendor/flarum/core/src/Http/Middleware/HandleErrors.php(57): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#28 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\HandleErrors->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#29 /home/www/forum/vendor/flarum/core/src/Http/Middleware/InjectActorReference.php(25): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#30 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\InjectActorReference->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#31 /home/www/forum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(76): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#32 /home/www/forum/vendor/middlewares/request-handler/src/RequestHandler.php(84): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#33 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\RequestHandler->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#34 /home/www/forum/vendor/middlewares/base-path-router/src/BasePathRouter.php(101): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#35 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\BasePathRouter->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#36 /home/www/forum/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php(36): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#37 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Laminas\Stratigility\Middleware\OriginalMessages->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#38 /home/www/forum/vendor/middlewares/base-path/src/BasePath.php(73): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#39 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\BasePath->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#40 /home/www/forum/vendor/flarum/core/src/Http/Middleware/ProcessIp.php(24): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#41 /home/www/forum/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ProcessIp->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#42 /home/www/forum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(76): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#43 /home/www/forum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(65): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\EmptyPipelineHandler))
#44 /home/www/forum/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php(96): Laminas\Stratigility\MiddlewarePipe->handle(Object(Laminas\Diactoros\ServerRequest))
#45 /home/www/forum/vendor/flarum/core/src/Http/Server.php(44): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
#46 /home/www/forum/public/index.php(26): Flarum\Http\Server->listen()
#47 {main} 

Duplicate this for create flarum-ext-auth-imap ?

Hello

I am a beginner developer compared to you. I'm looking to add IMAP authentication to Flarum. I think that from your LDAP extension there is not much to modify. Would you be able to help me do this? (I don't know programmed in Class but I can tell you the parameters you need for the PHP IMAP connection + do the push / debug tests ...)

It is for associative use

Beautiful day,
David

Write proper documentation

With the extension becoming mostly functional, an actual documentation would be nice. (Self-)bonus point if code is commented.

default values for "LDAP user mail field" and "LDAP username field" are not applied

Describe the bug

in the configuration gui, when the "LDAP user mail field" and "LDAP username field" are not explicitly filled with a value, the extension won't work and a login attempt will fail with this error:

Argument 2 passed to Flarum\Forum\Auth\ResponseFactory::make() must be of the type string, null given

the reason for this is, that the GUI show a placeholder value of "mail" and "uid" in the input boxes but those values are not applied unless they are overwritten. So in a setup such as mine, where "mail" and "uid" are the correct parameters, i need to overwrite the placeholder with those values or the above error will appear.

on the other hand, the "port" field may be left empty (still showing the placeholder) and the connectionto the server will still work.

Expected behavior

if there is no data entered into the "user mail" and "username" field, the default value shold be applied, like the GUI suggests.

Versions

  • Flarum version: v1.0.0-p6

Ldap Error

[2020-04-20 06:57:32] production.ERROR: LdapRecord\LdapRecordException: LDAP error: (ldap_bind(): Unable to bind to server: Invalid credentials) in C:\xampp\htdocs\flarum\vendor\tituspijean\flarum-ext-auth-ldap\src\Controllers\LDAPAuthController.php:98
Stack trace:
#0 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\RouteHandlerFactory.php(38): TitusPiJean\Flarum\Auth\LDAP\Controllers\LDAPAuthController->handle(Object(Laminas\Diactoros\ServerRequest))
#1 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\DispatchRoute.php(65): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}(Object(Laminas\Diactoros\ServerRequest), Array)
#2 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\DispatchRoute->process(Object(Laminas\Diactoros\ServerRequest), Object(Closure))
#3 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\ShareErrorsFromSession.php(56): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#4 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\ShareErrorsFromSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#5 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\SetLocale.php(50): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#6 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\SetLocale->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#7 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\CheckCsrfToken.php(31): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#8 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\CheckCsrfToken->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#9 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\AuthenticateWithSession.php(32): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#10 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\AuthenticateWithSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#11 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\RememberFromCookie.php(51): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#12 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\RememberFromCookie->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#13 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\StartSession.php(61): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#14 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\StartSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#15 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\CollectGarbage.php(46): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#16 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\CollectGarbage->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#17 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\ParseJsonBody.php(28): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#18 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\ParseJsonBody->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#19 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Middleware\HandleErrors.php(57): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#20 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Flarum\Http\Middleware\HandleErrors->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#21 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\MiddlewarePipe.php(84): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#22 C:\xampp\htdocs\flarum\vendor\middlewares\request-handler\src\RequestHandler.php(84): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#23 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Middlewares\RequestHandler->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#24 C:\xampp\htdocs\flarum\vendor\middlewares\base-path-router\src\BasePathRouter.php(97): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#25 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Middlewares\BasePathRouter->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#26 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Middleware\OriginalMessages.php(42): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#27 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Laminas\Stratigility\Middleware\OriginalMessages->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#28 C:\xampp\htdocs\flarum\vendor\middlewares\base-path\src\BasePath.php(53): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#29 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\Next.php(61): Middlewares\BasePath->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#30 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\MiddlewarePipe.php(84): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#31 C:\xampp\htdocs\flarum\vendor\laminas\laminas-stratigility\src\MiddlewarePipe.php(73): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\EmptyPipelineHandler))
#32 C:\xampp\htdocs\flarum\vendor\laminas\laminas-httphandlerrunner\src\RequestHandlerRunner.php(96): Laminas\Stratigility\MiddlewarePipe->handle(Object(Laminas\Diactoros\ServerRequest))
#33 C:\xampp\htdocs\flarum\vendor\flarum\core\src\Http\Server.php(42): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
#34 C:\xampp\htdocs\flarum\public\index.php(26): Flarum\Http\Server->listen()
#35 {main}  

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.