omniauth-munic 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1e453c7aa6dbba1c851623524a53ff2fa58c8f13
4
+ data.tar.gz: 4977c2b7818114704acfec7a2369e1a09b3f3cc1
5
+ SHA512:
6
+ metadata.gz: 6bc1f787c006e54ad0a1f1113816a80fc935c6b50f4d11748f9fa25a2fde8eef3e8698dd0a170ec3734071d617fbb40ce28d1d8316f52ae4ae9c6860aea3dec5
7
+ data.tar.gz: af1ff396de3b034046265a85af95b08e4c4452a29e678bfe666568702c8ee28bebb5975036312646788be646b957ff14b35c7a4254bd345175411719471d2e68
data/.gitignore ADDED
@@ -0,0 +1,18 @@
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
18
+ *.swp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in omniauth-munic.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,131 @@
1
+ # Omniauth::Munic
2
+
3
+ This gem contains the MunicConnect strategy for OmniAuth.
4
+
5
+ ## Installation
6
+
7
+ Add these lines to your Gemfile:
8
+
9
+ ```ruby
10
+ gem 'omniauth-munic'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install omniauth-munic
20
+
21
+ ### Register your application on MunicConnect
22
+
23
+ First, you need to register your application on MunicConnect. [Here](https://connect.munic.io/oauth/applications) you can create a new application (you need to be logged in with your MunicConnect account).
24
+
25
+ * Name : Name of your application
26
+ * Private : If yes, MunicConnect User must be approved (by you) before be abble to sign in your application; else, any MunicConnect User can sign in.
27
+ * Authorized users : If your application is private, this allow you to authorize users to acces your application.
28
+ * Redirect uri : After successfull sign in on MunicConnect, customer will be redirected on your application. E.g. '[yoursite]/auth/munic/callback'. (You will re-use it [here](#routes).)
29
+
30
+ ### Set Application uid and Secret
31
+ [Applications](https://connect.munic.io/oauth/applications) is listing all your applications. By clicking on the name of an application, you can get information about it, especially two strings of 64 hexadecimal characters long : "Application" and "Secret". _DO NOT_ share this credentials !
32
+
33
+ Put them in `config/initializers/omniauth.rb` like so :
34
+
35
+ Rails.application.config.middleware.use OmniAuth::Builder do
36
+ provider :munic, 'APPLICATION', 'SECRET'
37
+ end
38
+
39
+ ### Routes
40
+ In `config/routes.rb`, you must `get` the [redirect uri](#register-your-application-on-municconnect) and trigger an action.
41
+
42
+ Basically you will need to create a session on your site :
43
+
44
+ get 'REDIRECT_URI', to: 'SESSION_CONTROLLER_NAME#create'
45
+
46
+ E.g.
47
+
48
+ get '/auth/munic/callback', to: 'sessions#create_from_munic'
49
+
50
+
51
+ ### Model and Controller
52
+
53
+ You have to manage your own Model User and Sessions Controller.
54
+ Above are examples.
55
+
56
+ #### Users Table
57
+ create_table :users do |t|
58
+ t.string :provider
59
+ t.string :uid
60
+ t.string :email
61
+ end
62
+
63
+ #### User Model
64
+ def self.create_with_omniauth(auth)
65
+ create! do |user|
66
+ user.provider = auth["provider"]
67
+ user.uid = auth["uid"]
68
+ user.email = auth["info"].email
69
+ end
70
+ end
71
+
72
+ #### Session Controller
73
+ def create_from_munic
74
+ auth = request.env["omniauth.auth"]
75
+ user = User.find_by_provider_and_uid(auth[:provider], auth[:uid]) || User.create_with_omniauth(auth)
76
+ redirect_to root_url, :notice => "Signed in!"
77
+ end
78
+
79
+ ### Link to "Sign in with Munic"
80
+ <%= link_to "Sign in with Munic", "/auth/munic" %>
81
+
82
+
83
+ ### Redirect to exact same point after successfull sign in (optional)
84
+ In your Session Controller add the following line :
85
+
86
+ redirect_to request.env["omniauth.origin"] || root_url, :notice => "Signed in!"
87
+
88
+
89
+ ## Usage
90
+
91
+ ### User's information
92
+ You can get user's information when [creating a session](#session-controller) with this line :
93
+
94
+ auth = request.env["omniauth.auth"]
95
+ auth["info"]
96
+
97
+ You can get :
98
+ * Email -> auth["info"].email
99
+ * Full Name -> auth["info"].full_name
100
+ * Company Name -> auth["info"].company_name if present
101
+ * Time Zone -> auth["info"].time_zone if present
102
+ * V.a.t -> auth["info"].vat if present
103
+ * Language -> auth["info"].language
104
+
105
+ ### Update User's information
106
+ If you store information in your database, you may want to update it. This method needs the user to sign-in to update information.
107
+
108
+ #### User Model
109
+ Add this method to your user model :
110
+
111
+ def update_info(info)
112
+ if self.updated_at < info.updated_at
113
+ self.update_attribute(:email, info.email)
114
+ #update other information you have stored
115
+ end
116
+ end
117
+
118
+ #### Session Controller
119
+ Add this line to your session creation :
120
+
121
+ def create_from_munic
122
+ auth = request.env["omniauth.auth"]
123
+ user = User.find_by_provider_and_uid(auth[:provider], auth[:uid]) || User.create_with_omniauth(auth)
124
+ user.update_info(auth[:extra][:raw_info]) #
125
+ redirect_to root_url, :notice => "Signed in!"
126
+ end
127
+
128
+ ## Refresh token
129
+ Please note that the gem does not provide a helper to refresh the access token once it has expried. Each partner application will have to implment it.
130
+ Please use [munic connect documentation](https://connect.munic.io/docs/api/v1) for implement refresh token fallback.
131
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'omniauth-munic'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require 'irb'
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,37 @@
1
+ module OmniAuth
2
+ module Strategies
3
+ autoload :Munic, 'omniauth/strategies/munic'
4
+
5
+ class Munic < OmniAuth::Strategies::OAuth2
6
+ # Give your strategy a name.
7
+ option :name, 'munic'
8
+
9
+ # This is where you pass the options you would pass when
10
+ # initializing your consumer from the OAuth gem.
11
+ option :client_options, {:site => 'https://connect.munic.io'}
12
+
13
+ # These are called after authentication has succeeded. If
14
+ # possible, you should try to set the UID without making
15
+ # additional calls (if the user id is returned with the token
16
+ # or as a URI parameter). This may not be possible with all
17
+ # providers.
18
+ uid { raw_info['uid'] }
19
+
20
+ info do
21
+ i = {
22
+ email: raw_info['email'],
23
+ full_name: raw_info['full_name'],
24
+ language: raw_info['language']
25
+ }
26
+ i[:time_zone] = raw_info['time_zone'] unless raw_info['time_zone'].nil?
27
+ i[:company] = raw_info['company'] unless raw_info['company'].nil?
28
+ i[:vat] = raw_info['vat'] unless raw_info['vat'].nil?
29
+ i
30
+ end
31
+
32
+ def raw_info
33
+ @raw_info ||= access_token.get('/api/v1/users/me.json').parsed
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,5 @@
1
+ module OmniAuth
2
+ module Munic
3
+ VERSION = '1.0'
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ require 'omniauth-oauth2'
2
+ require 'omniauth-munic/version'
3
+ require 'omniauth/strategies/munic'
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'omniauth-munic/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.add_dependency 'omniauth-oauth2', '~> 1.3.1'
8
+
9
+ spec.name = 'omniauth-munic'
10
+ spec.version = OmniAuth::Munic::VERSION
11
+ spec.authors = ['maxime dufay']
12
+ spec.email = ['maxime.dufay@mobile-devices.fr']
13
+
14
+ spec.description = 'The Munic OAuth2 strategy for OmniAuth 1.x.'
15
+ spec.summary = spec.description
16
+ spec.homepage = 'https://github.com/municio/omniauth-munic'
17
+ spec.license = 'MIT'
18
+
19
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
+ spec.bindir = 'exe'
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ['lib']
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.9'
25
+ spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'rspec', '~> 3.5', '>= 3.5.0'
27
+ spec.add_development_dependency 'omniauth-oauth2', '~> 1.3.1'
28
+ end
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: omniauth-munic
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.0'
5
+ platform: ruby
6
+ authors:
7
+ - maxime dufay
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-02-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: omniauth-oauth2
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.3.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.3.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.9'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.9'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.5'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 3.5.0
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '3.5'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 3.5.0
75
+ - !ruby/object:Gem::Dependency
76
+ name: omniauth-oauth2
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 1.3.1
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.1
89
+ description: The Munic OAuth2 strategy for OmniAuth 1.x.
90
+ email:
91
+ - maxime.dufay@mobile-devices.fr
92
+ executables: []
93
+ extensions: []
94
+ extra_rdoc_files: []
95
+ files:
96
+ - ".gitignore"
97
+ - Gemfile
98
+ - README.md
99
+ - Rakefile
100
+ - bin/console
101
+ - bin/setup
102
+ - lib/omniauth-munic.rb
103
+ - lib/omniauth-munic/version.rb
104
+ - lib/omniauth/strategies/munic.rb
105
+ - omniauth-munic.gemspec
106
+ homepage: https://github.com/municio/omniauth-munic
107
+ licenses:
108
+ - MIT
109
+ metadata: {}
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ requirements: []
125
+ rubyforge_project:
126
+ rubygems_version: 2.5.1
127
+ signing_key:
128
+ specification_version: 4
129
+ summary: The Munic OAuth2 strategy for OmniAuth 1.x.
130
+ test_files: []