Code Monkey home page Code Monkey logo

oauth's Introduction

OAuth by FriendsOfFlarum

License Latest Stable Version Total Downloads OpenCollective

A Flarum extension. Allow users to log in with various OAuth providers

Bundled providers

By default these providers are included:

  • Discord
  • Facebook
  • Github
  • Gitlab
  • Google
  • LinkedIn
  • Twitter

Permissions

This extension provides the ability to view the status of linked OAuth providers (intended for admin and/or moderator use). In order for this to function correctly, you must also set the permission Moderate Access Tokens to at least the same group as you require for Moderate user's linked accounts.

Additional providers

Additional OAuth providers are available for this extension. Here's a handy list of known extensions, let us know if you know of any more and we'll get them added!

Screenshots

Default provider settings example provider setup example

Login/signup example with Github, Twitter, Twitch and Google enabled. example login

Installation

composer require fof/oauth

Updating

composer update fof/oauth
php flarum cache:clear

Configuration

Translation

You can replace the text for the forum sign in buttons in two ways.

  • Use fof-oauth.forum.providers.<name> to replace the name of the provider on the forum side
  • Use fof-oauth.forum.log_in.with_<name>_button to replace the entire button "Log In with " text

Extending

It is possible to add additional Providers using an extender. See OAuth-Amazon for an example of how to accomplish this but basically:

  • In your new extension, require fof/oauth as a dependency
  • Define a new Provider which extends FoF\OAuth\Provider
  • From your new extensions extend.php, register the provider (new FoF\OAuth\Extend\RegisterProvider(MyNewProvider::class))
  • Provide the required translations under the fof-oauth namespace. See the linked example extension for details on which keys are required.
  • (optionally) Provide an admin panel link to fof/oauth for easy configuration. Again, see the linked example.
  • (optionally) Provide any CSS required to style your new login button. See the linked example.

Links

OpenCollective

An extension by FriendsOfFlarum.

oauth's People

Contributors

clarkwinkelmann avatar dependabot[bot] avatar dsevillamartin avatar flarum-bot avatar iamdarkle avatar imorland avatar ipurpl3x avatar lier0 avatar luceos avatar luuhai48 avatar stylecibot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar

oauth's Issues

Steam OAuth

I know there is already a Steam OAuth integration out there but I really like to have everything in one place and the FriendsOfFlarum plugins are well thought out imo.

google and twitter login issue

Bug Report

Current Behavior
when users signup using google and try to log in using Twitter at 2nd time or 3rd-time social login is not working.

Received HTTP status code [401] with message "{"errors":[{"code":32,"message":"Could not authenticate you."}]}" when getting temporary credentials.

Expected Behavior

login is getting failed

https://discuss.flarum.org/d/25182-friendsofflarum-oauth/171
https://discuss.flarum.org/d/28653-twitter-login-in-fofoauth-shows-401

Environment

  • Flarum version: 1.0.4
  • Extension version: 1.02
  • Website URL: N/A
  • Webserver: apache
  • Hosting environment: vps
  • PHP version: 7.4+
  • Browser: chrome 67+

Potential Method Bug: State Token potentially lost when new a Oauth window opens on iOS mobile browsers

Hi FoF! Hope everyone's doing well!

While testing FoF Oauth on mobile, specifically iOS 14, I believe there is an error. Here's a link to a video demonstrating what happens.

I'm thinking it may be an exception that's raised when Flarum tries to compare tokens because the token is lost during a new window launch. Could be wrong though!

Whoops! There was an error..zip

Thank you :)

Michael Angelo Rivera

Invalid email

By using Discord or Twitter, I got Invalid email error. I couldn’t login.
Both shows authentication page and Authorize button, but when I clicked Authorize, go the error.

No loading state between app.authenticationComplete and window.location.reload

Bug Report

Current Behavior
After the oauth popup closes and before the Flarum single page app reloads for login, there is no loading indicator.

Steps to Reproduce

  1. Increase network delay using dev tools for best effect
  2. Login with any provider with an account already registered in Flarum
  3. See popup closes
  4. Browsers shows network activity
  5. Page continues to show login modal until page reloads

