push_type_auth 0.1.0.beta3 → 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 (26) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/push_type/profiles_controller.rb +50 -0
  3. data/app/views/push_type/profiles/edit.html.haml +46 -0
  4. data/config/routes.rb +2 -0
  5. data/lib/push_type/auth/engine.rb +0 -1
  6. data/lib/tasks/push_type_tasks.rake +26 -4
  7. data/test/controllers/concerns/push_type/authentication_methods_test.rb +15 -0
  8. data/test/controllers/concerns/push_type/invitation_methods_test.rb +11 -0
  9. data/test/controllers/push_type/profiles_controller_test.rb +33 -0
  10. data/test/controllers/push_type/users_controller_test.rb +24 -0
  11. data/test/dummy/config/secrets.yml +2 -2
  12. data/test/dummy/db/migrate/{20141205213533_create_push_type_users.push_type.rb → 20150102204443_create_push_type_users.push_type.rb} +0 -0
  13. data/test/dummy/db/migrate/{20141205213534_create_push_type_nodes.push_type.rb → 20150102204444_create_push_type_nodes.push_type.rb} +0 -0
  14. data/test/dummy/db/migrate/{20141205213535_create_push_type_node_hierarchies.push_type.rb → 20150102204445_create_push_type_node_hierarchies.push_type.rb} +0 -0
  15. data/test/dummy/db/migrate/{20141205213536_create_push_type_assets.push_type.rb → 20150102204446_create_push_type_assets.push_type.rb} +0 -0
  16. data/test/dummy/db/migrate/{20141205213537_devise_extend_push_type_users.push_type_auth.rb → 20150102204447_devise_extend_push_type_users.push_type_auth.rb} +0 -0
  17. data/test/dummy/db/schema.rb +1 -1
  18. data/test/dummy/log/test.log +696 -269
  19. data/test/dummy/tmp/cache/assets/test/sass/806626419a476c98acb0fcf38feea6623fb99ce0/admin.scssc +0 -0
  20. data/test/dummy/tmp/cache/assets/test/sass/806626419a476c98acb0fcf38feea6623fb99ce0/foundation_and_overrides.scssc +0 -0
  21. data/test/dummy/tmp/cache/assets/test/sprockets/12375f1bf3d91db0a06c3fc436918949 +0 -0
  22. data/test/dummy/tmp/cache/assets/test/sprockets/b3b2a83d3d7d735130f0b029e58b29b8 +0 -0
  23. data/test/dummy/tmp/cache/assets/test/sprockets/dd803fd7a93619599c7e703c2b307411 +0 -0
  24. data/test/factories.rb +7 -0
  25. data/test/models/concerns/push_type/authenticatable_test.rb +52 -0
  26. metadata +46 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f4d0ac63e4364dc81c5ca5f43e91896a98029412
4
- data.tar.gz: 1b22b6669ddbaed95349617e20daa535cd46d244
3
+ metadata.gz: dd94702289922c6faf9dbfb00b87173b17362142
4
+ data.tar.gz: 4f1229a7a6b70251af11675f5991651f49775502
5
5
  SHA512:
