Browse Source

Resend confirmation token

Samson Mutunga 4 years ago
parent
commit
d0d009880b

+ 15 - 0
app/Http/Controllers/Controller.php

@@ -24,4 +24,19 @@ class Controller extends BaseController
             ->json();
         return $response;
     }
+    public function pass($data = null) : array
+    {
+        return [
+            'success'=>true,
+            'data'=>$data,
+        ];
+    }
+    
+	public function fail($message) : array
+    {
+        return [
+            'success'=>false,
+            'message'=>$message
+        ];
+    }
 }

+ 18 - 1
app/Http/Controllers/LoginController.php

@@ -39,8 +39,25 @@ class LoginController extends Controller
         return redirect()->to(route('confirm-auth-token'));
     }
 
+    public function resendSmsAuthToken(Request $request){
+        $cellNumber = $request->cookie('current_cell_number');
+
+        $javaResponse = $this->callJava($request, '/potentialPro/createAndSendSmsAuthToken', [
+            'cellNumber'=>$cellNumber
+        ]);
+
+
+        if(!$javaResponse['success']){
+            return $this->fail($javaResponse['message']);
+        }
+
+        return $this->pass();
+
+    }
+
     public function confirmAuthToken(Request $request){
-        return view('confirm-auth-token');
+        $cellNumber = $request->cookie('current_cell_number');
+        return view('confirm-auth-token',compact('cellNumber'));
     }
 
     public function processConfirmAuthToken(Request $request){

+ 44 - 3
resources/views/confirm-auth-token.blade.php

@@ -1,8 +1,8 @@
 @extends('layouts.login')
 @section('content')
 
-<div class="blue-card p-4">
-  <form action="{{route('process-confirm-auth-token')}}"  method="post">
+<div id="confirmAuthTokenComponent" class="blue-card p-4" v-cloak>
+  <form action="{{route('process-confirm-auth-token')}}" method="post">
     <div class="text-center my-3">
       <img src="/img/logo.svg" alt="Logo" height="35">
     </div>
@@ -24,6 +24,47 @@
       </div>
     </div>
   </form>
+  <div class="text-center mt-3">
+    <a href="#" class="text-underline" resend-token>
+    <u v-if="!loading">Resend confirmation token</u>
+    <u v-else><i class="fas fa-circle-notch fa-spin"></i> Resending...</u>
+    </a>
+  </div>
+  <div v-if="response" class="text-center">
+    <small v-if="!response.success" class="text-danger"><i class="fas fa-exclamation-triangle"></i> @{{ response.message }}</small>
+    <small v-else class="text-success"><i class="fas fa-check-circle"></i> Confirmation code has been resent!</small>
+  </div>
   <p><small class="text-center d-block text-muted my-3">If you have any questions at all, please contact your Dedicated HR Representative at the phone number or email displayed inside this portal.</small></p>
 </div>
-@endsection
+
+<script>
+  var confirmAuthTokenComponent = new Vue({
+    el: '#confirmAuthTokenComponent',
+    data: {
+      loading: false,
+      response: null
+    },
+    delimiters:['@[[', ']]'],
+    methods: {
+      initResendConfirmationToken: function() {
+        var self = this;
+        $('[resend-token]').click(function(evt) {
+          evt.preventDefault();
+          if (self.loading) return;
+          self.loading = true;
+          $.post("{{ route('resend-sms-auth-token') }}", {}, function(response) {
+            self.loading = false;
+            self.response = response;
+          }, 'json');
+        });
+      },
+      init: function() {
+        this.initResendConfirmationToken();
+      },
+    },
+    mounted: function() {
+      this.init();
+    }
+  });
+</script>
+@endsection

+ 10 - 1
resources/views/layouts/login.blade.php

@@ -16,6 +16,15 @@
   <script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script>
   <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
   <script src='https://www.google.com/recaptcha/api.js'></script>
+  <script>
+    $(function() {
+      $.ajaxSetup({
+        headers: {
+          'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
+        }
+      });
+    });
+  </script>
 </head>
 
 <body>
@@ -48,7 +57,7 @@
             <li>Organize the HR process.</li>
             <li>Coordinate communication with your dedicated HR representative.</li>
             <li>Test your webcam and/or smartphone to confirm that your hardware is ready for telehealth.</li>
-</ul>
+          </ul>
         </div>
         <div class="col-lg-5">
           @yield('content')

+ 1 - 0
routes/web.php

@@ -16,6 +16,7 @@ use Illuminate\Support\Facades\Route;
 
 Route::get('/', [LoginController::class, 'login'])->name('login');
 Route::post('send-sms-auth-token', [LoginController::class, 'sendSmsAuthToken'])->name('send-sms-auth-token');
+Route::post('resend-sms-auth-token', [LoginController::class, 'resendSmsAuthToken'])->name('resend-sms-auth-token');
 
 Route::get('/confirm-auth-token', [LoginController::class, 'confirmAuthToken'])->name('confirm-auth-token');
 Route::post('/process-confirm-auth-token', [LoginController::class, 'processConfirmAuthToken'])->name('process-confirm-auth-token');