client_manager 0.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.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +128 -0
  3. data/Rakefile +37 -0
  4. data/app/assets/config/client_manager_manifest.js +2 -0
  5. data/app/assets/javascripts/client_manager/application.js +16 -0
  6. data/app/assets/javascripts/client_manager/clipboard.min.js +7 -0
  7. data/app/assets/javascripts/client_manager/oneui.min.js +5 -0
  8. data/app/assets/javascripts/client_manager/passwords.js +2 -0
  9. data/app/assets/javascripts/client_manager/sessions.js +2 -0
  10. data/app/assets/javascripts/client_manager/users.js +2 -0
  11. data/app/assets/stylesheets/client_manager/application.css +17 -0
  12. data/app/assets/stylesheets/client_manager/bootstrap.min.css +5 -0
  13. data/app/assets/stylesheets/client_manager/custom.css +23 -0
  14. data/app/assets/stylesheets/client_manager/oneui.min.css +4 -0
  15. data/app/assets/stylesheets/client_manager/passwords.css +4 -0
  16. data/app/assets/stylesheets/client_manager/sessions.css +4 -0
  17. data/app/assets/stylesheets/client_manager/users.css +4 -0
  18. data/app/controllers/client_manager/application_controller.rb +31 -0
  19. data/app/controllers/client_manager/clients_controller.rb +46 -0
  20. data/app/controllers/client_manager/concerns/set_client_by_token.rb +40 -0
  21. data/app/controllers/client_manager/passwords_controller.rb +26 -0
  22. data/app/controllers/client_manager/sessions_controller.rb +38 -0
  23. data/app/controllers/client_manager/users_controller.rb +121 -0
  24. data/app/helpers/client_manager/application_helper.rb +5 -0
  25. data/app/helpers/client_manager/passwords_helper.rb +4 -0
  26. data/app/helpers/client_manager/sessions_helper.rb +4 -0
  27. data/app/helpers/client_manager/users_helper.rb +4 -0
  28. data/app/jobs/client_manager/application_job.rb +4 -0
  29. data/app/mailers/client_manager/application_mailer.rb +6 -0
  30. data/app/mailers/client_manager/registration_mailer.rb +12 -0
  31. data/app/models/client_manager/application_record.rb +5 -0
  32. data/app/models/client_manager/client.rb +33 -0
  33. data/app/models/client_manager/user.rb +42 -0
  34. data/app/views/client_manager/clients/index.html.erb +37 -0
  35. data/app/views/client_manager/clients/new.html.erb +27 -0
  36. data/app/views/client_manager/clients/show.html.erb +41 -0
  37. data/app/views/client_manager/passwords/change.html.erb +46 -0
  38. data/app/views/client_manager/registration_mailer/registration_email.html.erb +90 -0
  39. data/app/views/client_manager/sessions/login.html.erb +53 -0
  40. data/app/views/client_manager/users/edit.html.erb +55 -0
  41. data/app/views/client_manager/users/index.html.erb +53 -0
  42. data/app/views/client_manager/users/new.html.erb +39 -0
  43. data/app/views/layouts/client_manager/application.html.erb +20 -0
  44. data/app/views/layouts/client_manager/none.html.erb +1 -0
  45. data/app/views/layouts/client_manager/partials/_header.html.erb +40 -0
  46. data/app/views/layouts/client_manager/partials/_modal.html.erb +15 -0
  47. data/config/locales/devise.en.yml +62 -0
  48. data/config/routes.rb +10 -0
  49. data/db/migrate/20160816183756_create_client_manager_users.rb +11 -0
  50. data/db/migrate/20160822112804_create_client_manager_clients.rb +11 -0
  51. data/db/migrate/20160905184226_add_password_digest_to_user.rb +5 -0
  52. data/db/migrate/20160930152731_add_password_changed_flag_to_users.rb +5 -0
  53. data/db/migrate/20161007235114_add_super_admin_flag_to_users.rb +5 -0
  54. data/lib/client_manager.rb +5 -0
  55. data/lib/client_manager/engine.rb +32 -0
  56. data/lib/client_manager/version.rb +3 -0
  57. data/lib/generators/client_manager/install_generator.rb +107 -0
  58. data/lib/generators/client_manager/templates/client_manager.rb +3 -0
  59. data/lib/tasks/client_manager_tasks.rake +12 -0
  60. metadata +217 -0
