user_plane 0.0.15
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/Rakefile +30 -0
- data/app/assets/javascripts/user_plane/application.js +13 -0
- data/app/assets/stylesheets/user_plane/application.css +15 -0
- data/app/concerns/null_object_persistable.rb +62 -0
- data/app/controllers/user/confirm_email_addresses_controller.rb +17 -0
- data/app/controllers/user/details_controller.rb +48 -0
- data/app/controllers/user/invites_controller.rb +69 -0
- data/app/controllers/user/reset_passwords_controller.rb +50 -0
- data/app/controllers/user/sign_ins_controller.rb +53 -0
- data/app/controllers/user/sign_ups_controller.rb +47 -0
- data/app/controllers/user_plane/application_controller.rb +5 -0
- data/app/helpers/user_plane/application_helper.rb +4 -0
- data/app/mailers/user_plane/application_mailer.rb +8 -0
- data/app/mailers/user_plane/invite_mailer.rb +14 -0
- data/app/mailers/user_plane/verification_mailer.rb +25 -0
- data/app/models/session_manager.rb +100 -0
- data/app/models/user.rb +5 -0
- data/app/models/user/account.rb +26 -0
- data/app/models/user/confirm_email_address.rb +55 -0
- data/app/models/user/guest.rb +18 -0
- data/app/models/user/identities.rb +5 -0
- data/app/models/user/identities/email.rb +98 -0
- data/app/models/user/identities/email_verification.rb +70 -0
- data/app/models/user/identities/facebook.rb +5 -0
- data/app/models/user/identities/github.rb +5 -0
- data/app/models/user/identities/id_token.rb +7 -0
- data/app/models/user/identities/o_auth.rb +67 -0
- data/app/models/user/identities/o_auth_endpoint.rb +28 -0
- data/app/models/user/identities/twitter.rb +5 -0
- data/app/models/user/identity.rb +26 -0
- data/app/models/user/reset_password.rb +59 -0
- data/app/models/user/send_password_reset.rb +25 -0
- data/app/models/user/send_sign_up_invite.rb +27 -0
- data/app/models/user/sign_in.rb +42 -0
- data/app/models/user/sign_up.rb +47 -0
- data/app/models/user/sign_up_invites.rb +5 -0
- data/app/models/user/sign_up_invites/invite.rb +46 -0
- data/app/models/user/sign_up_invites/stack.rb +22 -0
- data/app/models/user/sign_up_with_invite.rb +45 -0
- data/app/models/user/suspension.rb +7 -0
- data/app/models/user/update_details.rb +103 -0
- data/app/views/layouts/user_plane/application.html.erb +14 -0
- data/app/views/user/details/edit.html.erb +37 -0
- data/app/views/user/invites/edit.html.erb +34 -0
- data/app/views/user/invites/new.html.erb +21 -0
- data/app/views/user/reset_passwords/edit.html.erb +26 -0
- data/app/views/user/reset_passwords/new.html.erb +21 -0
- data/app/views/user/sign_ins/new.html.erb +25 -0
- data/app/views/user/sign_ups/new.html.erb +33 -0
- data/app/views/user_plane/invite_mailer/invite.html.erb +2 -0
- data/app/views/user_plane/invite_mailer/invite.text.erb +3 -0
- data/app/views/user_plane/verification_mailer/address_verification.html.erb +2 -0
- data/app/views/user_plane/verification_mailer/address_verification.text.erb +4 -0
- data/app/views/user_plane/verification_mailer/password_reset.html.erb +2 -0
- data/app/views/user_plane/verification_mailer/password_reset.text.erb +4 -0
- data/config/initializers/inflections.rb +3 -0
- data/config/locales/en.yml +63 -0
- data/config/locales/it.yml +62 -0
- data/config/routes.rb +5 -0
- data/db/migrate/20121128143404_create_user_accounts.rb +11 -0
- data/db/migrate/20121226202553_create_user_identities_o_auths.rb +12 -0
- data/db/migrate/20121226203032_create_user_identities_emails.rb +13 -0
- data/db/migrate/20121227144617_create_user_identities_email_verifications.rb +15 -0
- data/db/migrate/20130113120152_create_user_identities_id_tokens.rb +12 -0
- data/db/migrate/20141025230304_create_user_sign_up_invites_stacks.rb +10 -0
- data/db/migrate/20141025230500_create_user_sign_up_invites_invites.rb +13 -0
- data/db/migrate/20141026230208_create_user_suspensions.rb +13 -0
- data/lib/generators/user_plane/view/details_generator.rb +22 -0
- data/lib/generators/user_plane/view/helpers.rb +68 -0
- data/lib/generators/user_plane/view/invites_generator.rb +23 -0
- data/lib/generators/user_plane/view/reset_passwords_generator.rb +22 -0
- data/lib/generators/user_plane/view/sign_ins_generator.rb +18 -0
- data/lib/generators/user_plane/view/sign_ups_generator.rb +22 -0
- data/lib/generators/user_plane/views_generator.rb +32 -0
- data/lib/tasks/user_plane_tasks.rake +4 -0
- data/lib/user_plane.rb +43 -0
- data/lib/user_plane/command.rb +24 -0
- data/lib/user_plane/engine.rb +27 -0
- data/lib/user_plane/fresh_validator.rb +9 -0
- data/lib/user_plane/omniauth.rb +50 -0
- data/lib/user_plane/redirect_to_sign_in.rb +22 -0
- data/lib/user_plane/route_concerns.rb +167 -0
- data/lib/user_plane/session_manager_concern.rb +9 -0
- data/lib/user_plane/signed_in_constraint.rb +11 -0
- data/lib/user_plane/token_segment.rb +52 -0
- data/lib/user_plane/version.rb +3 -0
- data/spec/controllers/user/confirm_email_addresses_controller_spec.rb +5 -0
- data/spec/controllers/user/details_controller_spec.rb +5 -0
- data/spec/controllers/user/invites_controller_spec.rb +19 -0
- data/spec/controllers/user/reset_passwords_controller_spec.rb +5 -0
- data/spec/controllers/user/sign_ins_controller_spec.rb +34 -0
- data/spec/controllers/user/sign_ups_controller_spec.rb +5 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/controllers/application_controller.rb +7 -0
- data/spec/dummy/app/controllers/welcome_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +30 -0
- data/spec/dummy/app/views/welcome/index.html.erb +1 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +30 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +49 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +78 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/assets.rb +8 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/user_plane.rb +5 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +43 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/db/schema.rb +101 -0
- data/spec/dummy/log/development.log +0 -0
- data/spec/dummy/log/test.log +20185 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/-pOuxJZhYk_qXqMNKgm23KfvzyUW71NynNLlcNBOubE.cache +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/3AV9ywHBH56Leqey5LeznxK9vu4HD8fF3zSTk4MiDJA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/5fzR1G0D8ukHkPkLXsUu6rP6qV82aIdx3hugKkDy6nM.cache +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/9bKtJ2lkHPqtboGfbyknZ1OyH4xYO-aml7U3qhv-3kk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/HjDmE9SFP2wimdNHU8Nff9cm3vFZ5soO1iw7Jdlb6z8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/J9j6OdatarYW7VzVCVttmGphOhJKL0QXasdheyrgsTE.cache +2 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/KqrOQSlg0Th0N3XXx-h4p5BVJCfN0D8rRLoA9VxvXrc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/UCB1W65KwVU8ttOY8jnPRDp8HyyYYEjeTwwPD6R4qy8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/YmMSaaBmIcNZWPVF9jXcGBi-kwEzMuxzwPT_Zrcj1Bo.cache +2 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/g3wU8ajFWb5ZLPvujEt5l9DesbFCiAwqjx1WQgwTtHA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/i5pp88VHKoqlxQJdgmQd_lkgX1-4em_uHqNDjQ4nyHA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/jL74yXjxf8cb6Olkjbw1C28MH_HbZe221l8AI6WVeH0.cache +3 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/puh7X4rfS3eDN9oHTXoQdAgqxivonrwAAdYZ4UB3GIg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/qxPWFIWnE6gOCY-SsdBJe7Cgm5D3YUwaEne78Y7XdRg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/rM9s67WgzKMZ1bRhUdA0yhPZDlyRE5a1kmdt7cS6m4c.cache +3 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/rVoG8EHlrCOgY4ZkzOj64f0jiTcbteQ_SYNzq9RqY0I.cache +0 -0
- data/spec/fabricators/user_account_fabricator.rb +11 -0
- data/spec/fabricators/user_guest_fabricator.rb +2 -0
- data/spec/fabricators/user_identities_email_fabricator.rb +8 -0
- data/spec/fabricators/user_identities_email_verification_fabricator.rb +5 -0
- data/spec/fabricators/user_identities_id_token_fabricator.rb +2 -0
- data/spec/fabricators/user_sign_up_fabricator.rb +51 -0
- data/spec/fabricators/user_sign_up_invites_invite_fabricator.rb +3 -0
- data/spec/fabricators/user_sign_up_invites_stack_fabricator.rb +4 -0
- data/spec/fabricators/user_suspension_fabricator.rb +4 -0
- data/spec/fabricators/user_update_detail_fabricator.rb +2 -0
- data/spec/features/user_plane/user_plane_invites_spec.rb +31 -0
- data/spec/features/user_plane/user_plane_reset_passwords_spec.rb +31 -0
- data/spec/features/user_plane/user_plane_sign_ins_spec.rb +44 -0
- data/spec/features/user_plane/user_plane_signed_in_only_spec.rb +31 -0
- data/spec/features/user_plane/user_plane_update_details_spec.rb +43 -0
- data/spec/fixtures/user_plane/invite_mailer/invite +3 -0
- data/spec/fixtures/user_plane/verification_mailer/address_verification +3 -0
- data/spec/fixtures/user_plane/verification_mailer/password_reset +3 -0
- data/spec/lib/generators/views_generator_spec.rb +16 -0
- data/spec/lib/route_concerns_spec.rb +54 -0
- data/spec/mailers/previews/user_plane/invite_mailer_preview.rb +11 -0
- data/spec/mailers/previews/user_plane/verification_mailer_preview.rb +16 -0
- data/spec/mailers/user_plane/invite_mailer_spec.rb +25 -0
- data/spec/mailers/user_plane/verification_mailer_spec.rb +52 -0
- data/spec/models/session_manager_spec.rb +28 -0
- data/spec/models/user/account_spec.rb +26 -0
- data/spec/models/user/confirm_email_address_spec.rb +101 -0
- data/spec/models/user/guest_spec.rb +5 -0
- data/spec/models/user/identities/email_spec.rb +5 -0
- data/spec/models/user/identities/email_verification_spec.rb +42 -0
- data/spec/models/user/identities/facebook_spec.rb +5 -0
- data/spec/models/user/identities/github_spec.rb +5 -0
- data/spec/models/user/identities/id_token_spec.rb +5 -0
- data/spec/models/user/identities/o_auth_spec.rb +12 -0
- data/spec/models/user/identities/twitter_spec.rb +5 -0
- data/spec/models/user/reset_password_spec.rb +141 -0
- data/spec/models/user/send_password_reset_spec.rb +44 -0
- data/spec/models/user/send_sign_up_invite_spec.rb +30 -0
- data/spec/models/user/sign_in_spec.rb +31 -0
- data/spec/models/user/sign_up_invites/invite_spec.rb +13 -0
- data/spec/models/user/sign_up_invites/stack_spec.rb +21 -0
- data/spec/models/user/sign_up_spec.rb +58 -0
- data/spec/models/user/sign_up_with_invite_spec.rb +83 -0
- data/spec/models/user/suspension_spec.rb +5 -0
- data/spec/models/user/update_details_spec.rb +98 -0
- data/spec/routing/invites_spec.rb +49 -0
- data/spec/routing/reset_passwords_spec.rb +31 -0
- data/spec/routing/sign_ins_spec.rb +36 -0
- data/spec/routing/update_details_spec.rb +30 -0
- data/spec/shared_contexts/feature_helpers.rb +12 -0
- data/spec/shared_contexts/routing.rb +8 -0
- data/spec/shared_contexts/user.rb +67 -0
- data/spec/spec_helper.rb +38 -0
- data/spec/support/fabrication.rb +7 -0
- data/spec/support/omniauth.rb +4 -0
- metadata +770 -0
data/config/routes.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateUserIdentitiesEmails < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :user_identities_emails do |t|
|
4
|
+
t.references :account
|
5
|
+
t.string :address
|
6
|
+
t.string :password_digest
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
add_index :user_identities_emails, :address
|
11
|
+
add_index :user_identities_emails, :password_digest
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateUserIdentitiesEmailVerifications < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :user_identities_email_verifications do |t|
|
4
|
+
t.string :token
|
5
|
+
t.string :type
|
6
|
+
t.string :recipient
|
7
|
+
t.references :email
|
8
|
+
t.datetime :spent_at
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
add_index :user_identities_email_verifications, :email_id
|
13
|
+
add_index :user_identities_email_verifications, :token
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class CreateUserIdentitiesIdTokens < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :user_identities_id_tokens do |t|
|
4
|
+
t.string :key
|
5
|
+
t.references :identity, :polymorphic => true
|
6
|
+
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
add_index :user_identities_id_tokens, :identity_id
|
10
|
+
add_index :user_identities_id_tokens, :key
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateUserSignUpInvitesInvites < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :user_sign_up_invites_invites do |t|
|
4
|
+
t.references :stack
|
5
|
+
t.references :sender
|
6
|
+
t.string :code
|
7
|
+
t.string :recipient
|
8
|
+
t.references :account
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateUserSuspensions < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :user_suspensions do |t|
|
4
|
+
t.string :message
|
5
|
+
t.references :issuer
|
6
|
+
t.references :account
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
add_index :user_suspensions, :issuer_id
|
11
|
+
add_index :user_suspensions, :account_id
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'generators/user_plane/view/helpers'
|
3
|
+
|
4
|
+
module UserPlane # :nodoc:
|
5
|
+
module Generators # :nodoc:
|
6
|
+
module View
|
7
|
+
class DetailsGenerator < Rails::Generators::NamedBase # :nodoc:
|
8
|
+
include UserPlane::Generators::View::Helpers
|
9
|
+
|
10
|
+
def copy_view_files
|
11
|
+
create_root_folder
|
12
|
+
|
13
|
+
view_for_resource :edit, 'update_details', ['name:string',
|
14
|
+
'email:string',
|
15
|
+
'current_password:password',
|
16
|
+
'password:password',
|
17
|
+
'password_confirmation:password']
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'rails/generators/resource_helpers'
|
2
|
+
|
3
|
+
module UserPlane # :nodoc:
|
4
|
+
module Generators # :nodoc:
|
5
|
+
module View
|
6
|
+
module Helpers# :nodoc:
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
include Rails::Generators::ResourceHelpers
|
11
|
+
# TODO: move this in classmethods
|
12
|
+
# source_root File.expand_path("../../templates", __FILE__)
|
13
|
+
hide!
|
14
|
+
|
15
|
+
class_option :skip_namespace, default: true
|
16
|
+
|
17
|
+
hook_for :template_engine, as: :scaffold do |template_engine|
|
18
|
+
source_paths.append template_engine.source_root
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
protected
|
23
|
+
|
24
|
+
def create_root_folder
|
25
|
+
empty_directory File.join("app/views", controller_file_path)
|
26
|
+
end
|
27
|
+
|
28
|
+
def view_for_resource view, model_name, attributes
|
29
|
+
|
30
|
+
self.name = model_name
|
31
|
+
self.attributes = attributes
|
32
|
+
assign_names! name
|
33
|
+
parse_attributes!
|
34
|
+
# FIXME: Using the NamesBase generator wrong, should make the views
|
35
|
+
# inherit from Base and implement the same methods used by the
|
36
|
+
# scaffold templates
|
37
|
+
@singular_table_name = name
|
38
|
+
@plural_table_name = name.pluralize
|
39
|
+
|
40
|
+
formats.each do |format|
|
41
|
+
templatename = filename_with_extensions('_form', format)
|
42
|
+
filename = filename_with_extensions(view, format)
|
43
|
+
template templatename, File.join("app/views", controller_file_path, filename)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
attr_accessor :attributes, :name
|
48
|
+
|
49
|
+
def formats
|
50
|
+
[format]
|
51
|
+
end
|
52
|
+
|
53
|
+
def format
|
54
|
+
:html
|
55
|
+
end
|
56
|
+
|
57
|
+
def handler
|
58
|
+
options[:template_engine]
|
59
|
+
end
|
60
|
+
|
61
|
+
def filename_with_extensions(name, format = self.format)
|
62
|
+
[name, format, handler].compact.join(".")
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'generators/user_plane/view/helpers'
|
3
|
+
|
4
|
+
module UserPlane # :nodoc:
|
5
|
+
module Generators # :nodoc:
|
6
|
+
module View
|
7
|
+
class InvitesGenerator < Rails::Generators::NamedBase # :nodoc:
|
8
|
+
include UserPlane::Generators::View::Helpers
|
9
|
+
|
10
|
+
def copy_view_files
|
11
|
+
create_root_folder
|
12
|
+
|
13
|
+
view_for_resource :new, 'send_sign_up_invite', ['recipient:string']
|
14
|
+
#TODO: add a hidden field for the invite code
|
15
|
+
view_for_resource :edit, 'sign_up_with_invite', ['user_name:string',
|
16
|
+
'email:string',
|
17
|
+
'password:password',
|
18
|
+
'password_confirmation:password']
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'generators/user_plane/view/helpers'
|
3
|
+
|
4
|
+
module UserPlane # :nodoc:
|
5
|
+
module Generators # :nodoc:
|
6
|
+
module View
|
7
|
+
class ResetPasswordsGenerator < Rails::Generators::NamedBase # :nodoc:
|
8
|
+
include UserPlane::Generators::View::Helpers
|
9
|
+
|
10
|
+
def copy_view_files
|
11
|
+
create_root_folder
|
12
|
+
|
13
|
+
view_for_resource :new, 'send_password_reset', ['email:string']
|
14
|
+
#TODO: add a hidden field for the password reset code
|
15
|
+
view_for_resource :edit, 'reset_password', ['password:password',
|
16
|
+
'password_confirmation:password']
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'generators/user_plane/view/helpers'
|
3
|
+
|
4
|
+
module UserPlane # :nodoc:
|
5
|
+
module Generators # :nodoc:
|
6
|
+
module View
|
7
|
+
class SignInsGenerator < Rails::Generators::NamedBase # :nodoc:
|
8
|
+
include UserPlane::Generators::View::Helpers
|
9
|
+
|
10
|
+
def copy_view_files
|
11
|
+
create_root_folder
|
12
|
+
|
13
|
+
view_for_resource :new, 'sign_in', ['email:string', 'password:string']
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'generators/user_plane/view/helpers'
|
3
|
+
|
4
|
+
module UserPlane # :nodoc:
|
5
|
+
module Generators # :nodoc:
|
6
|
+
module View
|
7
|
+
class SignUpsGenerator < Rails::Generators::NamedBase # :nodoc:
|
8
|
+
include UserPlane::Generators::View::Helpers
|
9
|
+
|
10
|
+
def copy_view_files
|
11
|
+
create_root_folder
|
12
|
+
|
13
|
+
view_for_resource :new, 'sign_up', ['user_name:string',
|
14
|
+
'email:string',
|
15
|
+
'password:password',
|
16
|
+
'password_confirmation:password']
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module UserPlane # :nodoc:
|
4
|
+
module Generators # :nodoc:
|
5
|
+
class ViewsGenerator < Rails::Generators::Base # :nodoc:
|
6
|
+
|
7
|
+
argument :namespace, default: 'user'
|
8
|
+
# TODO: make the views below optional
|
9
|
+
|
10
|
+
hook_for :'view:sign_ins', default: true do |invoked|
|
11
|
+
invoke invoked, ["#{namespace}/sign_ins"]
|
12
|
+
end
|
13
|
+
|
14
|
+
hook_for :'view:details', default: true do |invoked|
|
15
|
+
invoke invoked, ["#{namespace}/details"]
|
16
|
+
end
|
17
|
+
|
18
|
+
hook_for :'view:sign_ups', default: true do |invoked|
|
19
|
+
invoke invoked, ["#{namespace}/sign_ups"]
|
20
|
+
end
|
21
|
+
|
22
|
+
hook_for :'view:reset_passwords', default: true do |invoked|
|
23
|
+
invoke invoked, ["#{namespace}/reset_passwords"]
|
24
|
+
end
|
25
|
+
|
26
|
+
hook_for :'view:invites', default: true do |invoked|
|
27
|
+
invoke invoked, ["#{namespace}/invites"]
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/user_plane.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'active_support/dependencies'
|
2
|
+
|
3
|
+
require 'user_plane/signed_in_constraint'
|
4
|
+
require 'user_plane/route_concerns'
|
5
|
+
require 'user_plane/redirect_to_sign_in'
|
6
|
+
require 'user_plane/session_manager_concern'
|
7
|
+
|
8
|
+
require 'user_plane/engine'
|
9
|
+
require 'user_plane/token_segment'
|
10
|
+
require 'user_plane/fresh_validator'
|
11
|
+
|
12
|
+
require 'email_validator/strict'
|
13
|
+
|
14
|
+
require 'user_plane/command'
|
15
|
+
require 'support_segment'
|
16
|
+
require 'support_segment/sti_helpers'
|
17
|
+
|
18
|
+
|
19
|
+
module UserPlane
|
20
|
+
mattr_accessor :parent_controller
|
21
|
+
mattr_accessor :parent_mailer
|
22
|
+
mattr_accessor :redirect_to_sign_in
|
23
|
+
|
24
|
+
def self.parent_controller
|
25
|
+
@@parent_controller || '::ApplicationController'
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.parent_mailer
|
29
|
+
@@parent_mailer || 'UserPlane::ApplicationMailer'
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.send_emails_from
|
33
|
+
"accounts@#{Rails.configuration.action_mailer.default_url_options[:host]}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.redirect_to_sign_in
|
37
|
+
@@redirect_to_sign_in ||= Rack::Builder.new do
|
38
|
+
use ActionDispatch::ShowExceptions, Rails.application.config.exceptions_app
|
39
|
+
use ActionDispatch::DebugExceptions, Rails.application
|
40
|
+
run RedirectToSignIn.new
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'imperator'
|
2
|
+
|
3
|
+
module UserPlane
|
4
|
+
class Command < Imperator::Command
|
5
|
+
include ActiveModel::Conversion
|
6
|
+
|
7
|
+
def perform_validations(options={}) # :nodoc:
|
8
|
+
options[:validate] == false || valid?
|
9
|
+
end
|
10
|
+
|
11
|
+
def perform(options={})
|
12
|
+
if perform_validations(options)
|
13
|
+
super()
|
14
|
+
true
|
15
|
+
else
|
16
|
+
false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def perform!(options={})
|
21
|
+
raise Imperator::InvalidCommandError.new("Command was invalid") unless perform(options)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module UserPlane
|
2
|
+
class Engine < ::Rails::Engine
|
3
|
+
isolate_namespace UserPlane
|
4
|
+
|
5
|
+
config.generators do |g|
|
6
|
+
g.test_framework :rspec, :fixture => false
|
7
|
+
g.fixture_replacement :fabrication, :dir => 'spec/fabricators'
|
8
|
+
g.assets false
|
9
|
+
g.helper false
|
10
|
+
end
|
11
|
+
|
12
|
+
initializer :append_migrations do |app|
|
13
|
+
unless app.root.to_s.match root.to_s
|
14
|
+
config.paths["db/migrate"].expanded.each do |expanded_path|
|
15
|
+
app.config.paths["db/migrate"] << expanded_path
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
initializer :'user_plane.controller_concern' do
|
21
|
+
ActiveSupport.on_load(:action_controller) do
|
22
|
+
include SessionManagerConcern
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|