Expected Behavior
The page should have a clear indicator of something happening in addition to browser network feedback.

Screenshots
If applicable, add screenshots to help explain your problem.

Environment

  • Flarum version: not relevant
  • Extension version: 1.1.1
  • Website URL: not relevant
  • Webserver: not relevant
  • Hosting environment: not relevant
  • PHP version: not relevant
  • Browser: not relevant

Possible solution(s)
Technically, this could be considered a Flarum issue because the problem is related to the app.authenticationComplete() method called by the popup code returned by Flarum's https://github.com/flarum/framework/blob/main/framework/core/src/Forum/Auth/ResponseFactory.php . This code then calls the javascript at https://github.com/flarum/framework/blob/6df4101bae0ef89f0bab6ab557080b6d9995bb5b/framework/core/js/src/forum/ForumApplication.ts#L165 which calls window.location.reload().

While the browser will give feedback to the user that the page is reloading, most browsers will still let the user interact with the page and it might not be super obvious.

I think there are 2 options:

  • Disable entire page (semi-transparent backdrop in front of content for example).
  • Disable all social login buttons and/or show loading spinner in the buttons or in place of them.

The first solution might actually be better implemented in core itself since it impacts all extensions that use ResponseFactory and app.authenticationComplete(). However it would remove flexibility from extensions that want to use those methods and have a different feedback during login.

The second solution could be implemented with a global variable or variable on the app object that we update by extending app.authenticationComplete. Then we can trigger a redraw and use that value to show a loading spinner in the login modal.

One further problem could be if the page reload fails for some reason and we want to reset the loading state. I'm not sure if that can happen. If the page cannot reload, I think most browsers will show a new error page so Flarum wouldn't be visible at this point anymore.

Whatever solution is implemented might break the real time login extension https://github.com/FriendsOfFlarum/realtimelogin

Additional Context
Reported at https://discuss.flarum.org/d/25182-friendsofflarum-oauth

Can`t Link GitHub & Microsoft Account at Login status

Bug Report

Current Behavior
Can`t login using 3rd Party Account.

Steps to Reproduce

  1. Click "Settings",
  2. Click "Security",
  3. Click "GitHub Account Login" or "Microsoft Account Login" button at 3rd Party Account Login.

Expected Behavior
Account is linked

Screenshots
If applicable, add screenshots to help explain your problem.

Environment

  • Flarum version: 1.8.5
  • Extension version: 1.6.9
  • Website URL: https://fourm.akarinliu.com
  • Webserver: [OpenResty]
  • Hosting environment: [vps]
  • PHP version: 8.2.15
  • Browser: [Microsoft Edge 124.0.2478.67 ]
Output of "php flarum info", run this in terminal in your Flarum directory.

/www/sites/forum.akarinliu.com/index # php flarum info
Flarum core: 1.8.5
PHP version: 8.2.15
MySQL version: 8.2.0
Loaded extensions: Core, date, libxml, openssl, pcre, sqlite3, zlib, ctype, curl, dom, fileinfo, filter, hash, iconv, json, mbstring, SPL, session, PDO, pdo_sqlite, bz2, posix, random, readline, Reflection, standard, SimpleXML, tokenizer, xml, xmlreader, xmlwriter, mysqlnd, Phar, exif, gd, imap, mysqli, pdo_mysql, sodium, Zend OPcache
+--------------------------------+------------+--------+
| Flarum Extensions              |            |        |
+--------------------------------+------------+--------+
| ID                             | Version    | Commit |
+--------------------------------+------------+--------+
| flarum-flags                   | v1.8.0     |        |
| fof-oauth                      | 1.6.9      |        |
| flarum-suspend                 | v1.8.1     |        |
| flarum-tags                    | v1.8.0     |        |
| flarum-approval                | v1.8.1     |        |
| xrh0905-oauth-microsoft        | v1.0.1     |        |
| wanecho-showip                 | 0.0.5      |        |
| ianm-html-head                 | 1.2.3      |        |
| fof-user-directory             | 1.3.3      |        |
| fof-upload                     | 1.5.4      |        |
| fof-sitemap                    | 2.2.1      |        |
| fof-pretty-mail                | 1.1.2      |        |
| fof-nightmode                  | 1.5.3      |        |
| fof-custom-footer              | 1.1.2      |        |
| fof-anti-spam                  | 1.1.2      |        |
| flarum-subscriptions           | v1.8.0     |        |
| flarum-sticky                  | v1.8.0     |        |
| flarum-statistics              | v1.8.0     |        |
| flarum-nicknames               | v1.8.0     |        |
| flarum-mentions                | v1.8.3     |        |
| flarum-markdown                | v1.8.0     |        |
| flarum-lock                    | v1.8.0     |        |
| flarum-likes                   | v1.8.0     |        |
| flarum-lang-english            | v1.8.0     |        |
| flarum-lang-chinese-simplified | dev-master |        |
| flarum-emoji                   | v1.8.0     |        |
| blomstra-turnstile             | 0.1.4      |        |
+--------------------------------+------------+--------+
Base URL: https://forum.akarinliu.com
Installation path: /www/sites/forum.akarinliu.com/index
Queue driver: sync
Session driver: file
Scheduler status: 从未运行
Mail driver: smtp
Debug mode: off