@@ -0,0 +1,11 @@
1
+ class CreateClientManagerUsers < ActiveRecord::Migration[5.0]
2
+ def change
3
+ create_table :client_manager_users do |t|
4
+ t.string :name
5
+ t.string :email
6
+ t.integer :maximum_number_of_clients
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ class CreateClientManagerClients < ActiveRecord::Migration[5.0]
2
+ def change
3
+ create_table :client_manager_clients do |t|
4
+ t.string :name
5
+ t.string :token
6
+ t.integer :user_id
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class AddPasswordDigestToUser < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :client_manager_users, :password_digest, :string
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddPasswordChangedFlagToUsers < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :client_manager_users, :password_changed, :boolean, default: false
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddSuperAdminFlagToUsers < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :client_manager_users, :superadmin, :boolean, default: false
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ require "client_manager/engine"
2
+
3
+ module ClientManager
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,32 @@
1
+ module ClientManager
2
+ class Engine < ::Rails::Engine
3
+ require 'jquery-rails'
4
+ require 'growlyflash'
5
+ require 'font-awesome-rails'
6
+ require 'bcrypt'
7
+ require 'jwt'
8
+
9
+ isolate_namespace ClientManager
10
+
11
+
12
+ initializer "client_manager", before: :load_config_initializers do |app|
13
+ Rails.application.routes.append do
14
+ mount ClientManager::Engine, at: "/client_manager"
15
+ end
16
+
17
+ config.paths["db/migrate"].expanded.each do |expanded_path|
18
+ Rails.application.config.paths["db/migrate"] << expanded_path
19
+ end
20
+ end
21
+ end
22
+
23
+ class << self
24
+ mattr_accessor :token_secret
25
+ self.token_secret = nil
26
+ end
27
+
28
+ def self.setup(&block)
29
+ yield self
30
+ end
31
+
32
+ end
@@ -0,0 +1,3 @@
1
+ module ClientManager
2
+ VERSION = '0.1.0'
3
+ end
@@ -0,0 +1,107 @@
1
+ module ClientManager
2
+ class InstallGenerator < Rails::Generators::Base
3
+ include Rails::Generators::Migration
4
+
5
+
6
+ def self.source_root
7
+ @source_root ||= File.join(File.dirname(__FILE__), 'templates')
8
+ end
9
+
10
+
11
+ def create_initializer_file
12
+ copy_file 'client_manager.rb', 'config/initializers/client_manager.rb'
13
+ end
14
+
15
+
16
+ def include_controller_concerns
17
+ fname = "app/controllers/application_controller.rb"
18
+ line = "include ClientManager::Concerns::SetClientByToken"
19
+
20
+ if File.exist?(File.join(destination_root, fname))
21
+ if parse_file_for_line(fname, line)
22
+ say_status("skipped", "Concern is already included in the application controller.")
23
+ elsif is_rails_api?
24
+ inject_into_file fname, after: "class ApplicationController < ActionController::API\n" do
25
+ <<-'RUBY'
26
+ include ClientManager::Concerns::SetClientByToken
27
+ RUBY
28
+ end
29
+ else
30
+ inject_into_file fname, after: "class ApplicationController < ActionController::Base\n" do
31
+ <<-'RUBY'
32
+ include ClientManager::Concerns::SetClientByToken
33
+ RUBY
34
+ end
35
+ end
36
+ else
37
+ say_status("skipped", "app/controllers/application_controller.rb not found. Add 'include ClientManager::Concerns::SetClientByToken' to any controllers that require authentication.")
38
+ end
39
+ end
40
+
41
+ def ignore_mailer_failure
42
+ application do
43
+ "config.action_mailer.raise_delivery_errors = false"
44
+ end
45
+ say_status("insert", "config/application.rb")
46
+ end
47
+
48
+ def convert_api_only_to_normal
49
+ if is_rails_api?
50
+ add_action_dispatch_to_application
51
+ require_sprockets_railtie
52
+ remove_api_only_declaration
53
+ end
54
+ end
55
+
56
+ private
57
+
58
+
59
+ def add_action_dispatch_to_application
60
+ application do
61
+ "config.middleware.use ActionDispatch::Flash"
62
+ end
63
+ say_status("insert", "config/application.rb")
64
+ end
65
+
66
+ def require_sprockets_railtie
67
+ fname = "config/application.rb"
68
+
69
+ if File.exist?(File.join(destination_root, fname))
70
+ gsub_file 'config/application.rb', '# require "sprockets/railtie"', 'require "sprockets/railtie"'
71
+ else
72
+ say_status("skipped", "application.rb not found, cannot add sprockets")
73
+ end
74
+ end
75
+
76
+ def remove_api_only_declaration
77
+ fname = "config/application.rb"
78
+
79
+ if File.exist?(File.join(destination_root, fname))
80
+ gsub_file 'config/application.rb', 'config.api_only = true', ''
81
+ else
82
+ say_status("skipped", "application.rb not found")
83
+ end
84
+ end
85
+
86
+
87
+ def parse_file_for_line(filename, str)
88
+ match = false
89
+
90
+ File.open(File.join(destination_root, filename)) do |f|
91
+ f.each_line do |line|
92
+ if line =~ /(#{Regexp.escape(str)})/mi
93
+ match = line
94
+ end
95
+ end
96
+ end
97
+ match
98
+ end
99
+
100
+ def is_rails_api?
101
+ fname = "app/controllers/application_controller.rb"
102
+ line = "class ApplicationController < ActionController::API"
103
+ parse_file_for_line(fname, line)
104
+ end
105
+
106
+ end
107
+ end
@@ -0,0 +1,3 @@
1
+ ClientManager.setup do |config|
2
+ config.token_secret = nil # PLEASE SET SECRET AND USE ENVIRONMENT VARIABLES FOR PRODUCTION
3
+ end
@@ -0,0 +1,12 @@
1
+ namespace :client_manager do
2
+ desc "Creates new superadmin. Usage: client_manager:superadmin NAME=Test EMAIL=test@test.com PASSWORD=password"
3
+ task superadmin: :environment do
4
+ name = ENV['NAME'].to_s
5
+ email = ENV['EMAIL'].to_s
6
+ password = ENV['PASSWORD'].to_s
7
+ if (ClientManager::User.create_superadmin(name, email, password))
8
+ puts "Super admin created successfully"
9
+ end
10
+ end
11
+ end
12
+
metadata ADDED
@@ -0,0 +1,217 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: client_manager
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Timi Ajiboye
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-11 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: 5.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 5.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: growlyflash
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: sass-rails
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: font-awesome-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
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: jquery-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
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: bcrypt
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
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: jwt
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
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: sqlite3
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
+ description: This gem provides views to add users (probably front-end or mobile developers)
126
+ to your Rails 5 so they can create clients and manage tokens. With this, you can
127
+ authenticate all requests and eventually track usage by each client.
128
+ email:
129
+ - timi@helloworld.ng
130
+ executables: []
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - README.md
135
+ - Rakefile
136
+ - app/assets/config/client_manager_manifest.js
137
+ - app/assets/javascripts/client_manager/application.js
138
+ - app/assets/javascripts/client_manager/clipboard.min.js
139
+ - app/assets/javascripts/client_manager/oneui.min.js
140
+ - app/assets/javascripts/client_manager/passwords.js
141
+ - app/assets/javascripts/client_manager/sessions.js
142
+ - app/assets/javascripts/client_manager/users.js
143
+ - app/assets/stylesheets/client_manager/application.css
144
+ - app/assets/stylesheets/client_manager/bootstrap.min.css
145
+ - app/assets/stylesheets/client_manager/custom.css
146
+ - app/assets/stylesheets/client_manager/oneui.min.css
147
+ - app/assets/stylesheets/client_manager/passwords.css
148
+ - app/assets/stylesheets/client_manager/sessions.css
149
+ - app/assets/stylesheets/client_manager/users.css
150
+ - app/controllers/client_manager/application_controller.rb
151
+ - app/controllers/client_manager/clients_controller.rb
152
+ - app/controllers/client_manager/concerns/set_client_by_token.rb
153
+ - app/controllers/client_manager/passwords_controller.rb
154
+ - app/controllers/client_manager/sessions_controller.rb
155
+ - app/controllers/client_manager/users_controller.rb
156
+ - app/helpers/client_manager/application_helper.rb
157
+ - app/helpers/client_manager/passwords_helper.rb
158
+ - app/helpers/client_manager/sessions_helper.rb
159
+ - app/helpers/client_manager/users_helper.rb
160
+ - app/jobs/client_manager/application_job.rb
161
+ - app/mailers/client_manager/application_mailer.rb
162
+ - app/mailers/client_manager/registration_mailer.rb
163
+ - app/models/client_manager/application_record.rb
164
+ - app/models/client_manager/client.rb
165
+ - app/models/client_manager/user.rb
166
+ - app/views/client_manager/clients/index.html.erb
167
+ - app/views/client_manager/clients/new.html.erb
168
+ - app/views/client_manager/clients/show.html.erb
169
+ - app/views/client_manager/passwords/change.html.erb
170
+ - app/views/client_manager/registration_mailer/registration_email.html.erb
171
+ - app/views/client_manager/sessions/login.html.erb
172
+ - app/views/client_manager/users/edit.html.erb
173
+ - app/views/client_manager/users/index.html.erb
174
+ - app/views/client_manager/users/new.html.erb
175
+ - app/views/layouts/client_manager/application.html.erb
176
+ - app/views/layouts/client_manager/none.html.erb
177
+ - app/views/layouts/client_manager/partials/_header.html.erb
178
+ - app/views/layouts/client_manager/partials/_modal.html.erb
179
+ - config/locales/devise.en.yml
180
+ - config/routes.rb
181
+ - db/migrate/20160816183756_create_client_manager_users.rb
182
+ - db/migrate/20160822112804_create_client_manager_clients.rb
183
+ - db/migrate/20160905184226_add_password_digest_to_user.rb
184
+ - db/migrate/20160930152731_add_password_changed_flag_to_users.rb
185
+ - db/migrate/20161007235114_add_super_admin_flag_to_users.rb
186
+ - lib/client_manager.rb
187
+ - lib/client_manager/engine.rb
188
+ - lib/client_manager/version.rb
189
+ - lib/generators/client_manager/install_generator.rb
190
+ - lib/generators/client_manager/templates/client_manager.rb
191
+ - lib/tasks/client_manager_tasks.rake
192
+ homepage: https://github.com/timigod/client-manager
193
+ licenses:
194
+ - MIT
195
+ metadata: {}
196
+ post_install_message:
197
+ rdoc_options: []
198
+ require_paths:
199
+ - lib
200
+ required_ruby_version: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ required_rubygems_version: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ requirements: []
211
+ rubyforge_project:
212
+ rubygems_version: 2.4.5.1
213
+ signing_key:
214
+ specification_version: 4
215
+ summary: Simple gem/engine to manage clients and their tokens for your Rails 5 API.
216
+ test_files: []
217
+ has_rdoc: