omniauth-magento 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f117f804c4f090da24f4a13c085075bb8c6ac3e
4
- data.tar.gz: 679f4e455f8caea92a25c90bcbe66a2f5d497b65
3
+ metadata.gz: 35ecc46b30899582767672d0d2547d9f99af3653
4
+ data.tar.gz: dcd44bb8bdd75b1cb0475448fe1bc534a5712d33
5
5
  SHA512:
6
- metadata.gz: 136cb231a7f1b8ef01572186ce1502add4920d5d194ce74cbb07d1f70edf8dbcfc1477ef2ce0201b7d787d730da106776b8f32336f475e88917b396b4a550bba
7
- data.tar.gz: 56317faab80cb7d83d6c36d64d0b59abfc36e5ae52f841979acde09c8949b7709591a000bd1cfd881827edaa3220e14438c51efe0ef8a806fb5e3fc1cd76e675
6
+ metadata.gz: b9f9fc91ec0b3ce347ade68b46946aff9cf958cadea69c838055332fbbc2ce0a5fb53b5fe062918f0a58a0f12d753dd13f34c4bc42bb033b5b5b478f91d61283
7
+ data.tar.gz: a1112d61860c8e5a691c08d3fde8c69bac25673099854bcc8e43b8241c1de3306d1d7443496943e98453188057a94424fa54f923880a9c1a347e321f8c4f4398
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in omniauth-magento.gemspec
4
+ gemspec
@@ -0,0 +1,86 @@
1
+ # Omniauth::Magento
2
+
3
+ An Omniauth strategy for Magento. Works only with the newer Magento REST api (not SOAP).
4
+
5
+ ## Instructions on how to use with Rails
6
+
7
+ ### Setting up Magento
8
+
9
+ * [Set up a consumer in Magento](http://www.magentocommerce.com/api/rest/authentication/oauth_configuration.html) and write down consumer key and consumer secret
10
+ * In the Magento Admin backend, go to `System > Web Services > REST Roles`, select `Customer`, and tick `Retrieve` under `Customer`
11
+ * In the Magento Admin backend, go to `System > Web Services > REST Attributes`, select `Customer`, and tick `Email`, `First name` and `Last name` under `Customer` > `Read`.
12
+
13
+ ### Setting up Rails
14
+
15
+ Parts of these instructions are based on these [OmniAuth instructions](https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview), which you can read in case you get stuck.
16
+
17
+ * Install [Devise](https://github.com/plataformatec/devise) if you haven't installed it
18
+ * Load this library into your Gemfile: `gem "omniauth-magento", github: "Zookal/omniauth-magento"`
19
+ * Run `bundle install`
20
+ * Modify `config/initializers/devise.rb`:
21
+
22
+ ```
23
+ Devise.setup do |config|
24
+ # deactivate SSL on development environment
25
+ OpenSSL::SSL::VERIFY_PEER ||= OpenSSL::SSL::VERIFY_NONE if Rails.env.development?
26
+ config.omniauth :magento, ENTER_YOUR_MAGENTO_CONSUMER_KEY, ENTER_YOUR_MAGENTO_CONSUMER_SECRET, { :client_options => { :site => ENTER_YOUR_MAGENTO_URL_WITHOUT_TRAILING_SLASH } }
27
+ # example:
28
+ # config.omniauth :magento, "12a3", "45e6", { :client_options => { :site => "http://localhost/magento" } }
29
+ ```
30
+
31
+ * Make sure you have the columns `first_name`, `last_name`, `magento_id` and `email` in your `User` table
32
+ * Add this line to your view `<%= link_to "Sign in with Magento", user_omniauth_authorize_path(:magento) %>`
33
+ * Add / replace this line in your `routes.rb` `devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }`. This will be called once Magento has successfully authorized and returns to the Rails app.
34
+ * In your folder `controllers`, create a subfolder `users`
35
+ * In that subfolder `app/controllers/users/`, create a file `omniauth_callbacks_controller.rb` with the following code (from Devise wiki linked above):
36
+
37
+ ```
38
+ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
39
+ def magento
40
+ # You need to implement the method below in your model (e.g. app/models/user.rb)
41
+ @user = User.find_for_magento_oauth(request.env["omniauth.auth"], current_user)
42
+
43
+ if @user.persisted?
44
+ sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
45
+ set_flash_message(:notice, :success, :kind => "magento") if is_navigational_format?
46
+ else
47
+ session["devise.magento_data"] = request.env["omniauth.auth"]
48
+ redirect_to new_user_registration_url
49
+ end
50
+ end
51
+ end
52
+ ```
53
+
54
+ * Set up your User model to be omniauthable `:omniauthable, :omniauth_providers => [:magento]` and to contain the `find_for_magento_oauth` method (from Devise wiki linked above)
55
+
56
+ ```
57
+ class User < ActiveRecord::Base
58
+ devise :database_authenticatable, :registerable, :recoverable,
59
+ :rememberable, :trackable, :validatable, :timeoutable,
60
+ :omniauthable, :omniauth_providers => [:magento]
61
+
62
+ def self.find_for_magento_oauth(auth, signed_in_resource=nil)
63
+ user = User.find_by(magento_id: auth.uid)
64
+ unless user
65
+ user = User.create!(
66
+ first_name: auth.info.first_name,
67
+ last_name: auth.info.last_name,
68
+ magento_id: auth.uid,
69
+ email: auth.info.email,
70
+ password: Devise.friendly_token[0,20]
71
+ )
72
+ end
73
+ user
74
+ end
75
+ end
76
+ ```
77
+
78
+ ### Authenticating
79
+
80
+ * Start your Rails server
81
+ * Start your Magento server
82
+ * Log into Magento with a customer (not admin) account
83
+ * In your Rails app, go to the view where you pasted this line `<%= link_to "Sign in with Magento", user_omniauth_authorize_path(:magento) %>`
84
+ * Click on the link
85
+ * You now should be directed to a Magento view where you are prompted to authorize access to the Magento user account
86
+ * Once you have confirmed, you should get logged into Rails and redirected to the callback URL specified above. The User model should also create a database entry when the user logs in for the first time.
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,2 @@
1
+ require 'omniauth/magento/version'
2
+ require 'omniauth/strategies/magento'
@@ -0,0 +1,5 @@
1
+ module Omniauth
2
+ module Magento
3
+ VERSION = "0.0.3"
4
+ end
5
+ end
@@ -0,0 +1,33 @@
1
+ require 'omniauth/strategies/oauth'
2
+ require 'multi_json'
3
+
4
+ module OmniAuth
5
+ module Strategies
6
+ class Magento < OmniAuth::Strategies::OAuth
7
+ option :name, "magento"
8
+
9
+ option :client_options, {
10
+ :access_token_path => "/oauth/token",
11
+ :authorize_path => "/oauth/authorize",
12
+ :request_token_path => "/oauth/initiate",
13
+ }
14
+
15
+ # set uid
16
+ uid { raw_info.keys.first.to_i }
17
+
18
+ # set additional info
19
+ info do
20
+ {
21
+ 'first_name' => raw_info.values.first["firstname"],
22
+ 'last_name' => raw_info.values.first["lastname"],
23
+ 'email' => raw_info.values.first["email"]
24
+ }
25
+ end
26
+
27
+ # get info about current user
28
+ def raw_info
29
+ @raw_info ||= MultiJson.decode(access_token.get('/api/rest/customers').body)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'omniauth/magento/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'omniauth-magento'
8
+ spec.version = Omniauth::Magento::VERSION
9
+ spec.summary = 'Omniauth strategy for Magento'
10
+ spec.homepage = 'https://github.com/Zookal/omniauth-magento'
11
+ spec.email = "michael@zookal.com"
12
+ spec.authors = ['Chris Baynes', 'Daniel Mahlow', 'Michael Imstepf']
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files`.split("\n")
16
+ spec.require_paths = ['lib']
17
+
18
+ spec.add_development_dependency 'bundler', '~> 1.3'
19
+ spec.add_development_dependency 'rake'
20
+ spec.add_runtime_dependency 'omniauth-oauth', '~> 1.0'
21
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-magento
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Baynes
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-12-08 00:00:00.000000000 Z
13
+ date: 2013-12-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -59,7 +59,15 @@ email: michael@zookal.com
59
59
  executables: []
60
60
  extensions: []
61
61
  extra_rdoc_files: []
62
- files: []
62
+ files:
63
+ - .gitignore
64
+ - Gemfile
65
+ - README.md
66
+ - Rakefile
67
+ - lib/omniauth/magento.rb
68
+ - lib/omniauth/magento/version.rb
69
+ - lib/omniauth/strategies/magento.rb
70
+ - omniauth-magento.gemspec
63
71
  homepage: https://github.com/Zookal/omniauth-magento
64
72
  licenses:
65
73
  - MIT