loginradius 0.1.1
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.
- data/Manifest +4 -0
- data/README.rdoc +22 -0
- data/Rakefile +14 -0
- data/lib/loginradius.rb +72 -0
- data/loginradius.gemspec +29 -0
- metadata +57 -0
data/Manifest
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
= LoginRadius
|
2
|
+
|
3
|
+
Rails gem which enables token authentication against loginradius.com
|
4
|
+
|
5
|
+
== Example usage
|
6
|
+
|
7
|
+
class SessionsController < ApplicationController
|
8
|
+
protect_from_forgery :except => :callback
|
9
|
+
|
10
|
+
def callback
|
11
|
+
logger.debug "received LoginRadius callback!"
|
12
|
+
|
13
|
+
# Initialize the LoginRadius session - API key
|
14
|
+
loginradius = LoginRadius::LoginRadiusSession.new "INSERT YOUR KEY HERE"
|
15
|
+
|
16
|
+
# Authenticate the LoginRadius session vs. the token being passed to our app
|
17
|
+
if loginradius.authenticate_token? params[:token], params[:lrid]
|
18
|
+
logger.debug "successfully authenticated LoginRadius"
|
19
|
+
logger.debug loginradius.data
|
20
|
+
|
21
|
+
# Now need to create user record or login user
|
22
|
+
...
|
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('loginradius', '0.1.1') do |p|
|
6
|
+
p.description = "Enables token authentication against loginradius.com"
|
7
|
+
p.url = "http://github.com/sicruse/loginradius"
|
8
|
+
p.author = "Si Cruse"
|
9
|
+
p.email = "si@mindcultivator.com"
|
10
|
+
p.ignore_pattern = ["tmp/*", "script/*"]
|
11
|
+
p.development_dependencies = []
|
12
|
+
end
|
13
|
+
|
14
|
+
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
data/lib/loginradius.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
#
|
2
|
+
# loginradius.rb
|
3
|
+
# loginradius
|
4
|
+
#
|
5
|
+
# Created by Si Cruse on 2012-03-29.
|
6
|
+
# Copyright 2012 Si Cruse. All rights reserved.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'cgi'
|
10
|
+
require 'uri'
|
11
|
+
require 'net/http'
|
12
|
+
require 'net/https'
|
13
|
+
require 'json'
|
14
|
+
|
15
|
+
module LoginRadius
|
16
|
+
|
17
|
+
class LoginRadiusException < StandardError
|
18
|
+
attr_reader :http_response
|
19
|
+
def initialize(http_response)
|
20
|
+
@http_response = http_response
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class LoginRadiusSession
|
25
|
+
attr_reader :api_key, :base_url, :data
|
26
|
+
|
27
|
+
def initialize(api_key, base_url = "http://hub.loginradius.com")
|
28
|
+
@api_key = api_key
|
29
|
+
@base_url = base_url.sub(/\/*$/, '')
|
30
|
+
@data = ""
|
31
|
+
end
|
32
|
+
|
33
|
+
def authenticate_token?(token, id)
|
34
|
+
@data = api_call 'userprofile', :token => token
|
35
|
+
result = (@data['ID'].to_s == id.to_s)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def api_call(method_name, partial_query)
|
41
|
+
query = partial_query.dup
|
42
|
+
query['apisecrete'] = @api_key
|
43
|
+
|
44
|
+
data = query.map { |k,v|
|
45
|
+
"#{CGI::escape k.to_s}=#{CGI::escape v.to_s}"
|
46
|
+
}.join('&')
|
47
|
+
|
48
|
+
path = "#{@base_url}/#{method_name}.ashx/?" + data
|
49
|
+
url = URI.parse(path)
|
50
|
+
|
51
|
+
http = Net::HTTP.new(url.host, url.port)
|
52
|
+
if url.scheme == 'https'
|
53
|
+
http.use_ssl = true
|
54
|
+
end
|
55
|
+
|
56
|
+
resp = Net::HTTP.get_response(URI.parse(path))
|
57
|
+
|
58
|
+
if resp.response.code == '200'
|
59
|
+
begin
|
60
|
+
data = JSON.parse(resp.response.body)
|
61
|
+
rescue JSON::ParserError => err
|
62
|
+
raise LoginRadiusRException.new(resp.response), 'LoginRadiusSession: Unable to parse JSON response'
|
63
|
+
end
|
64
|
+
else
|
65
|
+
raise LoginRadiusException.new(resp.response), "LoginRadiusSession: Unexpected HTTP status code from server: #{resp.response.code}"
|
66
|
+
end
|
67
|
+
|
68
|
+
return data
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
data/loginradius.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = "loginradius"
|
5
|
+
s.version = "0.1.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Si Cruse"]
|
9
|
+
s.date = "2012-03-29"
|
10
|
+
s.description = "Enables token authentication against loginradius.com"
|
11
|
+
s.email = "si@mindcultivator.com"
|
12
|
+
s.extra_rdoc_files = ["README.rdoc", "lib/loginradius.rb"]
|
13
|
+
s.files = ["README.rdoc", "Rakefile", "lib/loginradius.rb", "Manifest", "loginradius.gemspec"]
|
14
|
+
s.homepage = "http://github.com/sicruse/loginradius"
|
15
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Loginradius", "--main", "README.rdoc"]
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
s.rubyforge_project = "loginradius"
|
18
|
+
s.rubygems_version = "1.8.21"
|
19
|
+
s.summary = "Enables token authentication against loginradius.com"
|
20
|
+
|
21
|
+
if s.respond_to? :specification_version then
|
22
|
+
s.specification_version = 3
|
23
|
+
|
24
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
25
|
+
else
|
26
|
+
end
|
27
|
+
else
|
28
|
+
end
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: loginradius
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Si Cruse
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-29 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Enables token authentication against loginradius.com
|
15
|
+
email: si@mindcultivator.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files:
|
19
|
+
- README.rdoc
|
20
|
+
- lib/loginradius.rb
|
21
|
+
files:
|
22
|
+
- README.rdoc
|
23
|
+
- Rakefile
|
24
|
+
- lib/loginradius.rb
|
25
|
+
- Manifest
|
26
|
+
- loginradius.gemspec
|
27
|
+
homepage: http://github.com/sicruse/loginradius
|
28
|
+
licenses: []
|
29
|
+
post_install_message:
|
30
|
+
rdoc_options:
|
31
|
+
- --line-numbers
|
32
|
+
- --inline-source
|
33
|
+
- --title
|
34
|
+
- Loginradius
|
35
|
+
- --main
|
36
|
+
- README.rdoc
|
37
|
+
require_paths:
|
38
|
+
- lib
|
39
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
47
|
+
requirements:
|
48
|
+
- - ! '>='
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '1.2'
|
51
|
+
requirements: []
|
52
|
+
rubyforge_project: loginradius
|
53
|
+
rubygems_version: 1.8.21
|
54
|
+
signing_key:
|
55
|
+
specification_version: 3
|
56
|
+
summary: Enables token authentication against loginradius.com
|
57
|
+
test_files: []
|