From 11f99bf1e3fbd6c4f5770431437bf24fa6aa82c8 Mon Sep 17 00:00:00 2001
From: luandalmazo <luandalmazo@gmail.com>
Date: Fri, 5 Aug 2022 09:09:29 -0300
Subject: [PATCH] Issue #10: FIX email confirmation

---
 app/controllers/v1/sessions_controller.rb | 9 +++------
 app/models/user.rb                        | 5 +++++
 lib/tasks/access.rake                     | 1 +
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/app/controllers/v1/sessions_controller.rb b/app/controllers/v1/sessions_controller.rb
index ff474f08..dd672999 100644
--- a/app/controllers/v1/sessions_controller.rb
+++ b/app/controllers/v1/sessions_controller.rb
@@ -66,13 +66,10 @@ require 'open-uri'
       
         #in case of the user is not confirmed, find the user and send an email confirmation
         else
-          @user = User.find_by_email(params[:email])
-          UserMailer.email_confirmation(@user).deliver_now
           return render_create_error_not_confirmed
         end
 
       else  
-        puts("Usuário não encontrado")
         return render_create_error_bad_credentials
       end
 
@@ -82,7 +79,7 @@ require 'open-uri'
       render json: {
         success: false,
         errors: [ I18n.t("devise.failure.unconfirmed")],
-      }, status: 401
+      }, status: 417
        
     end
 
@@ -90,7 +87,7 @@ require 'open-uri'
       render json: {
         success: false,
         errors: [ I18n.t("devise.sessions.banished")]
-      }, status: 401
+      }, status: 406
     end
 
     def render_create_error_blocked
@@ -98,7 +95,7 @@ require 'open-uri'
         success: false,
         errors: [ I18n.t("devise.sessions.blocked")],
         avaliable_at: @resource.reactivated_at
-      }, status: 401
+      }, status: 406
     end
         
     def reactivate_user?
diff --git a/app/models/user.rb b/app/models/user.rb
index ecc3970b..dac3fd87 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -139,6 +139,7 @@ class User < ApplicationRecord
   after_create :default_role
   before_save :verify_teacher_id
   after_save :verify_dspace_info
+  before_create :send_email_confirmation
   before_destroy :delete_index
   after_update :create_actions
 
@@ -167,6 +168,10 @@ class User < ApplicationRecord
   # don't versionate frequently changed fields
   has_paper_trail ignore: [:tokens, :sign_in_count, :current_sign_in_at, :last_sign_in_at]
 
+  def send_email_confirmation
+    UserMailer.email_confirmation(self).deliver_now
+  end
+
   def email_activate
     self.email_confirmed = true
     self.confirm_token = nil
diff --git a/lib/tasks/access.rake b/lib/tasks/access.rake
index 78f2b993..be9ca3a7 100644
--- a/lib/tasks/access.rake
+++ b/lib/tasks/access.rake
@@ -6,6 +6,7 @@ namespace :access do
         User.all.each do |user|
             if user.created_at < base_date
                 user.update_attribute(:email_confirmed, true)
+                user.update_attribute(:confirmed_at, Time.now)
             end
 
         end
-- 
GitLab