aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/sessions_controller.rb
blob: 897a6cc5cd8229e0b01241f7eaf611aa61fed9e8 (plain)
1
2
3
4
5
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
class SessionsController < ApplicationController
  def create
    auth = request.env["omniauth.auth"]

    account = Account.create_or_update(user_id: auth["uid"],
                                       oauth_token: auth["credentials"]["token"],
                                       oauth_token_secret: auth["credentials"]["secret"])
    account.update_connection

    User.from_json(id: account.user_id,
                   screen_name: auth["extra"]["raw_info"]["screen_name"],
                   name: auth["extra"]["raw_info"]["name"],
                   profile_image_url: auth["extra"]["raw_info"]["profile_image_url_https"],
                   protected: auth["extra"]["raw_info"]["protected"])

    session[:account] = account
    session[:user_id] = account.user_id

    to = request.env["omniauth.params"]["redirect_after_login"].to_s
    if to.include? "//" || to[0] != "/"
      to = root_path
    end
    redirect_to to
  end

  def destroy
    reset_session

    redirect_to root_path
  end
end