Class: DeviseTokenAuth::SessionsController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- DeviseTokenAuth::SessionsController
- Defined in:
- app/controllers/devise_token_auth/sessions_controller.rb
Instance Method Summary collapse
Instance Method Details
#create ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'app/controllers/devise_token_auth/sessions_controller.rb', line 6 def create # honor devise configuration for case_insensitive_keys if resource_class.case_insensitive_keys.include?(:email) email = resource_params[:email].downcase else email = resource_params[:email] end q = "uid='#{email}' AND provider='email'" if ActiveRecord::Base.connection.adapter_name.downcase.starts_with? 'mysql' q = "BINARY uid='#{email}' AND provider='email'" end @resource = resource_class.where(q).first if @resource and valid_params? and @resource.valid_password?(resource_params[:password]) and @resource.confirmed? # create client id @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 + DeviseTokenAuth.token_lifespan).to_i } @resource.save sign_in(:user, @resource, store: false, bypass: false) render json: { data: @resource.as_json(except: [ :tokens, :created_at, :updated_at ]) } elsif @resource and not @resource.confirmed? render json: { success: false, errors: [ "A confirmation email was sent to your account at #{@resource.email}. "+ "You must follow the instructions in the email before your account "+ "can be activated" ] }, status: 401 else render json: { errors: ["Invalid login credentials. Please try again."] }, status: 401 end end |
#destroy ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'app/controllers/devise_token_auth/sessions_controller.rb', line 58 def destroy # remove auth instance variables so that after_filter does not run user = remove_instance_variable(:@resource) if @resource client_id = remove_instance_variable(:@client_id) if @client_id remove_instance_variable(:@token) if @token if user and client_id and user.tokens[client_id] user.tokens.delete(client_id) user.save! render json: { success:true }, status: 200 else render json: { errors: ["User was not found or was not logged in."] }, status: 404 end end |
#resource_params ⇒ Object
83 84 85 |
# File 'app/controllers/devise_token_auth/sessions_controller.rb', line 83 def resource_params params.permit(devise_parameter_sanitizer.for(:sign_in)) end |
#valid_params? ⇒ Boolean
79 80 81 |
# File 'app/controllers/devise_token_auth/sessions_controller.rb', line 79 def valid_params? resource_params[:password] && resource_params[:email] end |