twilioauth 0.0.4 → 0.0.5

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.
Files changed (4) hide show
  1. data/README.md +39 -2
  2. data/lib/twilioauth.rb +1 -69
  3. data/twilioauth.gemspec +1 -1
  4. metadata +1 -1
data/README.md CHANGED
@@ -8,11 +8,48 @@ Usage
8
8
 
9
9
  ``` ruby
10
10
  require "twilioauth"
11
- twilio = Twilioauth.auth("+15555555555", :account_sid => "*************", :auth_token => "****************")
11
+ pin = Twilioauth.auth("+15555555555", :account_sid => "*************", :auth_token => "****************")
12
12
  ```
13
13
 
14
+ Simple example with controller methods.
15
+
16
+ ``` ruby
17
+
18
+ def login
19
+ #login has succeeded and now need to check pin
20
+ session[:pin] = Twilioauth.auth(@user.phone, :account_sid => "**********", :auth_token => "**********")
21
+ session[:pendinguser] = {name: params[:name], password: params[:password]}
22
+ redirect_to "/auth"
23
+ end
24
+
25
+ def auth
26
+ #form to enter pin here and submits to check_auth
27
+ unless session[:pendinguser]
28
+ redirect_to "/login"
29
+ end
30
+ end
31
+
32
+ def check_auth
33
+ #if the pin is the same set the user session
34
+ if params[:pin] == session[:pin]
35
+ session[:user] = session[:pendinguser]
36
+ redirect_to "/success"
37
+ else
38
+ redirect_to "/login?pin_failed=true"
39
+ end
40
+ end
41
+ ```
42
+
43
+ TODO
44
+ ----
45
+
46
+ Roll twilioauth into a rails engine with controllers and forms to handle everything for the developer.
47
+
14
48
  History
15
49
  ----------
50
+ 0.0.5 removed a lot of unnecessary random charcter code.
51
+
52
+ 0.0.4 first working version for rails integration
16
53
 
54
+ 0.0.1 first working sms auth.
17
55
 
18
- 0.0.1 first working sms auth.
@@ -27,77 +27,9 @@ module Twilioauth
27
27
 
28
28
  def self.auth(number, options = {})
29
29
  connection = Twilioauth::Connection.new(options[:account_sid], options[:auth_token])
30
- newpin = random_bytes(3).unpack("H*")[0]
30
+ newpin = SecureRandom.hex(3)
31
31
  connection.sms(newpin, number)
32
32
  return newpin
33
33
  end
34
34
 
35
- def self.random_bytes(n=nil)
36
- n ||= 16
37
-
38
- unless defined? OpenSSL
39
- begin
40
- require 'openssl'
41
- rescue LoadError
42
- end
43
- end
44
-
45
- if defined? OpenSSL::Random
46
- return OpenSSL::Random.random_bytes(n)
47
- end
48
-
49
- if !defined?(@has_urandom) || @has_urandom
50
- flags = File::RDONLY
51
- flags |= File::NONBLOCK if defined? File::NONBLOCK
52
- flags |= File::NOCTTY if defined? File::NOCTTY
53
- flags |= File::NOFOLLOW if defined? File::NOFOLLOW
54
- begin
55
- File.open("/dev/urandom", flags) {|f|
56
- unless f.stat.chardev?
57
- raise Errno::ENOENT
58
- end
59
- @has_urandom = true
60
- ret = f.readpartial(n)
61
- if ret.length != n
62
- raise NotImplementedError, "Unexpected partial read from random device"
63
- end
64
- return ret
65
- }
66
- rescue Errno::ENOENT
67
- @has_urandom = false
68
- end
69
- end
70
-
71
- if !defined?(@has_win32)
72
- begin
73
- require 'Win32API'
74
-
75
- crypt_acquire_context = Win32API.new("advapi32", "CryptAcquireContext", 'PPPII', 'L')
76
- @crypt_gen_random = Win32API.new("advapi32", "CryptGenRandom", 'LIP', 'L')
77
-
78
- hProvStr = " " * 4
79
- prov_rsa_full = 1
80
- crypt_verifycontext = 0xF0000000
81
-
82
- if crypt_acquire_context.call(hProvStr, nil, nil, prov_rsa_full, crypt_verifycontext) == 0
83
- raise SystemCallError, "CryptAcquireContext failed: #{lastWin32ErrorMessage}"
84
- end
85
- @hProv, = hProvStr.unpack('L')
86
-
87
- @has_win32 = true
88
- rescue LoadError
89
- @has_win32 = false
90
- end
91
- end
92
- if @has_win32
93
- bytes = " " * n
94
- if @crypt_gen_random.call(@hProv, bytes.size, bytes) == 0
95
- raise SystemCallError, "CryptGenRandom failed: #{lastWin32ErrorMessage}"
96
- end
97
- return bytes
98
- end
99
-
100
- raise NotImplementedError, "No random device"
101
- end
102
-
103
35
  end
@@ -3,7 +3,7 @@ $:.unshift lib unless $:.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'twilioauth'
6
- s.version = '0.0.4'
6
+ s.version = '0.0.5'
7
7
  s.date = '2012-08-08'
8
8
  s.summary = "2 factor auth for twilio"
9
9
  s.description = "2 factor auth for twilio"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twilioauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: