devise_sms_verifiable 0.0.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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +52 -0
- data/Rakefile +23 -0
- data/app/controllers/devise/sms_verifiable_controller.rb +40 -0
- data/app/views/devise/sms_verifiable/new.html.erb +9 -0
- data/lib/devise_sms_verifiable/controllers/internal_helpers.rb +22 -0
- data/lib/devise_sms_verifiable/controllers/url_helpers.rb +25 -0
- data/lib/devise_sms_verifiable/engine.rb +8 -0
- data/lib/devise_sms_verifiable/errors.rb +8 -0
- data/lib/devise_sms_verifiable/model.rb +14 -0
- data/lib/devise_sms_verifiable/provider.rb +34 -0
- data/lib/devise_sms_verifiable/routes.rb +13 -0
- data/lib/devise_sms_verifiable/version.rb +3 -0
- data/lib/devise_sms_verifiable.rb +46 -0
- data/lib/generators/devise_sms_verifiable/devise_sms_verifiable_generator.rb +13 -0
- data/lib/generators/devise_sms_verifiable/install_generator.rb +51 -0
- data/lib/generators/devise_sms_verifiable/templates/README +46 -0
- data/lib/generators/devise_sms_verifiable/views_generator.rb +14 -0
- metadata +190 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f43641b1daa208f257f6e2fd0600f9d61d404eff
|
4
|
+
data.tar.gz: 41390d88bc8995de5ec68c6b7e744777201c69af
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 521e1ed3a784343a950f50740ee2d3f8062d7ed4fd7cbf1f3fabfb5d7bb51e58e4bbf734a4980fa28e8e552c15df472a05bd1489af0d94d72fc70aa4c4d84631
|
7
|
+
data.tar.gz: a38f257ce07e413a83fca45a0eeba59381f7f4f20844dbb076be788e5d4f7e2645398b7ce82fbc37d56db281331367c82c2b745e5b75aad0dda35f70dea98e6d
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2014 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
= DeviseSmsVerifiable
|
2
|
+
|
3
|
+
===============================================================================
|
4
|
+
|
5
|
+
Some setup you must do manually if you haven't yet(in config/initializers/devise.rb):
|
6
|
+
|
7
|
+
1. You need field in model for confirm phone(must be boolean).
|
8
|
+
|
9
|
+
config.phone_confirmation_field = :phone_confirm
|
10
|
+
|
11
|
+
2.You need define method for check sms confirmation. (in ApplicationController)
|
12
|
+
|
13
|
+
config.sms_confirmation_method = :sms_confirmation?
|
14
|
+
|
15
|
+
3. Need a method that generates, writes the word model, returns the secret word. (in ApplicationController)
|
16
|
+
|
17
|
+
config.sms_secret_method = :sms_secret
|
18
|
+
|
19
|
+
4. Field in the model which returns the correct answer
|
20
|
+
|
21
|
+
config.sms_answer_field = :sms_answer
|
22
|
+
|
23
|
+
6. Field in model which phone number
|
24
|
+
|
25
|
+
config.phone_field = :phone
|
26
|
+
|
27
|
+
5. SMS provider module(have default for STREAM-TELECOM) you can define own
|
28
|
+
Provider module should be a method :send_sms
|
29
|
+
|
30
|
+
config.sms_provider = DeviseSmsVerifiable::Provider
|
31
|
+
|
32
|
+
7. Send sms silent for test
|
33
|
+
|
34
|
+
config.provider_silent = true
|
35
|
+
|
36
|
+
8. SMS provider login
|
37
|
+
|
38
|
+
config.provider_login = :provider_login
|
39
|
+
|
40
|
+
9. SMS provider password
|
41
|
+
|
42
|
+
config.provider_password :provider_password
|
43
|
+
|
44
|
+
10. SMS provider from
|
45
|
+
|
46
|
+
config.provider_from :provider_from
|
47
|
+
|
48
|
+
===============================================================================
|
49
|
+
|
50
|
+
Kiselenko Roman 2014-03-16
|
51
|
+
|
52
|
+
This project rocks and uses MIT-LICENSE.
|
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'DeviseSmsVerifiable'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
Bundler::GemHelper.install_tasks
|
23
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
class Devise::SmsVerifiableController < DeviseController
|
2
|
+
append_before_filter :sms_check_settings
|
3
|
+
|
4
|
+
def new
|
5
|
+
end
|
6
|
+
|
7
|
+
def create
|
8
|
+
resource.sms_secret = public_send("current_#{resource_name}").public_send(Devise::sms_answer_field)
|
9
|
+
secret = params[:user][:sms_secret]
|
10
|
+
if secret && resource.sms_secret && resource.valid_secret?(secret)
|
11
|
+
public_send("current_#{resource_name}").public_send(:update, Hash[Devise::phone_confirmation_field, true])
|
12
|
+
redirect_to after_successful_phone_confirmation_path(resource)
|
13
|
+
else
|
14
|
+
render :new
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def send_pass
|
19
|
+
number = public_send("current_#{resource_name}").public_send(Devise::phone_field)
|
20
|
+
provider = Devise::sms_provider
|
21
|
+
pass_word = public_send(Devise::sms_secret_method)
|
22
|
+
if [number, provider, pass_word].all?
|
23
|
+
provider.public_send(:send_sms, number, pass_word)
|
24
|
+
end
|
25
|
+
render :new
|
26
|
+
end
|
27
|
+
|
28
|
+
def resource
|
29
|
+
_resource = resource_class.new
|
30
|
+
instance_variable_set(:@user, _resource)
|
31
|
+
_resource
|
32
|
+
end
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
def after_successful_phone_confirmation_path(resource)
|
37
|
+
root_path
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<h2>Sms verifiable</h2>
|
2
|
+
<%= form_for(resource, :as => resource_name, :url => sms_path(resource_name)) do |f| %>
|
3
|
+
<%= devise_error_messages! %>
|
4
|
+
<p><%= f.label :sms_secret %><br />
|
5
|
+
<%= f.text_field :sms_secret %></p>
|
6
|
+
<p><%= f.submit "send" %></p>
|
7
|
+
<% end %>
|
8
|
+
<%= button_to 'send sms', public_send("send_pass_#{resource_name}_sms_path"), data: { method: :post } %>
|
9
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module DeviseSmsVerifiable
|
2
|
+
module Controllers
|
3
|
+
module InternalHelpers
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
def sms_check_settings
|
7
|
+
raise UnauthorizedAccess unless signed_in?(Devise::default_scope)
|
8
|
+
raise PhoneFieldNotFound unless public_send("current_#{resource_name}").respond_to?(Devise::phone_field)
|
9
|
+
raise PhoneFieldEmpty unless public_send("current_#{resource_name}").public_send(Devise::phone_field)
|
10
|
+
raise SecretMethodNotFound unless InternalHelpers::valid_method?(self, Devise::sms_secret_method)
|
11
|
+
raise ValidSendSmsMethodNotFound unless InternalHelpers::valid_method?(Devise::sms_provider, :send_sms)
|
12
|
+
rescue DeviseSmsVerifiableError, ArgumentError
|
13
|
+
raise "DeviseSmsVerifiableError module error: #{$!.message} "
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.valid_method?(caller, method)
|
17
|
+
method.kind_of?(Symbol) && caller.respond_to?(method)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module DeviseSmsVerifiable
|
2
|
+
module Controllers
|
3
|
+
module UrlHelpers
|
4
|
+
%i[path url].each do |path_or_url|
|
5
|
+
[nil, :new_, :accept_].each do |action|
|
6
|
+
class_eval <<-URL_HELPERS, __FILE__, __LINE__ + 1
|
7
|
+
def #{action}sms_#{path_or_url}(resource, *args)
|
8
|
+
resource = case resource
|
9
|
+
when Symbol, String
|
10
|
+
resource
|
11
|
+
when Class
|
12
|
+
resource.name.underscore
|
13
|
+
else
|
14
|
+
resource.class.name.underscore
|
15
|
+
end
|
16
|
+
|
17
|
+
public_send("#{action}\#{resource}_sms_#{path_or_url}", *args)
|
18
|
+
end
|
19
|
+
URL_HELPERS
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
@@ -0,0 +1,8 @@
|
|
1
|
+
module DeviseSmsVerifiable
|
2
|
+
class Engine < ::Rails::Engine
|
3
|
+
isolate_namespace DeviseSmsVerifiable
|
4
|
+
ActiveSupport.on_load(:action_controller) { include DeviseSmsVerifiable::Controllers::UrlHelpers }
|
5
|
+
ActiveSupport.on_load(:action_view) { include DeviseSmsVerifiable::Controllers::UrlHelpers }
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class DeviseSmsVerifiableError < RuntimeError;end
|
2
|
+
class UnauthorizedAccess < DeviseSmsVerifiableError;end
|
3
|
+
class ConfirmationMethodNotFound < DeviseSmsVerifiableError;end
|
4
|
+
class SecretMethodNotFound < DeviseSmsVerifiableError;end
|
5
|
+
class PhoneFieldNotFound < DeviseSmsVerifiableError;end
|
6
|
+
class PhoneFieldEmpty < DeviseSmsVerifiableError;end
|
7
|
+
class ValidSendSmsMethodNotFound < DeviseSmsVerifiableError;end
|
8
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
|
3
|
+
module DeviseSmsVerifiable
|
4
|
+
# This implementation only for "STREAM-TELECOM"
|
5
|
+
module Provider
|
6
|
+
MAIN_URL = "http://web.szk-info.ru/sendsms.php"
|
7
|
+
SENT_SMS_URL = "#{MAIN_URL}?user=%s&pwd=%s&sadr=%s&dadr=%s&text=%s"
|
8
|
+
CHECK_SMS_URL = "#{MAIN_URL}?user=%s&pwd=%s&smsid=%s"
|
9
|
+
|
10
|
+
def self.send_sms(number, message)
|
11
|
+
return 'test' if Devise::provider_silent
|
12
|
+
number = number.gsub(/\+/, '')
|
13
|
+
url = URI.escape(SENT_SMS_URL % [Devise::provider_login,
|
14
|
+
Devise::provider_password,
|
15
|
+
Devise::provider_from,
|
16
|
+
number,
|
17
|
+
message])
|
18
|
+
RestClient.get(url)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.check_status(sms_id)
|
22
|
+
url = CHECK_SMS_URL % [Devise::provider_login,
|
23
|
+
Devise::provider_password,
|
24
|
+
sms_id]
|
25
|
+
response = case RestClient.get(url)
|
26
|
+
when /Send/ then :send
|
27
|
+
when /deliver/ then :deliver
|
28
|
+
end
|
29
|
+
response
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module ActionDispatch::Routing
|
2
|
+
class Mapper
|
3
|
+
|
4
|
+
protected
|
5
|
+
def devise_sms_verifiable(mapping, controllers)
|
6
|
+
resource :sms, only: %i[new create], path: mapping.path_names[:sms], controller: controllers[:sms_verifiable] do
|
7
|
+
post :send_pass, to: :send_pass
|
8
|
+
end
|
9
|
+
DeviseController.send(:include, DeviseSmsVerifiable::Controllers::InternalHelpers)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require "devise"
|
2
|
+
require "devise_sms_verifiable/engine"
|
3
|
+
|
4
|
+
module DeviseSmsVerifiable
|
5
|
+
autoload :Provider, 'devise_sms_verifiable/provider'
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'devise_sms_verifiable/routes'
|
9
|
+
require 'devise_sms_verifiable/controllers/internal_helpers'
|
10
|
+
require 'devise_sms_verifiable/controllers/url_helpers'
|
11
|
+
require 'devise_sms_verifiable/engine'
|
12
|
+
require 'devise_sms_verifiable/errors'
|
13
|
+
|
14
|
+
module Devise
|
15
|
+
mattr_accessor :sms_confirmation_method
|
16
|
+
@@sms_confirmation_method = :sms_confirmation?
|
17
|
+
|
18
|
+
mattr_accessor :sms_secret_method
|
19
|
+
@@sms_secret_method = :sms_secret
|
20
|
+
|
21
|
+
mattr_accessor :sms_answer_field
|
22
|
+
@@sms_answer_field = :sms_answer
|
23
|
+
|
24
|
+
mattr_accessor :sms_provider
|
25
|
+
@@sms_provider = DeviseSmsVerifiable::Provider
|
26
|
+
|
27
|
+
mattr_accessor :phone_field
|
28
|
+
@@phone_field = :phone
|
29
|
+
|
30
|
+
mattr_accessor :phone_confirmation_field
|
31
|
+
@@phone_confirmation_field = :phone_confirm
|
32
|
+
|
33
|
+
mattr_accessor :provider_silent
|
34
|
+
@@provider_silent = true
|
35
|
+
|
36
|
+
mattr_accessor :provider_login
|
37
|
+
@@provider_login = 'kechinov'
|
38
|
+
|
39
|
+
mattr_accessor :provider_password
|
40
|
+
@@provider_password = 'KZslIzwL'
|
41
|
+
|
42
|
+
mattr_accessor :provider_from
|
43
|
+
@@provider_from = 'polis-test'
|
44
|
+
end
|
45
|
+
|
46
|
+
Devise.add_module :sms_verifiable, controller: :sms_verifiables, model: 'devise_sms_verifiable/model' , route: :sms_verifiable
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rails/generators/named_base'
|
2
|
+
|
3
|
+
module DeviseSmsVerifiable
|
4
|
+
class DeviseSmsVerifiableGenerator < Rails::Generators::NamedBase
|
5
|
+
namespace "devise_sms_verifiable"
|
6
|
+
desc "Choose:
|
7
|
+
\n
|
8
|
+
\033[31mrails g devise_sms_verifiable:install\e[0m\n
|
9
|
+
Add config variables to devise initializer.\n
|
10
|
+
\033[31mrails generate devise_sms_verifiable:views\e[0m\n
|
11
|
+
Install views to your app"
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module DeviseSmsVerifiable
|
4
|
+
class InstallGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path("../templates", __FILE__)
|
6
|
+
|
7
|
+
def add_config_options_to_initializer
|
8
|
+
devise_initializer_path = "config/initializers/devise.rb"
|
9
|
+
if File.exist?(devise_initializer_path)
|
10
|
+
old_content = File.read(devise_initializer_path)
|
11
|
+
|
12
|
+
if old_content.match(Regexp.new(/^\s# ==> Configuration for :sms_verifiable\n/))
|
13
|
+
false
|
14
|
+
else
|
15
|
+
inject_into_file(devise_initializer_path, before: "# ==> Configuration for :database_authenticatable\n") do
|
16
|
+
<<-CONTENT
|
17
|
+
# ==> Configuration for :sms_verifiable
|
18
|
+
# Field in model for confirm phone(must be boolean)
|
19
|
+
#config.phone_confirmation_field = :phone_confirm
|
20
|
+
# Method for check sms confirmation. Define in ApplicationController
|
21
|
+
#config.sms_confirmation_method = :sms_confirmation?
|
22
|
+
# Method generate secret and write to model. Define in ApplicationController
|
23
|
+
#config.sms_secret_method = :sms_secret
|
24
|
+
# Attribut on model return rigth answer
|
25
|
+
#config.sms_answer_field = :sms_answer
|
26
|
+
# Field in model which phone number
|
27
|
+
#config.phone_field = :phone
|
28
|
+
# Field in model for confirm phone(must be boolean)
|
29
|
+
#config.phone_confirmation_field = :phone_confirm
|
30
|
+
# SMS provider module(have default for STREAM-TELECOM)
|
31
|
+
#config.sms_provider = DeviseSmsVerifiable::Provider
|
32
|
+
# Send sms silent for test
|
33
|
+
#config.provider_silent = true
|
34
|
+
# SMS provider login
|
35
|
+
#config.provider_login = ""
|
36
|
+
# SMS provider password
|
37
|
+
#config.provider_password = ""
|
38
|
+
# SMS provider from
|
39
|
+
#config.provider_from = ""
|
40
|
+
\n
|
41
|
+
CONTENT
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def show_readme
|
48
|
+
readme "README"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
===============================================================================
|
2
|
+
|
3
|
+
Some setup you must do manually if you haven't yet(in config/initializers/devise.rb):
|
4
|
+
|
5
|
+
1. You need field in model for confirm phone(must be boolean).
|
6
|
+
|
7
|
+
config.phone_confirmation_field = :phone_confirm
|
8
|
+
|
9
|
+
2.You need define method for check sms confirmation. (in ApplicationController)
|
10
|
+
|
11
|
+
config.sms_confirmation_method = :sms_confirmation?
|
12
|
+
|
13
|
+
3. Need a method that generates, writes the word model, returns the secret word. (in ApplicationController)
|
14
|
+
|
15
|
+
config.sms_secret_method = :sms_secret
|
16
|
+
|
17
|
+
4. Field in the model which returns the correct answer
|
18
|
+
|
19
|
+
config.sms_answer_field = :sms_answer
|
20
|
+
|
21
|
+
6. Field in model which phone number
|
22
|
+
|
23
|
+
config.phone_field = :phone
|
24
|
+
|
25
|
+
5. SMS provider module(have default for STREAM-TELECOM) you can define own
|
26
|
+
Provider module should be a method :sms_
|
27
|
+
|
28
|
+
config.sms_provider = DeviseSmsVerifiable::Provider
|
29
|
+
|
30
|
+
7. Send sms silent for test
|
31
|
+
|
32
|
+
config.provider_silent = true
|
33
|
+
|
34
|
+
8. SMS provider login
|
35
|
+
|
36
|
+
config.provider_login = :provider_login
|
37
|
+
|
38
|
+
9. SMS provider password
|
39
|
+
|
40
|
+
config.provider_password :provider_password
|
41
|
+
|
42
|
+
10. SMS provider from
|
43
|
+
|
44
|
+
config.provider_from :provider_from
|
45
|
+
|
46
|
+
===============================================================================
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module DeviseSmsVerifiable
|
4
|
+
class ViewsGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path("../../../../app/views", __FILE__)
|
6
|
+
|
7
|
+
def copy_views_sms
|
8
|
+
exist_path = 'app/views/devise'
|
9
|
+
if File.exist? exist_path
|
10
|
+
directory('devise', exist_path)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
metadata
ADDED
@@ -0,0 +1,190 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: devise_sms_verifiable
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kiselenko Roman
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.0.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.0.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: devise
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rest_client
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec-rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: capybara
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: factory_girl_rails
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: ffaker
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: sqlite3
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: |2
|
140
|
+
Description of DeviseSmsVerifiable:
|
141
|
+
Module provide sms functions, easy to use and customize.
|
142
|
+
email:
|
143
|
+
- shindu666@gmail.com
|
144
|
+
executables: []
|
145
|
+
extensions: []
|
146
|
+
extra_rdoc_files: []
|
147
|
+
files:
|
148
|
+
- app/controllers/devise/sms_verifiable_controller.rb
|
149
|
+
- app/views/devise/sms_verifiable/new.html.erb
|
150
|
+
- lib/devise_sms_verifiable/controllers/internal_helpers.rb
|
151
|
+
- lib/devise_sms_verifiable/controllers/url_helpers.rb
|
152
|
+
- lib/devise_sms_verifiable/engine.rb
|
153
|
+
- lib/devise_sms_verifiable/errors.rb
|
154
|
+
- lib/devise_sms_verifiable/model.rb
|
155
|
+
- lib/devise_sms_verifiable/provider.rb
|
156
|
+
- lib/devise_sms_verifiable/routes.rb
|
157
|
+
- lib/devise_sms_verifiable/version.rb
|
158
|
+
- lib/devise_sms_verifiable.rb
|
159
|
+
- lib/generators/devise_sms_verifiable/devise_sms_verifiable_generator.rb
|
160
|
+
- lib/generators/devise_sms_verifiable/install_generator.rb
|
161
|
+
- lib/generators/devise_sms_verifiable/templates/README
|
162
|
+
- lib/generators/devise_sms_verifiable/views_generator.rb
|
163
|
+
- MIT-LICENSE
|
164
|
+
- Rakefile
|
165
|
+
- README.rdoc
|
166
|
+
homepage: ''
|
167
|
+
licenses: []
|
168
|
+
metadata: {}
|
169
|
+
post_install_message:
|
170
|
+
rdoc_options: []
|
171
|
+
require_paths:
|
172
|
+
- lib
|
173
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - '>='
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - '>='
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '0'
|
183
|
+
requirements: []
|
184
|
+
rubyforge_project:
|
185
|
+
rubygems_version: 2.1.11
|
186
|
+
signing_key:
|
187
|
+
specification_version: 4
|
188
|
+
summary: DeviseSmsVerifiable it is simple fork devise_sms_activable for my project`s
|
189
|
+
test_files: []
|
190
|
+
has_rdoc:
|