41 lines
919 B
Ruby
41 lines
919 B
Ruby
# This code is based on this gem https://github.com/jwickard/omniauth-wordpress-oauth2-plugin
|
|
|
|
require "omniauth-oauth2"
|
|
|
|
module OmniAuth
|
|
module Strategies
|
|
class Wordpress < OmniAuth::Strategies::OAuth2
|
|
option :name, "wordpress_oauth2"
|
|
|
|
option :client_options, {}
|
|
|
|
uid { raw_info["ID"] }
|
|
|
|
info do
|
|
{
|
|
name: raw_info["display_name"],
|
|
email: raw_info["user_email"],
|
|
nickname: raw_info["user_nicename"],
|
|
urls: { "Website" => raw_info["user_url"] }
|
|
}
|
|
end
|
|
|
|
extra do
|
|
{ raw_info: raw_info }
|
|
end
|
|
|
|
def callback_url
|
|
full_host + script_name + callback_path
|
|
end
|
|
|
|
def raw_info
|
|
@raw_info ||= obtain_raw_info
|
|
end
|
|
|
|
def obtain_raw_info
|
|
access_token.get("/oauth/me", params: { "Authorization" => "Bearer #{access_token.token}" }).parsed
|
|
end
|
|
end
|
|
end
|
|
end
|