0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-06 00:15:24 +08:00
discourse/plugins/discourse-oauth2-basic/plugin.rb
David Taylor 69f214374e
DEV: Improve OIDC and OAuth2 plugin timeout handling (#42136)
- Make timeout configurable for OAuth2, to match OIDC

- Correctly log timeout errors

- Show nicer auth-failure screen to users, instead of the generic
'something went wrong' page
2026-07-29 18:22:40 +01:00

39 lines
1.6 KiB
Ruby
Vendored

# frozen_string_literal: true
# name: discourse-oauth2-basic
# about: Allows users to login to your forum using a basic OAuth2 provider.
# meta_topic_id: 33879
# version: 0.3
# authors: Robin Ward
# url: https://github.com/discourse/discourse/tree/main/plugins/discourse-oauth2-basic
enabled_site_setting :oauth2_enabled
require_relative "lib/omniauth/strategies/oauth2_basic"
require_relative "lib/oauth2_faraday_formatter"
require_relative "lib/oauth2_basic_authenticator"
GlobalSetting.add_default :oauth2_request_timeout_seconds, 10
register_site_setting_area("oauth2")
register_admin_config_login_route("oauth2")
# You should use this register if you want to add custom paths to traverse the user details JSON.
# We'll store the value in the user associated account's extra attribute hash using the full path as the key.
DiscoursePluginRegistry.define_filtered_register :oauth2_basic_additional_json_paths
# After authentication, we'll use this to confirm that the registered json paths are fulfilled, or display an error.
# This requires SiteSetting.oauth2_fetch_user_details? to be true, and can be used with
# DiscoursePluginRegistry.oauth2_basic_additional_json_paths.
#
# Example usage:
# DiscoursePluginRegistry.register_oauth2_basic_required_json_path({
# path: "extra:data.is_allowed_user",
# required_value: true,
# error_message: I18n.t("auth.user_not_allowed")
# }, self)
DiscoursePluginRegistry.define_filtered_register :oauth2_basic_required_json_paths
auth_provider title_setting: "oauth2_button_title", authenticator: OAuth2BasicAuthenticator.new
require_relative "lib/validators/oauth2_basic/oauth2_fetch_user_details_validator"