@@ -114,12 +114,11 @@ def create_org_role(message)
114114 unauthorized! unless permission_queryer . can_write_to_active_org? ( org . id )
115115 suspended! unless permission_queryer . is_org_active? ( org . id )
116116
117- if message . username && message . user_origin && message . user_origin != 'uaa' && org_managers_can_create_users?
118- user = create_uaa_shadow_user ( message . username , message . user_origin )
119- user_guid = user [ 'id' ]
120- else
121- user_guid = message . user_guid || lookup_user_guid_in_uaa ( message . username , message . user_origin )
122- end
117+ user_guid = if message . username && message . user_origin && message . user_origin != 'uaa' && org_managers_can_create_users?
118+ create_or_get_uaa_user ( message )
119+ else
120+ message . user_guid || lookup_user_guid_in_uaa ( message . username , message . user_origin )
121+ end
123122
124123 user = User . first ( guid : user_guid ) || create_cc_user ( user_guid )
125124
@@ -145,9 +144,20 @@ def create_cc_user(user_guid)
145144 UserCreate . new . create ( message :)
146145 end
147146
148- def create_uaa_shadow_user ( username , origin )
149- message = UserCreateMessage . new ( username :, origin :)
150- unprocessable! ( message . errors . full_messages ) unless message . valid?
147+ def create_or_get_uaa_user ( message )
148+ user_create_message = UserCreateMessage . new ( username : message . username , origin : message . user_origin )
149+ unprocessable! ( user_create_message . errors . full_messages ) unless user_create_message . valid?
150+
151+ existing_user_id = get_uaa_user_id ( user_create_message )
152+ user = create_uaa_shadow_user ( user_create_message ) unless existing_user_id
153+ existing_user_id || user [ 'id' ]
154+ end
155+
156+ def get_uaa_user_id ( message )
157+ User . get_user_id_by_username_and_origin ( message . username , message . origin )
158+ end
159+
160+ def create_uaa_shadow_user ( message )
151161 User . create_uaa_shadow_user ( message . username , message . origin )
152162 end
153163
0 commit comments