passconf 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +15 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +87 -0
  4. data/Rakefile +40 -0
  5. data/app/assets/javascripts/passconf/application.js +1 -0
  6. data/app/assets/javascripts/passconf/index.js +1 -0
  7. data/app/assets/javascripts/passconf/password_template.js +15 -0
  8. data/app/assets/stylesheets/passconf/application.css +15 -0
  9. data/app/assets/stylesheets/passconf/index.css +13 -0
  10. data/app/controllers/passconf/application_controller.rb +4 -0
  11. data/app/controllers/passconf/password_confirmations_controller.rb +28 -0
  12. data/app/helpers/passconf/application_helper.rb +26 -0
  13. data/app/helpers/passconf/password_confirmations_helper.rb +4 -0
  14. data/app/views/layouts/passconf/_password_confirmation.html.erb +34 -0
  15. data/app/views/layouts/passconf/_phr_section.html.erb +2 -0
  16. data/app/views/layouts/passconf/application.html.erb +14 -0
  17. data/app/views/passconf/password_confirmations/password_authentication.js.erb +41 -0
  18. data/app/views/passconf/password_confirmations/password_dialog.js.erb +12 -0
  19. data/config/routes.rb +9 -0
  20. data/lib/generators/passconf/assets_generator.rb +11 -0
  21. data/lib/generators/passconf/controllers_generator.rb +10 -0
  22. data/lib/generators/passconf/migrations_generator.rb +18 -0
  23. data/lib/generators/passconf/views_generator.rb +13 -0
  24. data/lib/generators/templates/add_password_status_columns.rb +9 -0
  25. data/lib/passconf.rb +4 -0
  26. data/lib/passconf/engine.rb +11 -0
  27. data/lib/passconf/version.rb +3 -0
  28. data/lib/tasks/passconf_tasks.rake +4 -0
  29. metadata +145 -0
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MjExYTA0YzJkYjBiNGU3NTYyMTJkZmY1ZTEyMDg0NzVmYmEzNTBlNQ==
5
+ data.tar.gz: !binary |-
6
+ ODMzYTNlMDVlNDIyOWM1ODIxNWE1NjM3ZTRkOWIwZmFkZmI3ZWJjYQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MjY0YWYzNzBlNmRhMzQxODVmYTFmMTRkNWFmNzZjMDdjMzlhZGY5NWRkZjQw
10
+ YzQ2ZDljMDRkZWViODNkMWM0ZTEyZDQyMTkxMWMxMmY2ZmRiODgyMTE1MDhl
11
+ NzJjMjViZjVjOTc3MjI3ODc3NTYwYzIwZTVjMWQ3Yzc4MjI5ZGM=
12
+ data.tar.gz: !binary |-
13
+ MTQ3ZDZhMzQyODZhZTNjOTllOTM2YjU4NjEyMTFiMWQ2OTNlYjc4NzFjMGQ4
14
+ MWJiMWU2MTIwMjg1OWIxZWRiODE3MzFmZjc1Y2I1YjA2YTFkYzBiNmY1Y2Zk
15
+ NmYxOWJlMmYxZWQzNjNlZDE0ZWJjM2YyYTY5M2E3MjY2ODRhZDA=
@@ -0,0 +1,20 @@
1
+ Copyright 2014 Tanmay Bagchi
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.
@@ -0,0 +1,87 @@
1
+ # Passconf
2
+
3
+ This is a nice and simple full Rails Engine where use can authorize Password before continue to a Rails Controller action.
4
+
5
+ Basically In high secure web site like Banking or HealthCare domain before get enter into Rails Controller action
6
+
7
+ It will ask for password before continue.
8
+
9
+ The main function of that gem is in a link you need to specify a css class and controller name. When user will click the
10
+
11
+ link a Password Confirmation pop up appear and after validating your password only it will give you the access to that
12
+
13
+ respective controller action.
14
+
15
+ In Usage, you can find proper example.
16
+
17
+ ## Installation
18
+
19
+ Add this line to your application's Gemfile:
20
+
21
+ gem 'passconf'
22
+
23
+ And then execute:
24
+
25
+ $ bundle
26
+
27
+ Or install it yourself as:
28
+
29
+ $ gem install passconf
30
+
31
+ ## Usage
32
+
33
+ After Gem install
34
+
35
+ rails g passconf:migrations [list of controllers]
36
+ Example: rails g passconf:migrations blogs file_uploads
37
+
38
+ blogs and file_uploads is your controller name.
39
+
40
+ Then You need to run:
41
+
42
+ rake db:migrate
43
+
44
+ You can generate the following files:-
45
+
46
+ rails g passconf:assets
47
+ rails g passconf:controllers
48
+ rails g passconf:views
49
+
50
+
51
+ Go to your view file and add the link with css class and data-controller attributes:-
52
+
53
+ <%= link_to 'New Blog', new_blog_path, class: 'passwordconfirmationDialog', data: {:link_name=>"blogs", :controller_name => 'blogs' } %>
54
+ Main part add css class as `passwordconfirmationDialog` and `:controller_name` => Controller Name which that link lead to.
55
+
56
+ Important thing you need to add `<%= javascript_include_tag 'passconf' %>` at the end of the View File.
57
+
58
+ Otherwise your javascript will not load and Pop-up will not come.
59
+
60
+ In `routes.rb` file
61
+
62
+ mount Passconf::Engine => "/passconf", :as => "passconf_engine"
63
+
64
+ In `application_controller.rb` file
65
+
66
+ before_filter :reset_password_status
67
+
68
+ In your controller file which need to Password Authenticated
69
+
70
+ Like in that example blogs_controller.rb and file_uploads_controller.rb file :-
71
+
72
+ before_filter :check_password_status
73
+ skip_before_filter :reset_password_status
74
+
75
+ All done.
76
+
77
+ Please let me know if you find any bugs in it.
78
+
79
+ In Future release I will work on Filtering, routes and callback. Best of luck.
80
+
81
+ ## Contributing
82
+
83
+ 1. Fork it
84
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
85
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
86
+ 4. Push to the branch (`git push origin my-new-feature`)
87
+ 5. Create new Pull Request
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'Passconf'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
24
+ load 'rails/tasks/engine.rake'
25
+
26
+
27
+
28
+ Bundler::GemHelper.install_tasks
29
+
30
+ require 'rake/testtask'
31
+
32
+ Rake::TestTask.new(:test) do |t|
33
+ t.libs << 'lib'
34
+ t.libs << 'test'
35
+ t.pattern = 'test/**/*_test.rb'
36
+ t.verbose = false
37
+ end
38
+
39
+
40
+ task :default => :test
@@ -0,0 +1 @@
1
+ //= require ./password_template
@@ -0,0 +1,15 @@
1
+ $('.passwordconfirmationDialog').on('click',function(e){
2
+ e.stopPropagation();
3
+ e.preventDefault();
4
+ var link_name = $(this).data('link-name');
5
+ var controller_name = $(this).data('controller-name');
6
+ $(this).addClass('uniqueClassForPasswordTemplate');
7
+ $('.password_modal').remove();
8
+ $('<div class="password_modal modalDialog"/>').appendTo('body');
9
+ $.ajax({
10
+ url: "passconf/password_confirmations/password_dialog",
11
+ type: "GET",
12
+ dataType: "script",
13
+ data: {link_name: link_name, controller_name: controller_name}
14
+ });
15
+ });
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
9
+ * compiled file, but it's generally better to create a new file per style scope.
10
+ *
11
+
12
+ *= require_self
13
+ *= require_tree .
14
+ */
15
+
@@ -0,0 +1,13 @@
1
+
2
+
3
+ .alert {
4
+ font-size: 14px;
5
+
6
+ }
7
+ .alert-danger, .alert-error {
8
+ background-color: #F2DEDE;
9
+ border-color: #EED3D7;
10
+ color: #B94A48;
11
+ height: 25px;
12
+ vertical-align:middle;
13
+ }
@@ -0,0 +1,4 @@
1
+ module Passconf
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end
@@ -0,0 +1,28 @@
1
+ require_dependency "passconf/application_controller"
2
+
3
+ module Passconf
4
+ class PasswordConfirmationsController < ApplicationController
5
+ skip_before_filter :reset_password_status
6
+
7
+ def password_dialog
8
+ @current_controller_name = params[:controller_name]
9
+ respond_to do |format|
10
+ format.js
11
+ end
12
+ end
13
+
14
+ def password_authentication
15
+ decrypt_password = params[:user][:password]
16
+ @status = current_user.valid_password?(decrypt_password)
17
+ @link_name = params[:user][:link_name]
18
+ @current_controller_name = params[:user][:controller_name]
19
+ field_name = "password_status_#{@current_controller_name}"
20
+ if @status && !field_name.blank?
21
+ current_user.update_attribute(field_name, true) if current_user.respond_to?(field_name)
22
+ end
23
+ respond_to do |format|
24
+ format.js
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,26 @@
1
+ module Passconf
2
+ module ApplicationHelper
3
+ def check_password_status
4
+ if current_user
5
+ @req_controller = params[:controller]
6
+ @password_status = current_user.send("password_status_#{@req_controller }") if current_user.respond_to?("password_status_#{@req_controller }")
7
+ unless @password_status
8
+
9
+ redirect_to root_path, notice: "You did not authorize password authentication."
10
+ end
11
+ end
12
+ end
13
+
14
+ def reset_password_status
15
+ if current_user
16
+ req_controller = params[:controller]
17
+ user_columns = User.columns.collect(&:name).select{|i| i =~ /password_status_/}
18
+ user_columns.each do |element|
19
+ unless element == req_controller && current_user.send(element)
20
+ current_user.update_attribute(element, false)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,4 @@
1
+ module Passconf
2
+ module PasswordConfirmationsHelper
3
+ end
4
+ end
@@ -0,0 +1,34 @@
1
+ <div class="modal-body">
2
+ <div class="bootbox-body">
3
+ <%= form_for(User.new, url: 'passconf/password_confirmations/password_authentication', :html => {:method => :post, :class => "new_user_registration password_form form-inline"}, remote: true) do |f| %>
4
+ <span class="block input-icon input-icon-right">
5
+ <%= f.password_field :password, :class => 'password_register', :placeholder => "Password", autocomplete: "off", :id => "password_auth_dialog" do %><i class="icon-lock"></i><% end %>
6
+ <input name="user[link_name]" type="hidden" value='<%= @link_name %>'>
7
+ <input name="user[controller_name]" type="hidden" value='<%= @current_controller_name %>'>
8
+ <button type="submit" name="commit" class="btn btn-small btn-info no-radius btn_position pull-right">
9
+ <i class="icon-unlock"></i>
10
+ Submit
11
+ </button>
12
+ <%#= f.submit "Submit", class: "btn btn-sm btn-success btn_position pull-right" do %>
13
+ <%#end %>
14
+ </span>
15
+
16
+ <% end %>
17
+ </div>
18
+ </div>
19
+ <script>
20
+ /*$("#password_auth_dialog").on("change", function(){
21
+ var my_password = $(this).val();
22
+ var encrypt_pass = $.base64.encode(my_password);
23
+ $(this).val(encrypt_pass);
24
+ });*/
25
+ </script>
26
+ <style>
27
+ .btn_position{
28
+ margin-top: 20px;
29
+ }
30
+ .password_register{
31
+ margin-top: 20px;
32
+ }
33
+ </style>
34
+
@@ -0,0 +1,2 @@
1
+ <% css_class = current_user.respond_to?(:password_status_phr) ? "" : "passwordconfirmationDialog" %>
2
+ Please view the PHR <a href="#" id="phr_click_id" class="<%= css_class %>" data-link-name="phr" data-controller-name="consultation_session">Click</a>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Passconf</title>
5
+ <%= stylesheet_link_tag "passconf/application", :media => "all" %>
6
+ <%= javascript_include_tag "passconf/application" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
@@ -0,0 +1,41 @@
1
+ var status = "<%= @status %>";
2
+ if(status == "true"){
3
+ var href = $('.uniqueClassForPasswordTemplate').attr("href");
4
+ document.location.href = href;
5
+ $('.passwordconfirmationDialog').removeClass('uniqueClassForPasswordTemplate');
6
+ $(".ui-dialog-titlebar-close").click();
7
+ var is_consultation_session_controller = "<%= @current_controller_name && @current_controller_name == "consultation_session" %>";
8
+ if (is_consultation_session_controller == "true"){
9
+ $('#phr_section').replaceWith("<div id='phr_section'><%= escape_javascript(render(:partial => 'layouts/passconf/phr_section' )) %></div>");
10
+ $( "#phr_click_id" ).on('click', function(e) {
11
+ var dialog = $( "#phr_file_preview" ).removeClass('hide').dialog({
12
+ title: "View PHR",
13
+ height: 600,
14
+ width: 600,
15
+ modal: true,
16
+ opacity:0.3,
17
+ position: { my: "left top", at: "left bottom" },
18
+ resizable: false,
19
+ show: { effect: "blind", duration: 800 },
20
+ buttons: [
21
+ {
22
+ text: "OK",
23
+ click: function() {
24
+ $( this ).dialog( "close" );
25
+ }
26
+ }
27
+ ]
28
+ });
29
+ });
30
+ $( "#phr_click_id").click();
31
+ }
32
+ }
33
+ else{
34
+ $('.password_modal').empty();
35
+ html = '<div class="alert alert-danger" >Invalid password.</div>';
36
+
37
+ $('.password_modal').append(html);
38
+ $('.password_modal').append("<%= escape_javascript(render(:partial => 'layouts/passconf/password_confirmation' )) %>");
39
+ $('.password_modal').css('overflow-y', 'hidden');
40
+ }
41
+
@@ -0,0 +1,12 @@
1
+ $('.password_modal').remove();
2
+ $('<div class="password_modal"/>').appendTo('body');
3
+ $(".password_modal").empty();
4
+ $('.password_modal').append("<%= escape_javascript(render(:partial => 'layouts/passconf/password_confirmation' )) %>");
5
+ $(".password_modal").dialog({modal: true,
6
+ title: "Please Authenticate",
7
+ width: 375,
8
+ height: 200,
9
+ resizable: false,
10
+ position: ['top', 'center'],
11
+ autoResize: true});
12
+ $('.btn_position').css('margin-top', '20px');
@@ -0,0 +1,9 @@
1
+ Passconf::Engine.routes.draw do
2
+
3
+ resources :password_confirmations, :only => [:index] do
4
+ collection do
5
+ post :password_authentication
6
+ get :password_dialog
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ require 'rails/generators'
2
+
3
+ module Passconf
4
+ class AssetsGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../../../..', __FILE__)
6
+ def copy_files
7
+ copy_file "app/assets/javascripts/passconf/password_template.js", "app/assets/javascripts/passconf/password_template.js"
8
+ copy_file "app/assets/stylesheets/passconf/index.css", "app/assets/stylesheets/passconf/index.css"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ require 'rails/generators'
2
+
3
+ module Passconf
4
+ class ControllersGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../../../..', __FILE__)
6
+ def copy_files
7
+ copy_file "app/controllers/passconf/password_confirmations_controller.rb", "app/controllers/passconf/password_confirmations_controller.rb"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,18 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+ module Passconf
4
+ class MigrationsGenerator < Rails::Generators::Base
5
+ argument :actions, :type => :hash, :default => {}, :banner => "action action"
6
+ argument :column_names, :type => :array, :default => [], :banner => "action action"
7
+ include Rails::Generators::Migration
8
+ source_root File.expand_path('../../templates', __FILE__)
9
+
10
+ def self.next_migration_number(path)
11
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
12
+ end
13
+
14
+ def create_model_file
15
+ migration_template "add_password_status_columns.rb", "db/migrate/add_password_status_columns.rb"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ require 'rails/generators'
2
+
3
+ module Passconf
4
+ class ViewsGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../../../..', __FILE__)
6
+ def copy_files
7
+ copy_file "app/views/passconf/password_confirmations/password_authentication.js.erb", "app/views/passconf/password_confirmations/password_authentication.js.erb"
8
+ copy_file "app/views/passconf/password_confirmations/password_dialog.js.erb", "app/views/passconf/password_confirmations/password_dialog.js.erb"
9
+ copy_file "app/views/layouts/passconf/_password_confirmation.html.erb", "app/views/layouts/passconf/_password_confirmation.html.erb"
10
+ copy_file "app/views/layouts/passconf/_phr_section.html.erb", "app/views/layouts/passconf/_phr_section.html.erb"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ class AddPasswordStatusColumns < ActiveRecord::Migration
2
+ def change
3
+ <% table_name = actions["table_name"].blank? ? "users" : actions["table_name"] %><% column_names.each do |attribute| -%>
4
+ add_column :<%= table_name %>, :<%= "password_status_#{attribute}" %>, :boolean, :default => false
5
+ <% end %>
6
+ end
7
+ end
8
+
9
+
@@ -0,0 +1,4 @@
1
+ require "passconf/engine"
2
+
3
+ module Passconf
4
+ end
@@ -0,0 +1,11 @@
1
+ module Passconf
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace Passconf
4
+ initializer "passconf.action_controller" do
5
+ ActiveSupport.on_load(:action_controller) do
6
+ puts "Extending #{self} with Passconf::Controller"
7
+ include Passconf::ApplicationHelper
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module Passconf
2
+ VERSION = "1.0.1"
3
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :passconf do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: passconf
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Tanmay Bagchi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-02 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: 3.2.12
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 3.2.12
27
+ - !ruby/object:Gem::Dependency
28
+ name: jquery-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: jquery-ui-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 4.1.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 4.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: devise
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
+ description: ! 'This is a nice and simple full Rails Engine where use can authorize
70
+ Password before continue to a Rails Controller action.
71
+
72
+
73
+ Basically In high secure web site like Banking or HealthCare domain before get enter
74
+ into Rails Controller action
75
+
76
+
77
+ It will ask for password before continue.
78
+
79
+
80
+ The main function of that gem is in a link you need to specify a css class and controller
81
+ name. When user will click the
82
+
83
+
84
+ link a Password Confirmation pop up appear and after validating your password only
85
+ it will give you the access to that
86
+
87
+
88
+ respective controller action.'
89
+ email:
90
+ - tbagchi85@gmail.com
91
+ executables: []
92
+ extensions: []
93
+ extra_rdoc_files: []
94
+ files:
95
+ - MIT-LICENSE
96
+ - README.rdoc
97
+ - Rakefile
98
+ - app/assets/javascripts/passconf/application.js
99
+ - app/assets/javascripts/passconf/index.js
100
+ - app/assets/javascripts/passconf/password_template.js
101
+ - app/assets/stylesheets/passconf/application.css
102
+ - app/assets/stylesheets/passconf/index.css
103
+ - app/controllers/passconf/application_controller.rb
104
+ - app/controllers/passconf/password_confirmations_controller.rb
105
+ - app/helpers/passconf/application_helper.rb
106
+ - app/helpers/passconf/password_confirmations_helper.rb
107
+ - app/views/layouts/passconf/_password_confirmation.html.erb
108
+ - app/views/layouts/passconf/_phr_section.html.erb
109
+ - app/views/layouts/passconf/application.html.erb
110
+ - app/views/passconf/password_confirmations/password_authentication.js.erb
111
+ - app/views/passconf/password_confirmations/password_dialog.js.erb
112
+ - config/routes.rb
113
+ - lib/generators/passconf/assets_generator.rb
114
+ - lib/generators/passconf/controllers_generator.rb
115
+ - lib/generators/passconf/migrations_generator.rb
116
+ - lib/generators/passconf/views_generator.rb
117
+ - lib/generators/templates/add_password_status_columns.rb
118
+ - lib/passconf.rb
119
+ - lib/passconf/engine.rb
120
+ - lib/passconf/version.rb
121
+ - lib/tasks/passconf_tasks.rake
122
+ homepage: ''
123
+ licenses: []
124
+ metadata: {}
125
+ post_install_message:
126
+ rdoc_options: []
127
+ require_paths:
128
+ - lib
129
+ required_ruby_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ required_rubygems_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ requirements: []
140
+ rubyforge_project:
141
+ rubygems_version: 2.2.2
142
+ signing_key:
143
+ specification_version: 4
144
+ summary: ''
145
+ test_files: []