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:

  1. sign user in.
  2. extract lesson data hidden fields, , charge signed-in user's card via api request.
  3. upon successful api response, create spot user in database.
  4. 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

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -