mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-01 10:37:12 +08:00
This splits the Login and Authentication admin page into multiple
sections: Settings, social logins, DiscourseConnect, OAuth2.0, OIDC.
Internal ticket `t/161648`
This PR also adds a new extension point for plugins that want to extend
this area of the app.
```
register_site_setting_area("oauth2")
register_admin_config_login_route("oauth2")
```
Adding this to a plugin allows it to extend both the setting areas
(existing functionality) and add a tab to this admin settings screen via
`register_admin_config_login_route`.
37 lines
1.6 KiB
Ruby
37 lines
1.6 KiB
Ruby
# 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"
|
|
|
|
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"
|