app/controllers/adminpanel/sessions_controller.rb in adminpanel-2.1.7 vs app/controllers/adminpanel/sessions_controller.rb in adminpanel-2.2.0
- old
+ new
@@ -1,31 +1,65 @@
module Adminpanel
- class SessionsController < Adminpanel::ApplicationController
- skip_authorization_check
+ class SessionsController < ActionController::Base
+ include SessionsHelper
+ protect_from_forgery
layout 'admin-login'
- skip_before_filter :signed_in_user, :set_model
+ before_action :configure_instagram, only:[:instagram_login, :instagram_callback]
def new
- respond_to do |format|
- format.html
- format.json { render :json => {:session => @session }}
- end
end
def create
user = User.find_by_email(params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
- sign_in user
- flash[:success] = I18n.t("authentication.signin_success")
- redirect_to root_url
+ sign_in user
+ flash[:success] = I18n.t('authentication.signin_success')
+ redirect_to root_url
else
- flash.now[:error] = I18n.t("authentication.signin_error")
+ flash.now[:error] = I18n.t('authentication.signin_error')
render 'new'
end
end
def destroy
sign_out
redirect_to signin_path
+ end
+
+ def twitter_callback
+ save_twitter_tokens
+ flash[:success] = I18n.t('twitter.saved_token')
+ redirect_to twitter_analytics_path
+ end
+
+ def instagram_login
+ redirect_to Instagram.authorize_url(:redirect_uri => instagram_callback_sessions_url, :scope => 'comments')
+ end
+
+ def instagram_callback
+ response = Instagram.get_access_token(params[:code], :redirect_uri => instagram_callback_sessions_url)
+ username = Instagram.client(access_token: response.access_token).user.username
+ Auth.create(key: 'instagram', value: response.access_token, name: "@#{username}")
+ redirect_to instagram_analytics_path
+ end
+
+ private
+
+ def configure_instagram
+ Instagram.configure do |config|
+ config.client_id = Adminpanel.instagram_client_id
+ config.client_secret = Adminpanel.instagram_client_secret
+ end
+ end
+
+ def save_twitter_tokens
+ twitter_user = "@#{request.env['omniauth.auth']['info']['nickname']}"
+ ['token', 'secret'].each do |key|
+ Auth.create(
+ key: "twitter-#{key}",
+ name: twitter_user,
+ value: request.env['omniauth.auth']['credentials'][key]
+ )
+ end
end
end
end