- # check if default openid_prefix needs to be overridden
- if params[:openid_prefix]
- openid_prefix = params[:openid_prefix]
- else
- openid_prefix = Rails.configuration.openid_prefix
- end
- login_perm_props = {identity_url_prefix: openid_prefix}
-
- @object = model_class.new resource_attrs
-
- # Lookup for user. If exists, only create any missing links
- @object_found = find_user_from_input
-
- if !@object_found
- if !@object[:email]
- raise "No email found in the input. Aborting user creation."
- end
-
- if @object.save
- oid_login_perm = Link.where(tail_uuid: @object[:email],
- head_kind: 'arvados#user',
- link_class: 'permission',
- name: 'can_login')
-
- if [] == oid_login_perm
- # create openid login permission
- oid_login_perm = Link.create(link_class: 'permission',
- name: 'can_login',
- tail_kind: 'email',
- tail_uuid: @object[:email],
- head_kind: 'arvados#user',
- head_uuid: @object[:uuid],
- properties: login_perm_props
- )
- logger.info { "openid login permission: " + oid_login_perm[:uuid] }
- end
- else
- raise "Save failed"