6
- metadata.gz: d35519357662c302b2965d2aae596db51af64edc6147254435bb15cf8b9238f54ae990e29b9d202d832f572ba620f424b3f096aa554146dd3e9e8be1044d3098
7
- data.tar.gz: 83426ec1e05d47a5911aa38cdda64c53f164aa1f9af219ad014263ea4507b0a787a8788e94108e86281d9e1d78282a87772e97c3007bc9b8dbf88c0c708e4351
6
+ metadata.gz: d7f4c5f59e517df9648ac03ff8d13a7e9c0d80a3fdb4b8ac2c20ba5ea18f077c91efa9fbd5b155a9712fa80812f338acf3086aae21836f4fd76654e1f2c4098d
7
+ data.tar.gz: 64d4908776dc990a7d76d6844f0ab9953992a926310b5dfe1dc3d8bce2ecdd9e89fc6c7c3463db1ab24f8e1e3c0556d507d14428879ff351eca50bb848a3440f
@@ -0,0 +1,50 @@
1
+ require_dependency "push_type/admin_controller"
2
+
3
+ module PushType
4
+ class ProfilesController < AdminController
5
+
6
+ before_filter :load_user
7
+
8
+ def edit
9
+ end
10
+
11
+ def update
12
+ if update_user profile_params
13
+ flash[:notice] = 'Profile successfully updated.'
14
+ sign_in @user, bypass: true
15
+ redirect_to push_type.edit_profile_path
16
+ else
17
+ render 'edit'
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ def initial_breadcrumb
24
+ breadcrumbs.add 'Profile', push_type.edit_profile_path
25
+ end
26
+
27
+ def load_user
28
+ @user = current_user
29
+ end
30
+
31
+ def update_user(user_params)
32
+ if password_required?
33
+ @user.update_with_password user_params
34
+ else
35
+ user_params.delete :current_password
36
+ @user.update_without_password user_params
37
+ end
38
+ end
39
+
40
+ def password_required?
41
+ profile_params[:password].present? || profile_params[:password_confirmation].present?
42
+ end
43
+
44
+ def profile_params
45
+ fields = [:name, :email, :current_password, :password, :password_confirmation] + @user.fields.keys
46
+ params.fetch(:user, {}).permit(*fields)
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,46 @@
1
+ - title 'Profile'
2
+
3
+ .medium-4.columns
4
+ .side-panel{ :'side-panel' => true }
5
+ %ul.side-nav
6
+ %li.heading Settings
7
+ %li= link_to 'Profile', push_type.edit_profile_path
8
+
9
+
10
+ .medium-8.columns
11
+ = form_for @user, url: push_type.profile_path do |f|
12
+ .container
13
+ .head
14
+ .title= yield :title
15
+ .body.padded
16
+ .row.title
17
+ .columns
18
+ = f.label :name
19
+ = f.text_field :name
20
+ .row.email
21
+ .columns
22
+ = f.label :email
23
+ = f.email_field :email
24
+
25
+ %div{ ng: { init: "showPasswordFields=#{ !@user.errors.select { |a, e| !e.empty? }.empty? }" } }
26
+ .row{ ng: { hide: 'showPasswordFields' } }
27
+ .columns
28
+ %a.button.secondary.tiny.radius{ ng: { click: 'showPasswordFields=true' } }= ficon :lock, 'Change password'
29
+ .row.password{ ng: { show: 'showPasswordFields' } }
30
+ .small-4.columns
31
+ = f.label :current_password
32
+ = f.password_field :current_password
33
+ .small-4.columns
34
+ = f.label :password, 'New password'
35
+ = f.password_field :password
36
+ .small-4.columns
37
+ = f.label :password_confirmation, 'Confirm new password'
38
+ = f.password_field :password_confirmation
39
+
40
+ .row.custom-fields
41
+ - @user.fields.each do |key, field|
42
+ = render_custom_field field, f
43
+
44
+ .row.submit.text-center
45
+ %button.button.radius= ficon :check, 'Update profile'
46
+
data/config/routes.rb CHANGED
@@ -6,4 +6,6 @@ PushType::Core::Engine.routes.draw do
6
6
  resources :users, only: [] do
7
7
  patch :invite, on: :member
8
8
  end
9
+
10
+ resource :profile, only: [:edit, :update]
9
11
  end
@@ -15,7 +15,6 @@ module PushType
15
15
  PushType::AdminController.send :include, PushType::AuthenticationMethods
16
16
  PushType::UsersController.send :include, PushType::InvitationMethods
17
17
  DeviseController.helper PushType::AdminHelper
18
- DeviseController.helper PushType::AuthHelper
19
18
  end
20
19
  end
21
20
  end
