ruby on rails - Devise - Perform actions after authentication, but before redirect -
i'm trying perform actions after creation of session , before redirect. user subscribes lesson, , after they've picked lesson sign for, i'd provide option sign in, , use existing card on file finalize purchase without making them go through process again (it's stated happen on form).
i'm overriding default actions devise, so:
rails.application.routes.draw devise_for :users, controllers: {registrations: 'registrations', sessions: 'sessions'} end and using controller:
class sessionscontroller < devise::sessionscontroller def create super my_service = myservice.new my_service.charge_card_and_create_event(resource, params) end end with form:
= form_for(resource, as: resource_name, url: session_path(resource_name)) |f| = f.email_field :email, autofocus: true, class: 'signin-fields', placeholder: "email" = f.password_field :password, autocomplete: "off", class: 'signin-fields', placeholder: "password" =hidden_field_tag "lesson_name", @lesson.team_name =hidden_field_tag "lesson_price", @lesson.price_per_student %br = f.submit "log in", class: 'btn btn-ps-sm' .shared-links#forgot-password i have 4 goals once user clicks log in:
- sign user in.
- extract lesson data hidden fields, , charge signed-in user's card via api request.
- upon successful api response, create spot user in database.
- redirect or re-render page success or error message.
i have logic steps 2 , 3 laid out, , sharing isn't relevant. i'm stuck figuring out how use super in sessionscontroller log user in, delay redirect until i've performed actions. i'm using after_sign_in_path_for.
or other option take out super , manually whole authentication myself. feel unnecessary.
you should pass logic inside block, so:
class sessionscontroller < devise::sessionscontroller def create super my_service = myservice.new my_service.charge_card_and_create_event(resource, params) end end end if don't this, redirect_to inside devise's create method called before code executed.
Comments
Post a Comment