Dashboard sipadu mbip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LoginController.php 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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\User;
  17. use App\Model\UserDetail;
  18. use App\Model\Module\Compound;
  19. use App\Jobs\StoreCompound;
  20. use App\Jobs\StoreNotice;
  21. class LoginController extends BaseController
  22. {
  23. /**
  24. * Create a login list controller.
  25. *
  26. * @return json
  27. */
  28. public function requestStaffLogin(Request $request) {
  29. $user = ''; $data = array();
  30. $rememberMe = false;
  31. $user = Staff::with(['StaffDetail' => function($q){
  32. $q->select('_id','full_name','identity','mobile','address','gred','no_badan','roles_access','profile_img');
  33. }])->where('no_badan',$request->no_badan)->where(function($q){
  34. $q->where('roles_access','PenguatKuasa')->orWhere('roles_access','PPenguatKuasa');
  35. })->first();
  36. if (!empty($user)) {
  37. if(Hash::check($request->password, $user->password)){
  38. // Check authorized
  39. do {
  40. $user->last_login_at = Carbon::now(new \DateTimeZone('Asia/Kuala_Lumpur'))->toDateTimeString();
  41. $user->last_login_ip = $request->getClientIp();
  42. $user->api_token = '';
  43. $user->authorized = false;
  44. $user->save();
  45. }while($user->authorized);
  46. $token_id = '';
  47. do {
  48. $token_id = Str::random(32);
  49. } while (Staff::where("token_id", "=", $token_id)->first() instanceof Staff);
  50. $user->api_token = $token_id;
  51. $user->last_login_at = Carbon::now(new \DateTimeZone('Asia/Kuala_Lumpur'))->toDateTimeString();
  52. $user->last_login_ip = $request->getClientIp();
  53. $user->authorized = true;
  54. $user->token_firebase = '';
  55. $user->save();
  56. $staff = StaffDetail::with('Department')->where('_id', $user->_id)->first();
  57. if(!empty($staff->Department)){
  58. foreach ($staff->Department as $key => $d) {
  59. $tempJ[] = $d->_id;
  60. }
  61. $jabatan = implode( ", ", $tempJ );
  62. }
  63. array_push($data, array(
  64. 'User' => $user->StaffDetail,
  65. 'token' => $user->api_token,
  66. 'jawatan' => $user->StaffDetail->gred,
  67. 'token_firebase' => $user->token_firebase,
  68. 'jbkod' => $jabatan
  69. ));
  70. return $this->sendResponse($data, 'Berjaya log masuk');
  71. }else {
  72. return $this->sendError('Gagal', 'Emel atau kata-laluan tidak tepat');
  73. }
  74. }else {
  75. return $this->sendError('Gagal', 'Rekod tidak dijumpai');
  76. }
  77. }
  78. public function requestStaffLogout(Request $request){
  79. $loginUser = Staff::where('api_token', $request->api_token)->first();
  80. if(!empty($loginUser)){
  81. $loginUser->last_login_at = Carbon::now(new \DateTimeZone('Asia/Kuala_Lumpur'))->toDateTimeString();
  82. $loginUser->last_login_ip = $request->getClientIp();
  83. $loginUser->api_token = '';
  84. $loginUser->authorized = false;
  85. $loginUser->save();
  86. return $this->sendResponse('Berjaya', 'Berjaya log keluar');
  87. }else {
  88. return $this->sendError('Gagal', 'Maaf, penguatkuasa tidak dapat log keluar');
  89. }
  90. }
  91. public function checkDeviceToken(Request $request){
  92. $loginUser = Staff::where('api_token', $request->api_token)->first();
  93. if(!empty($loginUser)){
  94. return $this->sendResponse($loginUser->api_token, 'Successfully get detail');
  95. }else {
  96. return $this->sendError('Failed', 'User Not Found');
  97. }
  98. }
  99. // public function resetPassword(Request $request)
  100. // {
  101. // $data = array();
  102. // $staff = Staff::where('api_token', $request->api_token)->first();
  103. // if(!empty($staff))
  104. // {
  105. // $ic_num = StaffDetail::with('Staff')->where('identity', $request->ic_number)->first();
  106. // $id = $ic_num->_id;
  107. // if(!empty($id))
  108. // {
  109. // $staffID = Staff::where('_id', $id)->first();
  110. // $staffID->password = $request->new_password;
  111. // }
  112. // else
  113. // {
  114. // return $this->sendError('Gagal', 'Identiti tidak dijumpai');
  115. // }
  116. // }
  117. // else
  118. // {
  119. // return $this->sendError('Gagal', 'penguatkuasa tidak wujud');
  120. // }
  121. // }
  122. public function testing(Request $request)
  123. {
  124. $test = '02399'; //filter_var('000099', FILTER_SANITIZE_NUMBER_INT);
  125. (int)$test += 1;
  126. dd($test);
  127. }
  128. }