@@ -1,4 +1,26 @@
1
- # desc "Explaining what the task does"
2
- # task :push_type do
3
- # # Task goes here
4
- # end
1
+ require 'highline/import'
2
+
3
+ namespace :push_type do
4
+ desc 'Create confirmed and authenticated user account'
5
+ task create_user: :environment do
6
+ say 'Creating user. Please answer questions...'
7
+
8
+ user = PushType::User.new({
9
+ name: ask("Full name:\t"),
10
+ email: ask("Email address:\t"),
11
+ password: ask("Password:\t") { |q| q.echo = '*' },
12
+
13
+ confirmation_sent_at: Time.zone.now,
14
+ confirmed_at: Time.zone.now,
15
+ confirmation_token: 'Generated account'
16
+ })
17
+
18
+ if user.save
19
+ say 'User successfully created'
20
+ else
21
+ say 'Error:'
22
+ user.errors.full_messages.each { |e| say "\t#{e}" }
23
+ say 'Please try again...'
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,15 @@
1
+ require "test_helper"
2
+
3
+ module PushType
4
+ describe AuthenticationMethods do
5
+
6
+ subject { PushType::AdminController.new }
7
+ let :before_filters do
8
+ subject._process_action_callbacks.find_all { |x| x.kind == :before }.map(&:filter)
9
+ end
10
+
11
+ it { subject.methods.include?(:authenticate_user!).must_equal true }
12
+ it { before_filters.include?(:authenticate_user!).must_equal true }
13
+
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ require "test_helper"
2
+
3
+ module PushType
4
+ describe InvitationMethods do
5
+
6
+ subject { PushType::UsersController.new }
7
+
8
+ it { subject.methods.include?(:invite).must_equal true }
9
+
10
+ end
11
+ end
@@ -0,0 +1,33 @@
1
+ require "test_helper"
2
+
3
+ module PushType
4
+ describe ProfilesController do
5
+
6
+ let(:current_user) { FactoryGirl.create(:confirmed_user) }
7
+ before { sign_in current_user }
8
+
9
+ describe 'GET #edit' do
10
+ before { get :edit }
11
+ it { response.must_render_template 'edit' }
12
+ it { assigns[:user].must_equal current_user }
13
+ end
14
+
15
+ describe 'PUT #update' do
16
+ before { put :update, user: { name: new_name } }
17
+
18
+ describe 'with invalid user' do
19
+ let(:new_name) { '' }
20
+ it { assigns[:user].errors.wont_be_empty }
21
+ it { response.must_render_template :edit }
22
+ end
23
+
24
+ describe 'with valid user' do
25
+ let(:new_name) { 'Test user ABC' }
26
+ it { current_user.reload.name.must_equal new_name }
27
+ it { flash[:notice].must_be :present? }
28
+ it { response.must_redirect_to edit_profile_path }
29
+ end
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,24 @@
1
+ require "test_helper"
2
+
3
+ module PushType
4
+ describe UsersController do
5
+
6
+ let(:current_user) { FactoryGirl.create(:confirmed_user) }
7
+ let(:user) { FactoryGirl.create :user }
8
+ before { sign_in current_user }
9
+
10
+ let(:last_email) { ActionMailer::Base.deliveries.last }
11
+
12
+ describe 'PUT #invite' do
13
+ let(:referer) { '/push_type/users' }
14
+ before do
15
+ @request.env["HTTP_REFERER"] = referer
16
+ put :invite, id: user.id
17
+ end
18
+ it { response.must_redirect_to referer }
19
+ it { last_email.to.must_include user.email }
20
+ it { last_email.subject.must_equal 'Confirmation instructions' }
21
+ end
22
+
23
+ end
24
+ end
@@ -11,10 +11,10 @@
11
11
  # if you're sharing your code publicly.
12
12
 
13
13
  development:
14
- secret_key_base: 6b92627318c6c9edc55e42e507174c46e422808fd9b20fef335577d6abe8f8900222d439c32e1e40faaf530996551e5d24458d149aefa98856b21c6c94308637
14
+ secret_key_base: b82ba266443adac53a52bc59a1903bcfe5b7cd2e69d38ae378bebc5cdb6ebdeddf692631ad071598f89bb06686a31e358c05bfc26a3c8bfa20826d018ddf1b05
15
15
 
16
16
  test:
17
- secret_key_base: 804d476511c7e025b9273e4d6ba3924abc65760dd72f05bb9828f34831c8c1c55360f45c5e8bbf603c0dc1ffe4e50b450cab980f24674516cd847cf973d08a00
17
+ secret_key_base: 206d2a0a52ed90dab80e01d2a031c099e0fe5d12bc6ed6f3c2af435ff5e89349fa6f8615fc23b5ca953c2efe877254fae32b660b5b149823976caa01bda5d2ae
18
18
 
19
19
  # Do not keep production secrets in the repository,
20
20
  # instead read values from the environment.
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20141205213537) do
14
+ ActiveRecord::Schema.define(version: 20150102204447) do
15
15
 
16
16
  # These are extensions that must be enabled in order to support this database
17
17
  enable_extension "plpgsql"