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