مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-11-30 21:32:30 +00:00
feat: openid connect support (#2873)
هذا الالتزام موجود في:
@@ -12,7 +12,9 @@ require "sprockets/railtie"
|
||||
|
||||
# Require the gems listed in Gemfile, including any gems
|
||||
# you've limited to :test, :development, or :production.
|
||||
Bundler.require(*Rails.groups)
|
||||
gem_groups = Rails.groups
|
||||
gem_groups << :oidc if Postal::Config.oidc.enabled?
|
||||
Bundler.require(*gem_groups)
|
||||
|
||||
module Postal
|
||||
class Application < Rails::Application
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
ActiveSupport::Inflector.inflections(:en) do |inflect|
|
||||
inflect.acronym "DKIM"
|
||||
inflect.acronym "HTTP"
|
||||
inflect.acronym "OIDC"
|
||||
inflect.acronym "SMTP"
|
||||
inflect.acronym "UUID"
|
||||
|
||||
|
||||
28
config/initializers/omniauth.rb
Normal file
28
config/initializers/omniauth.rb
Normal file
@@ -0,0 +1,28 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
config = Postal::Config.oidc
|
||||
if config.enabled?
|
||||
client_options = { identifier: config.identifier, secret: config.secret }
|
||||
|
||||
client_options[:redirect_uri] = "#{Postal::Config.postal.web_protocol}://#{Postal::Config.postal.web_hostname}/auth/oidc/callback"
|
||||
|
||||
unless config.discovery?
|
||||
client_options[:authorization_endpoint] = config.authorization_endpoint
|
||||
client_options[:token_endpoint] = config.token_endpoint
|
||||
client_options[:userinfo_endpoint] = config.userinfo_endpoint
|
||||
client_options[:jwks_uri] = config.jwks_uri
|
||||
end
|
||||
|
||||
Rails.application.config.middleware.use OmniAuth::Builder do
|
||||
provider :openid_connect, name: :oidc,
|
||||
scope: config.scopes.map(&:to_sym),
|
||||
uid_field: config.uid_field,
|
||||
issuer: config.issuer,
|
||||
discovery: config.discovery?,
|
||||
client_options: client_options
|
||||
end
|
||||
|
||||
OmniAuth.config.on_failure = proc do |env|
|
||||
SessionsController.action(:oauth_failure).call(env)
|
||||
end
|
||||
end
|
||||
@@ -85,6 +85,10 @@ Rails.application.routes.draw do
|
||||
match "login/reset" => "sessions#begin_password_reset", :via => [:get, :post]
|
||||
match "login/reset/:token" => "sessions#finish_password_reset", :via => [:get, :post]
|
||||
|
||||
if Postal::Config.oidc.enabled?
|
||||
get "auth/oidc/callback", to: "sessions#create_from_oidc"
|
||||
end
|
||||
|
||||
get "ip" => "sessions#ip"
|
||||
|
||||
root "organizations#index"
|
||||
|
||||
المرجع في مشكلة جديدة
حظر مستخدم