= resource_class.new(sign_up_params.except(:confirm_success_url)) @resource.provider = provider …………৭ʑͳॲཧ begin # override email confirmation, must be sent manually from ctrl resource_class.set_callback("create", :after, :send_on_create_confirmation_instructions) resource_class.skip_callback("create", :after, :send_on_create_confirmation_instructions) if @resource.respond_to? :skip_confirmation_notification! # Fix duplicate e-mails by disabling Devise confirmation e-mail @resource.skip_confirmation_notification! end if @resource.save yield @resource if block_given? unless @resource.confirmed? # user will require email authentication @resource.send_confirmation_instructions({ client_config: params[:config_name], redirect_url: @redirect_url }) else # email auth has been bypassed, authenticate user @client_id = SecureRandom.urlsafe_base64(nil, false) @token = SecureRandom.urlsafe_base64(nil, false) @resource.tokens[@client_id] = { token: BCrypt::Password.create(@token), expiry: (Time.now + @resource.token_lifespan).to_i } @resource.save! update_auth_header end render_create_success else clean_up_passwords @resource render_create_error end rescue ActiveRecord::RecordNotUnique clean_up_passwords @resource render_create_error_email_already_exists end