Advertisement
ilhamwara

Untitled

Nov 25th, 2016
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.71 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Controllers\Auth;
  4.  
  5. use App\User;
  6. use Validator;
  7. use App\Http\Controllers\Controller;
  8. use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
  9. use Illuminate\Http\Request;
  10.  
  11. use Auth;
  12. use Flash;
  13. use DB;
  14. use Session;
  15. use Hash;
  16. use App\Repositories\AuditRepository as Audit;
  17. use App\Models\SatkerMember;
  18.  
  19. use App\Library\CekToken;
  20.  
  21. class AuthController extends Controller
  22. {
  23. /*
  24. |--------------------------------------------------------------------------
  25. | Registration & Login Controller
  26. |--------------------------------------------------------------------------
  27. |
  28. | This controller handles the registration of new users, as well as the
  29. | authentication of existing users. By default, this controller uses
  30. | a simple trait to add these behaviors. Why don't you explore it?
  31. |
  32. */
  33.  
  34. use AuthenticatesAndRegistersUsers;
  35.  
  36. /**
  37. * Create a new authentication controller instance.
  38. *
  39. * @return void
  40. */
  41. public function __construct()
  42. {
  43. $this->middleware('guest', ['except' => 'getLogout']);
  44. }
  45.  
  46. /**
  47. * Get a validator for an incoming registration request.
  48. *
  49. * @param array $data
  50. * @return \Illuminate\Contracts\Validation\Validator
  51. */
  52. protected function validator(array $data)
  53. {
  54. return Validator::make($data, [
  55. 'first_name' => 'required|min:3|max:255',
  56. 'last_name' => 'required|min:3|max:255',
  57. 'username' => 'required|min:3|max:255',
  58. 'email' => 'required|email|max:255|unique:users',
  59. 'password' => 'required|confirmed|min:6',
  60. ]);
  61. }
  62.  
  63. /**
  64. * Create a new user instance after a valid registration.
  65. *
  66. * @param array $data
  67. * @return User
  68. */
  69. protected function create(array $data)
  70. {
  71. $user = User::create([
  72. 'first_name' => $data['first_name'],
  73. 'last_name' => $data['last_name'],
  74. 'username' => $data['username'],
  75. 'email' => $data['email'],
  76. 'password' => $data['password'],
  77. ]);
  78.  
  79. return $user;
  80. }
  81.  
  82. /**
  83. * Handle a login request to the application.
  84. *
  85. * @param \Illuminate\Http\Request $request
  86. * @return \Illuminate\Http\Response
  87. */
  88. public function postLogin(Request $request)
  89. {
  90.  
  91. $this->validate($request, [
  92. 'username' => 'required|min:3|max:255',
  93. 'password' => 'required',
  94. ]);
  95.  
  96. $credentials = $request->only('username', 'password');
  97. if (Auth::attempt($credentials, true)) {
  98.  
  99. $user = Auth::user();
  100.  
  101. // Allow only if user is root or enabled.
  102. if ( ('root' == $user->username) || ($user->enabled) )
  103. {
  104. Audit::log(Auth::user()->id, trans('general.audit-log.category-login'), trans('general.audit-log.msg-login-success', ['username' => $user->username]));
  105. // $role = DB::table('role_user')->where('user_id', Auth::user()->id)->first();
  106.  
  107. // if (!$role) {
  108. // Session::put('rolesOJK', 2);
  109. // }else{
  110. // Session::put('rolesOJK', $role->role_id);
  111. // // dd(session('rolesOJK'));
  112. // }
  113. Flash::success("Welcome " . Auth::user()->first_name);
  114.  
  115. // return redirect()->intended($this->redirectPath());
  116. return redirect('/#info');
  117. }
  118. else
  119. {
  120.  
  121. Audit::log(null, trans('general.audit-log.category-login'), trans('general.audit-log.msg-forcing-logout', ['username' => $credentials['username']]));
  122.  
  123. Auth::logout();
  124. return redirect(route('login'))
  125. ->withInput($request->only('username', 'remember'))
  126. ->withErrors([
  127. 'username' => trans('admin/users/general.error.login-failed-user-disabled'),
  128. ]);
  129. }
  130. }
  131.  
  132. Audit::log(null, trans('general.audit-log.category-login'), trans('general.audit-log.msg-login-failed', ['username' => $credentials['username']]));
  133.  
  134. return redirect($this->loginPath())
  135. // return redirect('dashboard/#info')
  136. ->withInput($request->only('username', 'remember'))
  137. ->withErrors([
  138. 'username' => $this->getFailedLoginMessage(),
  139. ]);
  140. }
  141.  
  142. public function newPostLogin(Request $request)
  143. {
  144. /*-------------
  145. | STEP 1
  146. | Validate the input
  147. */
  148.  
  149. $this->validate($request, [
  150. 'username' => 'required|min:3|max:255',
  151. 'password' => 'required',
  152. ]);
  153.  
  154. /*------------
  155. | STEP 2
  156. | Try to check the given input in local database record
  157. | If the is already registered, then redirect to dashboard
  158. | Otherwise, Step 3
  159. */
  160.  
  161. $credentials = $request->only('username', 'password');
  162. // if (Auth::attempt($credentials, $request->has('remember'))) {
  163. //Auth::attempt($credentials, $request->has('remember'));
  164.  
  165. if (Auth::attempt($credentials, $request->has('remember'))) {
  166. // $user = Auth::user();
  167. Flash::success("Welcome " . Auth::user()->first_name);
  168. // return redirect()->intended($this->redirectPath());
  169. return redirect('/#info');
  170. }else{
  171.  
  172. $adServer = "ldap://corp.ojk.go.id";
  173.  
  174. $ldap = @ldap_connect($adServer);
  175. if (!$ldap) {
  176. Audit::log(null, 'Username / Password yang anda masukan salah', ['username' => $credentials['username']]);
  177.  
  178. Auth::logout();
  179. return redirect(route('login'))
  180. ->withInput($request->only('username', 'remember'))
  181. ->withErrors([
  182. 'username' => trans('Username / Password yang anda masukan salah'),
  183. ]);
  184. }
  185.  
  186. $ldaprdn = 'corp' . "\\" . $request->username;
  187.  
  188. ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
  189. ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
  190.  
  191. $bind = @ldap_bind($ldap, $ldaprdn, $request->password);
  192. // dd($bind);
  193.  
  194. if ($bind) {
  195. $checkInside = User::where('username',$request->username)->first();
  196. if ($checkInside) {
  197. Auth::login($checkInside);
  198. // return redirect()->intended($this->redirectPath());
  199. return redirect('/#info');
  200. }
  201.  
  202. $filter="(sAMAccountName=" . $request->username . ")";
  203. $result = ldap_search($ldap,"OU=User Accounts,OU=Users OJK,DC=corp,DC=ojk,DC=go,DC=id",$filter);
  204. $info = ldap_get_entries($ldap, $result);
  205.  
  206.  
  207.  
  208. $user = new User();
  209.  
  210. $user->status = "Default Status User";
  211. $user->city = "jakarta";
  212. $dname = @explode(' ',$info[0]['cn'][0]);
  213. $user->first_name = $dname[0];
  214. $user->last_name = (array_key_exists(1, $dname)) ? $dname[1] : '';
  215. $user->email = $info[0]['mail'][0];
  216. $usrnm = explode('@', $info[0]['mail'][0]);
  217. $user->username = $usrnm[0];
  218. $user->password = Hash::make($request->password);
  219. $user->name = $info[0]['cn'][0];
  220. $user->last_login_date = "NOW()";
  221. $user->enabled = 1;
  222. $user->auth_type= 'internal';
  223.  
  224.  
  225. $user->role = 2;
  226.  
  227. $user->save();
  228.  
  229. DB::table('role_user')->insert(['user_id'=>$user->id, 'role_id'=>'2']);
  230.  
  231. //UPDATE FROM SIMFOSIA
  232. $url = 'http://10.208.125.36/webservices/rest/?method=MasterDataPegawaiPOINTER&format=xml&pin=d2F5&email=' . $info[0]['mail'][0];
  233. $xml = simplexml_load_file($url) or die("Gagal Koneksi Ke Simfosia");
  234. // echo $xml->response->code;
  235. if($xml->response->total_seluruh_data < 1){
  236. die('Kosong lho..');
  237. }
  238.  
  239. $user = \App\User::findOrFail($user->id);
  240. $simDat = $xml->response->data->record[0];
  241. $user->email = $simDat->email;
  242. $user->nip = $simDat->nip;
  243. $user->name = $simDat->nm_peg;
  244. $user->nm_jabatan = $simDat->nm_jabatan;
  245. $user->designation = $simDat->nm_jabatan;
  246. $user->kd_unit_kerja = $simDat->kd_unit_kerja;
  247. $user->nm_unit_kerja = $simDat->nm_unit_kerja;
  248. $user->kd_bidang = $simDat->kd_bidang;
  249. $user->nm_bidang = $simDat->nm_bidang;
  250. $user->kd_deputi_komisioner = $simDat->kd_deputi_komisioner;
  251. $user->nm_deputi_komisioner = $simDat->nm_deputi_komisioner;
  252. $user->kd_deputi_direktur = $simDat->kd_deputi_direktur;
  253. $user->nm_deputi_direktur = $simDat->nm_deputi_direktur;
  254. $user->kd_bagian = $simDat->kd_bagian;
  255. $user->nm_sbagian = $simDat->nm_bagian;
  256. $user->kd_subbagian = $simDat->kd_subbagian;
  257. $user->nm_subbagian = $simDat->nm_subbagian;
  258. $user->kd_kantor = $simDat->kd_kantor;
  259. $user->nm_kantor = $simDat->nm_kantor;
  260. $user->phone_kantor = $simDat->phone_kantor;
  261. $user->phone_kantor_ext = $simDat->phone_kantor_ext;
  262. $user->dob = $simDat->tgl_lahir;
  263. $user->kd_departemen = $simDat->kd_departemen;
  264. $user->nm_departemen = $simDat->nm_departemen;
  265.  
  266. $user->save();
  267.  
  268. // $checkSatker = Satker::where('name', $user->nm_departemen)->get();
  269. // if ($checkSatker->count > 0) {
  270. // $satker = new Satker();
  271.  
  272. // }
  273. $satkerMember = new SatkerMember();
  274. $satkerMember->user_id = $user->id;
  275. $satkerMember->nama_departemen = $user->nm_departemen;
  276. $satkerMember->member_type = 'regular';
  277. $satkerMember->save();
  278.  
  279. Auth::login($user);
  280. // return redirect()->intended($this->redirectPath());
  281. return redirect('/#info');
  282.  
  283.  
  284. @ldap_close($ldap);
  285. } else {
  286. Audit::log(null, 'Username / Password yang anda masukan salah', ['username' => $credentials['username']]);
  287.  
  288. Auth::logout();
  289. return redirect(route('login'))
  290. ->withInput($request->only('username', 'remember'))
  291. ->withErrors([
  292. 'username' => trans('Username / Password yang anda masukan salah'),
  293. ]);
  294. }
  295. }
  296.  
  297.  
  298.  
  299. }
  300.  
  301. /**
  302. * Show the application login form.
  303. *
  304. * @return \Illuminate\Http\Response
  305. */
  306. public function getLogin()
  307. {
  308. $page_title = "Login";
  309. echo view('auth.login')->with('title', 'Login | Ojkway');
  310. //return view('auth.login', compact('page_title'));
  311. }
  312.  
  313. /**
  314. * Show the application registration form.
  315. *
  316. * @return \Illuminate\Http\Response
  317. */
  318. public function getRegister()
  319. {
  320. $page_title = "Register";
  321.  
  322. return view('auth.register', compact('page_title'));
  323. }
  324.  
  325. /**
  326. * Handle a registration request for the application.
  327. *
  328. * @param \Illuminate\Http\Request $request
  329. * @return \Illuminate\Http\Response
  330. */
  331. public function postRegister(Request $request)
  332. {
  333. $username = "N/A";
  334. if ($request->has('username')) {
  335. $username = $request['username'];
  336. }
  337. Audit::log(null, trans('general.audit-log.category-register'), trans('general.audit-log.msg-registration-attempt', ['username' => $username]));
  338.  
  339. $validator = $this->validator($request->all());
  340.  
  341. if ($validator->fails()) {
  342. $this->throwValidationException(
  343. $request, $validator
  344. );
  345. }
  346.  
  347. $user = $this->create($request->all());
  348.  
  349. if (config('auth.enable_user_on_create')) {
  350. $user->enabled = true;
  351. $user->save();
  352. Audit::log(null, trans('general.audit-log.category-login'), trans('general.audit-log.msg-account-created-login-in', ['username' => $user->username]));
  353. Flash::success("Welcome " . $user->first_name . ", your account has been created");
  354.  
  355. Auth::login($user);
  356.  
  357. // return redirect($this->redirectPath());
  358. return redirect('/#info');
  359. }
  360. else {
  361. Audit::log(null, trans('general.audit-log.category-login'), trans('general.audit-log.msg-account-created-disabled', ['username' => $user->username]));
  362. Flash::success("Welcome " . $user->first_name . ", your account has been created, and will soon be enabled.");
  363.  
  364. return redirect(route('/'));
  365. }
  366. }
  367.  
  368. public function apiPostLogin(Request $request)
  369. {
  370. /*-------------
  371. | STEP 1
  372. | Validate the input
  373. */
  374.  
  375. $this->validate($request, [
  376. 'username' => 'required|min:3|max:255',
  377. 'password' => 'required',
  378. ]);
  379.  
  380. /*------------
  381. | STEP 2
  382. | Try to check the given input in local database record
  383. | If the is already registered, then redirect to dashboard
  384. | Otherwise, Step 3
  385. */
  386.  
  387. $credentials = $request->only('username', 'password');
  388. // if (Auth::attempt($credentials, $request->has('remember'))) {
  389. Auth::attempt($credentials, $request->has('remember'));
  390.  
  391. if (Auth::user()) {
  392. // // $user = Auth::user();
  393. // Flash::success("Welcome " . Auth::user()->first_name);
  394. // return redirect()->intended($this->redirectPath());
  395. //return redirect('/#info');
  396.  
  397. $token = CekToken::gen($request->username);
  398. $user = User::where('username', $request->username)->first();
  399.  
  400. return response()->json(['Status'=>true, 'Data'=> $user, 'Pesan' => '', 'token' => $token]);
  401. }else{
  402.  
  403. $adServer = "ldap://corp.ojk.go.id";
  404.  
  405. $ldap = @ldap_connect($adServer);
  406. if (!$ldap) {
  407. return response()->json(['Status'=>false, 'Data'=> '', 'Pesan'=>'Tidak dapat tersambung dengan LDAP']);
  408. }
  409.  
  410. $ldaprdn = 'corp' . "\\" . $request->username;
  411.  
  412. ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
  413. ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
  414.  
  415. $bind = @ldap_bind($ldap, $ldaprdn, $request->password);
  416. // dd($bind);
  417.  
  418. if ($bind) {
  419. $checkInside = User::where('username',$request->username)->first();
  420. if ($checkInside) {
  421. Auth::login($checkInside);
  422. // return redirect()->intended($this->redirectPath());
  423. // return redirect('/#info');
  424.  
  425. $token = CekToken::gen($request->username);
  426. return response()->json(['Status'=>true, 'Data'=> $checkInside, 'Pesan' => '', 'token' => $token]);
  427. }
  428.  
  429. $filter="(sAMAccountName=" . $request->username . ")";
  430. $result = ldap_search($ldap,"OU=User Accounts,OU=Users OJK,DC=corp,DC=ojk,DC=go,DC=id",$filter);
  431. $info = ldap_get_entries($ldap, $result);
  432.  
  433.  
  434.  
  435. $user = new User();
  436.  
  437. $user->status = "Default Status User";
  438. $user->city = "jakarta";
  439. $dname = @explode(' ',$info[0]['cn'][0]);
  440. $user->first_name = $dname[0];
  441. $user->last_name = (array_key_exists(1, $dname)) ? $dname[1] : '';
  442. $user->email = $info[0]['mail'][0];
  443. $usrnm = explode('@', $info[0]['mail'][0]);
  444. $user->username = $usrnm[0];
  445. $user->password = Hash::make($request->password);
  446. $user->name = $info[0]['cn'][0];
  447. $user->last_login_date = "2016-08-17 00:00:00";
  448. $user->enabled = 1;
  449. $user->auth_type= 'internal';
  450.  
  451.  
  452. $user->role = 2;
  453.  
  454. $user->save();
  455.  
  456. DB::table('role_user')->insert(['user_id'=>$user->id, 'role_id'=>'2']);
  457.  
  458. //UPDATE FROM SIMFOSIA
  459. $url = 'http://10.208.125.36/webservices/rest/?method=MasterDataPegawaiPOINTER&format=xml&pin=d2F5&email=' . $info[0]['mail'][0];
  460. $xml = simplexml_load_file($url) or die("Can not read simfosia feed");
  461. // echo $xml->response->code;
  462. if($xml->response->total_seluruh_data < 1){
  463. die('Kosong lho..');
  464. }
  465.  
  466. $user = \App\User::findOrFail($user->id);
  467. $simDat = $xml->response->data->record[0];
  468. $user->email = $simDat->email;
  469. $user->nip = $simDat->nip;
  470. $user->name = $simDat->nm_peg;
  471. $user->nm_jabatan = $simDat->nm_jabatan;
  472. $user->designation = $simDat->nm_jabatan;
  473. $user->kd_unit_kerja = $simDat->kd_unit_kerja;
  474. $user->nm_unit_kerja = $simDat->nm_unit_kerja;
  475. $user->kd_bidang = $simDat->kd_bidang;
  476. $user->nm_bidang = $simDat->nm_bidang;
  477. $user->kd_deputi_komisioner = $simDat->kd_deputi_komisioner;
  478. $user->nm_deputi_komisioner = $simDat->nm_deputi_komisioner;
  479. $user->kd_deputi_direktur = $simDat->kd_deputi_direktur;
  480. $user->nm_deputi_direktur = $simDat->nm_deputi_direktur;
  481. $user->kd_bagian = $simDat->kd_bagian;
  482. $user->nm_sbagian = $simDat->nm_bagian;
  483. $user->kd_subbagian = $simDat->kd_subbagian;
  484. $user->nm_subbagian = $simDat->nm_subbagian;
  485. $user->kd_kantor = $simDat->kd_kantor;
  486. $user->nm_kantor = $simDat->nm_kantor;
  487. $user->phone_kantor = $simDat->phone_kantor;
  488. $user->phone_kantor_ext = $simDat->phone_kantor_ext;
  489. $user->dob = $simDat->tgl_lahir;
  490. $user->kd_departemen = $simDat->kd_departemen;
  491. $user->nm_departemen = $simDat->nm_departemen;
  492.  
  493. $user->save();
  494.  
  495. // $checkSatker = Satker::where('name', $user->nm_departemen)->get();
  496. // if ($checkSatker->count > 0) {
  497. // $satker = new Satker();
  498.  
  499. // }
  500. $satkerMember = new SatkerMember();
  501. $satkerMember->user_id = $user->id;
  502. $satkerMember->nama_departemen = $user->nm_departemen;
  503. $satkerMember->save();
  504.  
  505. // Auth::login($user);
  506. // // return redirect()->intended($this->redirectPath());
  507. // return redirect('/#info');
  508.  
  509. $token = CekToken::gen($request->username);
  510. return response()->json(['Status'=>true, 'Data'=> $user, 'Pesan' => '', 'token' => $token]);
  511.  
  512. @ldap_close($ldap);
  513. } else {
  514.  
  515. return response()->json(['Status'=>false, 'Data'=> '', 'Pesan'=>'Username atau Password tidak cocok.']);
  516. }
  517. }
  518. }
  519.  
  520. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement