diff --git a/app/controllers/api/forward_auth_controller.rb b/app/controllers/api/forward_auth_controller.rb index 98daea8..4de8b7a 100644 --- a/app/controllers/api/forward_auth_controller.rb +++ b/app/controllers/api/forward_auth_controller.rb @@ -88,6 +88,8 @@ module Api case key when :user, :email, :name [header_name, user.email_address] + when :username + [header_name, user.username] if user.username.present? when :groups user.groups.any? ? [header_name, user.groups.pluck(:name).join(",")] : nil when :admin diff --git a/app/models/application.rb b/app/models/application.rb index 1cc73f0..b6ef9b4 100644 --- a/app/models/application.rb +++ b/app/models/application.rb @@ -76,6 +76,7 @@ class Application < ApplicationRecord user: "X-Remote-User", email: "X-Remote-Email", name: "X-Remote-Name", + username: "X-Remote-Username", groups: "X-Remote-Groups", admin: "X-Remote-Admin" }.freeze @@ -195,6 +196,8 @@ class Application < ApplicationRecord headers[header_name] = user.email_address when :name headers[header_name] = user.name.presence || user.email_address + when :username + headers[header_name] = user.username if user.username.present? when :groups headers[header_name] = user.groups.pluck(:name).join(",") if user.groups.any? when :admin diff --git a/app/views/admin/applications/_form.html.erb b/app/views/admin/applications/_form.html.erb index 97dc1f2..14ff96e 100644 --- a/app/views/admin/applications/_form.html.erb +++ b/app/views/admin/applications/_form.html.erb @@ -330,10 +330,10 @@
Optional: Customize header names sent to your application.
Default headers: X-Remote-User, X-Remote-Email, X-Remote-Name, X-Remote-Groups, X-Remote-Admin
+Default headers: X-Remote-User, X-Remote-Email, X-Remote-Name, X-Remote-Username, X-Remote-Groups, X-Remote-Admin
user - User's email address
email - User's email address
name - User's display name (falls back to email if not set)
username - User's login username (only sent if set)
groups - Comma-separated list of group names (e.g., "admin,developers")
admin - "true" or "false" indicating admin status
Example: {"user": "Remote-User", "groups": "Remote-Groups"}
Example: {"user": "Remote-User", "groups": "Remote-Groups", "username": "Remote-Username"}
Need custom user fields? Add them to user's custom_claims for OIDC tokens