Dashboard sipadu mbip
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

LoginController.php 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. namespace App\Http\Controllers\api;
  3. use Illuminate\Http\Request;
  4. use App\Http\Requests\RegisterRequest;
  5. use App\Http\Controllers\Api\BaseController;
  6. use Illuminate\Support\Facades\Auth;
  7. use Illuminate\Support\Str;
  8. use Hash;
  9. use Carbon\Carbon;
  10. use Crypt;
  11. use File;
  12. use Mail;
  13. use App\Model\Staff;
  14. use App\Model\StaffDetail;
  15. use App\Model\Module\Department;
  16. use App\Model\Module\DeedLaw;
  17. use App\Model\Module\Faulty;
  18. use App\Model\User;
  19. use App\Model\UserDetail;
  20. use App\Model\Module\Compound;
  21. use App\Jobs\StoreCompound;
  22. use App\Jobs\StoreNotice;
  23. class LoginController extends BaseController
  24. {
  25. /**
  26. * Create a login list controller.
  27. *
  28. * @return json
  29. */
  30. public function requestStaffLogin(Request $request) {
  31. $user = ''; $data = array();
  32. $rememberMe = false;
  33. $user = Staff::with(['StaffDetail' => function($q){
  34. $q->select('_id','full_name','identity','mobile','address','gred','no_badan','roles_access','profile_img');
  35. }])->where('no_badan',$request->no_badan)->where(function($q){
  36. $q->where('roles_access','PenguatKuasa')->orWhere('roles_access','PPenguatKuasa');
  37. })->first();
  38. if (!empty($user)) {
  39. if(Hash::check($request->password, $user->password)){
  40. // Check authorized
  41. do {
  42. $user->last_login_at = Carbon::now(new \DateTimeZone('Asia/Kuala_Lumpur'))->toDateTimeString();
  43. $user->last_login_ip = $request->getClientIp();
  44. $user->api_token = '';
  45. $user->authorized = false;
  46. $user->save();
  47. }while($user->authorized);
  48. $token_id = '';
  49. do {
  50. $token_id = Str::random(32);
  51. } while (Staff::where("token_id", "=", $token_id)->first() instanceof Staff);
  52. $user->api_token = $token_id;
  53. $user->last_login_at = Carbon::now(new \DateTimeZone('Asia/Kuala_Lumpur'))->toDateTimeString();
  54. $user->last_login_ip = $request->getClientIp();
  55. $user->authorized = true;
  56. $user->token_firebase = '';
  57. $user->save();
  58. //get all staff's related department names & ids
  59. $staff = StaffDetail::with('Department')->where('_id', $user->_id)->first();
  60. $jabatan = array();
  61. if(!empty($staff->Department))
  62. {
  63. foreach ($staff->Department as $key => $d)
  64. {
  65. array_push($jabatan , array(
  66. 'jbnama' => $d->jnama,
  67. 'jbkod' => $d->_id,
  68. ));
  69. }
  70. }
  71. //get all notice sections & deedlaws
  72. $notis = array();
  73. // $sec_faulty = Faulty::with('DeedLaw', 'Department')->whereIn('itkod', ['33', '9', '8', '10', '14', '36'])->get();
  74. // if(!empty($sec_faulty))
  75. // {
  76. // foreach ($sec_faulty as $sf)
  77. // {
  78. // array_push($notis, array(
  79. // 'k_id' => $sf->_id,
  80. // 'k_nama' => '['.$sf->sketr.'] '.$sf->nama,
  81. // 'a_id' => $sf->DeedLaw->_id,
  82. // 'a_nama' => $sf->DeedLaw->nama,
  83. // ));
  84. // }
  85. // }
  86. array_push($data, array(
  87. 'User' => $user->StaffDetail,
  88. 'token' => $user->api_token,
  89. 'jawatan' => $user->StaffDetail->gred,
  90. 'token_firebase' => $user->token_firebase,
  91. 'jabatan' => $jabatan,
  92. 'notis' => $notis,
  93. ));
  94. return $this->sendResponse($data, 'Berjaya log masuk');
  95. }else {
  96. return $this->sendError('Gagal', 'Emel atau kata-laluan tidak tepat');
  97. }
  98. }else {
  99. return $this->sendError('Gagal', 'Rekod tidak dijumpai');
  100. }
  101. }
  102. public function requestStaffLogout(Request $request){
  103. $loginUser = Staff::where('api_token', $request->api_token)->first();
  104. if(!empty($loginUser)){
  105. $loginUser->last_login_at = Carbon::now(new \DateTimeZone('Asia/Kuala_Lumpur'))->toDateTimeString();
  106. $loginUser->last_login_ip = $request->getClientIp();
  107. $loginUser->api_token = '';
  108. $loginUser->authorized = false;
  109. $loginUser->save();
  110. return $this->sendResponse('Berjaya', 'Berjaya log keluar');
  111. }else {
  112. return $this->sendError('Gagal', 'Maaf, penguatkuasa tidak dapat log keluar');
  113. }
  114. }
  115. public function checkDeviceToken(Request $request){
  116. $loginUser = Staff::where('api_token', $request->api_token)->first();
  117. if(!empty($loginUser)){
  118. return $this->sendResponse($loginUser->api_token, 'Successfully get detail');
  119. }else {
  120. return $this->sendError('Failed', 'User Not Found');
  121. }
  122. }
  123. // public function resetPassword(Request $request)
  124. // {
  125. // $data = array();
  126. // $staff = Staff::where('api_token', $request->api_token)->first();
  127. // if(!empty($staff))
  128. // {
  129. // $ic_num = StaffDetail::with('Staff')->where('identity', $request->ic_number)->first();
  130. // $id = $ic_num->_id;
  131. // if(!empty($id))
  132. // {
  133. // $staffID = Staff::where('_id', $id)->first();
  134. // $staffID->password = $request->new_password;
  135. // }
  136. // else
  137. // {
  138. // return $this->sendError('Gagal', 'Identiti tidak dijumpai');
  139. // }
  140. // }
  141. // else
  142. // {
  143. // return $this->sendError('Gagal', 'penguatkuasa tidak wujud');
  144. // }
  145. // }
  146. public function testing(Request $request)
  147. {
  148. $date = '2020-10-06 16:19:48';
  149. dd(date('F Y', strtotime($date)));
  150. }
  151. }