Fix SSO JIT new family creator role (#3024)

* Fix SSO JIT new family creator role

* Preserve super admin SSO creator defaults

* Update new family creator role test
This commit is contained in:
Sure Admin (bot)
2026-08-14 03:59:02 +02:00
committed by GitHub
parent 7f0a6fb6dc
commit 73d43bc1d0
6 changed files with 104 additions and 6 deletions
@@ -705,6 +705,66 @@ class Api::V1::AuthControllerTest < ActionDispatch::IntegrationTest
assert_nil Rails.cache.read("mobile_sso_link:#{linking_code}")
end
test "sso_create_account makes new family creator admin even when provider default role is member" do
Rails.configuration.x.auth.stubs(:sso_providers).returns([
{ name: "google_oauth2", settings: { default_role: "member" } }
])
linking_code = SecureRandom.urlsafe_base64(32)
Rails.cache.write("mobile_sso_link:#{linking_code}", {
provider: "google_oauth2",
uid: "google-uid-member-default",
email: "member-default@example.com",
first_name: "Member",
last_name: "Default",
name: "Member Default",
device_info: @device_info.stringify_keys,
allow_account_creation: true
}, expires_in: 10.minutes)
assert_difference([ "User.count", "OidcIdentity.count", "Family.count" ], 1) do
post "/api/v1/auth/sso_create_account", params: {
linking_code: linking_code,
first_name: "Member",
last_name: "Default"
}
end
assert_response :success
new_user = User.find_by!(email: "member-default@example.com")
assert_equal "admin", new_user.role
assert new_user.admin?
end
test "sso_create_account preserves super admin provider default for new family creator" do
Rails.configuration.x.auth.stubs(:sso_providers).returns([
{ name: "google_oauth2", settings: { default_role: "super_admin" } }
])
linking_code = SecureRandom.urlsafe_base64(32)
Rails.cache.write("mobile_sso_link:#{linking_code}", {
provider: "google_oauth2",
uid: "google-uid-super-admin-default",
email: "super-admin-default@example.com",
first_name: "Super",
last_name: "Default",
name: "Super Default",
device_info: @device_info.stringify_keys,
allow_account_creation: true
}, expires_in: 10.minutes)
assert_difference([ "User.count", "OidcIdentity.count", "Family.count" ], 1) do
post "/api/v1/auth/sso_create_account", params: {
linking_code: linking_code,
first_name: "Super",
last_name: "Default"
}
end
assert_response :success
new_user = User.find_by!(email: "super-admin-default@example.com")
assert_equal "super_admin", new_user.role
assert new_user.admin?
end
test "should reject SSO create account when not allowed" do
linking_code = SecureRandom.urlsafe_base64(32)
Rails.cache.write("mobile_sso_link:#{linking_code}", {