Possible solution(s)

Additional Context
Add any other context about the problem here.

Disable signup & forgot password

Feature Request

To avoid spam registrations and decrease burden on email server we want to enable only social login.

To achieve this request you to add Disable signup & forgot password windows.

where only pop up window will be hides the signup functionality should not be disabled because if new user logs in using social login he should have option to pick his user name and signup.

I've tried the SSO options but due to too many redirections it will not be a comfortable option to the user

Allow to apply group membership

Feature Request

Is your feature request related to a problem? Please describe.

We have several tools we use and I don't want to update permissions of all our members for each platform. This is why I want to have a Single Source of Truth for the permissions. Currently we use this for Gitlab + Nextcloud with the Nextcloud Social Login Plugin. I would like to have the same behavior for Flarum.

Describe the solution you'd like

The solution is quite easy: When authenticating via Gitlab Login, we ask for the set of groups. The plugin configuration contains some group mappings (eg Gitlab Group -> Flarum Group). The plugin checks if the user is part of a Gitlab group where a mapping exists and applies the Flarum groups.

The source code for the same thing for Gitlab and Nextcloud is already available: https://github.com/zorn-v/nextcloud-social-login/blob/master/lib/Provider/CustomOAuth2.php Their implementation is quite general and maybe it can be a little more specific? Not sure.

Describe alternatives you've considered

One could use ldap or do it manually, but both is no fun.

I can offer to work on this. I am opening this anyway since I want to start a discussion to see if you are interested! Let me know!

Add Nextcloud support

Feature Request

Is your feature request related to a problem? Please describe.

Add the Nextcloud provider - there are requests for the intergration of a forum like Flarum with Nextcloud from time to time and I think this is a quite good match

Describe the solution you'd like

Nextcloud is not in the League list of the officially supported oauth providers, but there is a project bahuma/oauth2-nextcloud on GitHub which could close this gap. I could provide a proof of concept.

Describe alternatives you've considered

n/a

Oauth for association instead of unique account creation

Feature Request

the Ouath plugin currently does not allow an individual user to connect accounts together, logging in with any given provider creates a new account.

A clear and concise description of what the problem is. eg. I have an issue when [...]

I would instead like a different mode of the ouath plugin where the user can only create an account with one of the selected methods (oauth provider, or local username and password) and then in order to sign in with other providers, the user goes to account settings and can connect other accounts to their forum account. Once connected the user then can login with that provider if they wish on the login screen. or dont add the last part, doesnt matter. The reason for this is to allow me to sync user roles across platforms, in this case i want to grant discord roles based on forum roles or vice versa with a separate addon, but need that information to be available on the users account so i know what accounts to give roles too.

Add Support for Mastodon & Pixelfed

Hi,
I hope you guys are well aware of the fediverse.
Would you mind adding support for login with Mastodon and Pixelfed ?
It would be awesome for integration.
Thanks.

Add Optional Application Domain Setting for GitLab

In order for me to sunset my auth-gitlab extension, I recently implemented the ability to add an optional Application Domain for those that self-host their own GitLab instances. I am setting this as a reminder so I don't forget to submit a PR with this additional option or if someone beats me to it 😆

