Invite system small fix

James Peret 10 ans auparavant
Parent
Commettre
5c0951627e
4 fichiers modifiés avec 38 ajouts et 2 suppressions
  1. 31 0
      app/controllers/users/invitations_controller.rb
  2. 5 1
      app/models/user.rb
  3. 2 1
      config/routes.rb
  4. BIN
      dump.rdb

+ 31 - 0
app/controllers/users/invitations_controller.rb

@@ -0,0 +1,31 @@
1
+class Users::InvitationsController < Devise::InvitationsController
2
+
3
+  before_filter :update_sanitized_params, only: :update
4
+
5
+  # PUT /resource/invitation
6
+  def update
7
+    respond_to do |format|
8
+      format.js do
9
+        invitation_token = Devise.token_generator.digest(resource_class, :invitation_token, update_resource_params[:invitation_token])
10
+        self.resource = resource_class.where(invitation_token: invitation_token).first
11
+        resource.skip_password = true
12
+        resource.update_attributes update_resource_params.except(:invitation_token)
13
+      end
14
+      format.html do      
15
+        invitation_token = Devise.token_generator.digest(resource_class, :invitation_token, update_resource_params[:invitation_token])
16
+        @user = User.where(email: params[:user][:email]).first
17
+        @user.update(first_name: params[:user][:first_name], last_name: params[:user][:last_name])
18
+        @user.update_attributes update_resource_params.except(:invitation_token)
19
+        super
20
+      end
21
+    end
22
+  end
23
+
24
+  protected
25
+
26
+  def update_sanitized_params
27
+    devise_parameter_sanitizer.for(:accept_invitation) do |u|
28
+      u.permit(:password, :password_confirmation, :invitation_token)
29
+    end
30
+  end
31
+end

+ 5 - 1
app/models/user.rb

@@ -12,7 +12,11 @@ class User < ActiveRecord::Base
12 12
   
13 13
   mount_uploader :avatar, AvatarUploader
14 14
   process_in_background :avatar
15
-      
15
+  
16
+  def send_reset_password_instructions
17
+    super if invitation_token.nil?
18
+  end
19
+  
16 20
   def full_name
17 21
     name = self.first_name.to_s + ' ' + self.last_name.to_s
18 22
     return name

+ 2 - 1
config/routes.rb

@@ -92,7 +92,7 @@ Avalanche2::Application.routes.draw do
92 92
   get "maintenance_mode" => "admin_panel#maintenance_mode", :as => :maintenance_mode
93 93
 
94 94
   # Devise Routes
95
-  devise_for :users, :skip => [:sessions, :passwords, :confirmations, :registrations]
95
+  devise_for :users, :skip => [:sessions, :passwords, :confirmations, :registrations], controllers: { invitations: "users/invitations" }
96 96
   as :user do
97 97
     get 'login' => 'devise/sessions#new', :as => :new_user_session
98 98
     post 'login' => 'devise/sessions#create', :as => :user_session
@@ -100,6 +100,7 @@ Avalanche2::Application.routes.draw do
100 100
     get   'signup' => 'devise/registrations#new',    :as => :new_user_registration
101 101
     post  'signup' => 'devise/registrations#create', :as => :user_registration
102 102
     put  'signup' => 'users/registrations#update', :as => :user_registration_update
103
+
103 104
     scope '/account' do
104 105
         # password reset
105 106
         get   '/reset-password'        => 'devise/passwords#new',    as: 'new_user_password'

BIN
dump.rdb