Usermanager/Http/Controllers/Auth/AuthenticatedSessionController.php
Daeng Deni Mardaeni b153558a25 update migrations
2023-09-27 15:06:08 +07:00

122 lines
4.0 KiB
PHP

<?php
namespace Modules\Usermanager\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Auth;
use Modules\Usermanager\Http\Requests\LoginRequest;
class AuthenticatedSessionController extends Controller
{
/**
* Handle an incoming authentication request.
*
* @param \Modules\Usermanager\Http\Requests\LoginRequest $request
*
* @return \Illuminate\Http\RedirectResponse
*/
public function store(LoginRequest $request)
{
$request->authenticate();
$request->session()->regenerate();
$request->user()->update([
'last_login_at' => Carbon::now()->toDateTimeString(),
'last_login_ip' => $request->getClientIp()
]);
return redirect()->intended(RouteServiceProvider::HOME);
}
public function storeUsermanager(Request $request)
{
$userArray = [];
$id = $request->email;
$passwd = $request->password;
$SERVER_ADDR = $request->ip();
$IPUserManager = $_ENV['IP_USER_MANAGER'];
$portUserManager = $_ENV['PORT_USER_MANAGER'];
$appId = $_ENV['APP_ID'];
$userData = verify_user($id, $passwd, $SERVER_ADDR, $IPUserManager, $portUserManager, $appId);
if (strlen($userData) > 1) {
$userRawArray = explode("\t", $userData);
foreach ($userRawArray as $rkey => $rval) {
[$key, $val] = explode('=', $rval);
$userArray[0][$key] = $val;
}
$user = User::where('user_id', '=', $request->email)->first();
if (!$user) {
$user = User::create([
'name' => $userArray[0]['NAMA_USER'],
'user_id' => $userArray[0]['KD_USER']
]);
switch ($userArray[0]['KD_GROUP']) {
case '001' :
$user->assignRole('administrator');
break;
case '007' :
$user->assignRole('operator');
break;
case '008' :
$user->assignRole('otorisator');
break;
default :
$user->assignRole('user');
break;
}
}
Auth::loginUsingId($user->id, true);
$request->session()->regenerate();
}
return redirect()->intended(RouteServiceProvider::HOME);
}
/**
* Display the login view.
*
* @return \Illuminate\View\View
*/
public function create()
{
if (isset($_ENV['METHOD_AUTH'])) {
if ($_ENV['METHOD_AUTH'] == 'usermanager') {
addJavascriptFile('assets/js/custom/authentication/sign-in/uim.js');
return view('usermanager::auth.login-usermanager');
} else {
addJavascriptFile('assets/js/custom/authentication/sign-in/general.js');
return view('usermanager::auth.login');
}
}
}
/**
* Destroy an authenticated session.
*
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Request $request)
{
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
}