If a validation rule can be made for this option to only allow https in the URL as well, then that would be the icing on the cake.

Validation Rule: 'url' => ['regex' => '/^((?:https?\:\/\/|www\.)(?:[-a-z0-9]+\.)*[-a-z0-9]+.*)$/'],

The field can also look like this in the settings menu for GitLab right underneath the Client Secret:

image

Github oauth not working

Bug Report

Current Behavior
Unable to sign up using the GitHub Oauth handler.

Steps to Reproduce

  1. Enable GitHub oauth flow with new app
  2. log out
  3. click 'sign in'
  4. go through oauth flow
  5. land back at app at the 'choose username' screen, click 'sign up'
  6. see error

Expected Behavior
Signup will complete.

Screenshots
If applicable, add screenshots to help explain your problem.

image

Environment

  • Flarum version: 1.8.5
  • Extension version: 1.6.10
  • Website URL: https://forum.filamentcolors.xyz
  • Webserver: nginx
  • Hosting environment: vps
  • PHP version: 8.3
  • Browser: Firefox 127.0.2
Flarum core: 1.8.5
PHP version: 8.3.6
MySQL version: 10.11.8-MariaDB-0ubuntu0.24.04.1
Loaded extensions: Core, date, libxml, openssl, pcre, zlib, filter, hash, json, pcntl, random, Reflection, SPL, session, standard, sodium, mysqlnd, PDO, xml, calendar, ctype, curl, dom, mbstring, FFI, fileinfo, ftp, gd, gettext, iconv, exif, mysqli, pdo_mysql, Phar, posix, readline, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, xmlreader, xmlwriter, xsl, zip, Zend OPcache
+------------------------+---------+--------+
| Flarum Extensions      |         |        |
+------------------------+---------+--------+
| ID                     | Version | Commit |
+------------------------+---------+--------+
| flarum-tags            | v1.8.0  |        |
| flarum-suspend         | v1.8.1  |        |
| fof-pages              | 1.0.8   |        |
| fof-webhooks           | 1.2.3   |        |
| fof-user-bio           | 1.4.0   |        |
| fof-sitemap            | 2.2.1   |        |
| fof-profile-image-crop | 1.1.6   |        |
| fof-oauth              | 1.6.10  |        |
| fof-nightmode          | 1.5.3   |        |
| fof-links              | 1.2.3   |        |
| fof-github-autolink    | 1.1.4   |        |
| fof-best-answer        | 1.4.4   |        |
| flarum-subscriptions   | v1.8.0  |        |
| flarum-sticky          | v1.8.0  |        |
| flarum-statistics      | v1.8.0  |        |
| flarum-mentions        | v1.8.3  |        |
| flarum-markdown        | v1.8.0  |        |
| flarum-lock            | v1.8.0  |        |
| flarum-likes           | v1.8.0  |        |
| flarum-lang-english    | v1.8.0  |        |
| flarum-flags           | v1.8.0  |        |
| flarum-emoji           | v1.8.0  |        |
| flarum-bbcode          | v1.8.0  |        |
| datlechin-pronouns     | v0.1.0  |        |
| danirod-plausible      | v1.1.0  |        |
| blomstra-fontawesome   | 0.1.5   |        |
+------------------------+---------+--------+
Base URL: https://forum.filamentcolors.xyz
Installation path: /var/www/html
Queue driver: sync
Session driver: file
Scheduler status: Never run
Mail driver: smtp
Debug mode: off

Possible solution(s)

Additional Context

[2024-07-02 03:37:37] flarum.ERROR: Intervention\Image\Exception\NotReadableException: Unable to init from given url (https://avatars.githubusercontent.com/u/5179553?v=4). in /var/www/html/vendor/intervention/image/src/Intervention/Image/AbstractDecoder.php:85
Stack trace:
#0 /var/www/html/vendor/intervention/image/src/Intervention/Image/AbstractDecoder.php(335): Intervention\Image\AbstractDecoder->initFromUrl()
#1 /var/www/html/vendor/intervention/image/src/Intervention/Image/AbstractDriver.php(66): Intervention\Image\AbstractDecoder->init()
#2 /var/www/html/vendor/intervention/image/src/Intervention/Image/ImageManager.php(54): Intervention\Image\AbstractDriver->init()
#3 /var/www/html/vendor/flarum/core/src/User/Command/RegisterUserHandler.php(164): Intervention\Image\ImageManager->make()
#4 /var/www/html/vendor/flarum/core/src/User/Command/RegisterUserHandler.php(129): Flarum\User\Command\RegisterUserHandler->uploadAvatarFromUrl()
#5 /var/www/html/vendor/flarum/core/src/User/Command/RegisterUserHandler.php(101): Flarum\User\Command\RegisterUserHandler->applyToken()
#6 /var/www/html/vendor/illuminate/bus/Dispatcher.php(122): Flarum\User\Command\RegisterUserHandler->handle()
#7 /var/www/html/vendor/illuminate/pipeline/Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}()
#8 /var/www/html/vendor/illuminate/pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#9 /var/www/html/vendor/illuminate/bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()
#10 /var/www/html/vendor/illuminate/bus/Dispatcher.php(78): Illuminate\Bus\Dispatcher->dispatchNow()
#11 /var/www/html/vendor/flarum/core/src/Api/Controller/CreateUserController.php(45): Illuminate\Bus\Dispatcher->dispatch()
#12 /var/www/html/vendor/flarum/core/src/Api/Controller/AbstractSerializeController.php(116): Flarum\Api\Controller\CreateUserController->data()
#13 /var/www/html/vendor/flarum/core/src/Api/Controller/AbstractCreateController.php(22): Flarum\Api\Controller\AbstractSerializeController->handle()
#14 /var/www/html/vendor/flarum/core/src/Http/RouteHandlerFactory.php(41): Flarum\Api\Controller\AbstractCreateController->handle()
#15 /var/www/html/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php(27): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}()
#16 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ExecuteRoute->process()
#17 /var/www/html/vendor/fof/oauth/src/Middleware/BindRequest.php(33): Laminas\Stratigility\Next->handle()
#18 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): FoF\OAuth\Middleware\BindRequest->process()
#19 /var/www/html/vendor/flarum/core/src/Api/Middleware/ThrottleApi.php(33): Laminas\Stratigility\Next->handle()
#20 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Api\Middleware\ThrottleApi->process()
#21 /var/www/html/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php(69): Laminas\Stratigility\Next->handle()
#22 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ResolveRoute->process()
#23 /var/www/html/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Laminas\Stratigility\Next->handle()
#24 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\SetLocale->process()
#25 /var/www/html/vendor/flarum/core/src/Http/Middleware/HandleErrors.php(57): Laminas\Stratigility\Next->handle()
#26 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\HandleErrors->process()
#27 /var/www/html/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(75): Laminas\Stratigility\Next->handle()
#28 /var/www/html/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(64): Laminas\Stratigility\MiddlewarePipe->process()
#29 /var/www/html/vendor/flarum/core/src/Api/Client.php(141): Laminas\Stratigility\MiddlewarePipe->handle()
#30 /var/www/html/vendor/flarum/core/src/Api/Client.php(96): Flarum\Api\Client->send()
#31 /var/www/html/vendor/flarum/core/src/Forum/Controller/RegisterController.php(56): Flarum\Api\Client->post()
#32 /var/www/html/vendor/flarum/core/src/Http/RouteHandlerFactory.php(41): Flarum\Forum\Controller\RegisterController->handle()
#33 /var/www/html/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php(27): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}()
#34 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ExecuteRoute->process()
#35 /var/www/html/vendor/fof/oauth/src/Middleware/BindRequest.php(33): Laminas\Stratigility\Next->handle()
#36 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): FoF\OAuth\Middleware\BindRequest->process()
#37 /var/www/html/vendor/fof/oauth/src/Middleware/ErrorHandler.php(58): Laminas\Stratigility\Next->handle()
#38 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): FoF\OAuth\Middleware\ErrorHandler->process()
#39 /var/www/html/vendor/flarum/core/src/Http/Middleware/ContentTypeOptionsHeader.php(21): Laminas\Stratigility\Next->handle()
#40 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ContentTypeOptionsHeader->process()
#41 /var/www/html/vendor/flarum/core/src/Http/Middleware/ReferrerPolicyHeader.php(30): Laminas\Stratigility\Next->handle()
#42 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ReferrerPolicyHeader->process()
#43 /var/www/html/vendor/flarum/core/src/Http/Middleware/FlarumPromotionHeader.php(30): Laminas\Stratigility\Next->handle()
#44 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\FlarumPromotionHeader->process()
#45 /var/www/html/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php(57): Laminas\Stratigility\Next->handle()
#46 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ShareErrorsFromSession->process()
#47 /var/www/html/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php(44): Laminas\Stratigility\Next->handle()
#48 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\CheckCsrfToken->process()
#49 /var/www/html/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php(69): Laminas\Stratigility\Next->handle()
#50 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ResolveRoute->process()
#51 /var/www/html/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Laminas\Stratigility\Next->handle()
#52 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\SetLocale->process()
#53 /var/www/html/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(31): Laminas\Stratigility\Next->handle()
#54 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\AuthenticateWithSession->process()
#55 /var/www/html/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Laminas\Stratigility\Next->handle()
#56 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\RememberFromCookie->process()
#57 /var/www/html/vendor/flarum/core/src/Http/Middleware/StartSession.php(61): Laminas\Stratigility\Next->handle()
#58 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\StartSession->process()
#59 /var/www/html/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php(46): Laminas\Stratigility\Next->handle()
#60 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\CollectGarbage->process()
#61 /var/www/html/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(28): Laminas\Stratigility\Next->handle()
#62 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ParseJsonBody->process()
#63 /var/www/html/vendor/flarum/core/src/Http/Middleware/HandleErrors.php(57): Laminas\Stratigility\Next->handle()
#64 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\HandleErrors->process()
#65 /var/www/html/vendor/flarum/core/src/Http/Middleware/InjectActorReference.php(25): Laminas\Stratigility\Next->handle()
#66 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\InjectActorReference->process()
#67 /var/www/html/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(75): Laminas\Stratigility\Next->handle()
#68 /var/www/html/vendor/middlewares/request-handler/src/RequestHandler.php(84): Laminas\Stratigility\MiddlewarePipe->process()
#69 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Middlewares\RequestHandler->process()
#70 /var/www/html/vendor/middlewares/base-path-router/src/BasePathRouter.php(99): Laminas\Stratigility\Next->handle()
#71 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Middlewares\BasePathRouter->process()
#72 /var/www/html/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php(36): Laminas\Stratigility\Next->handle()
#73 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Laminas\Stratigility\Middleware\OriginalMessages->process()
#74 /var/www/html/vendor/middlewares/base-path/src/BasePath.php(73): Laminas\Stratigility\Next->handle()
#75 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Middlewares\BasePath->process()
#76 /var/www/html/vendor/flarum/core/src/Http/Middleware/ProcessIp.php(24): Laminas\Stratigility\Next->handle()
#77 /var/www/html/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ProcessIp->process()
#78 /var/www/html/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(75): Laminas\Stratigility\Next->handle()
#79 /var/www/html/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(64): Laminas\Stratigility\MiddlewarePipe->process()
#80 /var/www/html/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php(73): Laminas\Stratigility\MiddlewarePipe->handle()
#81 /var/www/html/vendor/flarum/core/src/Http/Server.php(45): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
#82 /var/www/html/public/index.php(26): Flarum\Http\Server->listen()
#83 {main}

New driver approval

This is an issue to talk about the process or merging new drivers and more importantly it's maintenance.

Looking at the wechat pr I'm extremely afraid of adding new drivers where maintenance falls onto the fof team.

What I would prefer is requiring that such a pr can only be merged with the pledge of someone interested in maintaining the driver. What do you all think?

Add spacer underneath SSO buttons, button width 100%

Feature Request

When activating and using at least one OAuth2 SSO method there should be a clear visual distinction between the SSO buttons and the default core login/signup as to make it easy to understand that you'd do one or the other.

Also the buttons should fill out the same width as the core input fields.

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.