hwacom/eip-login

EIP Login Package

v1.1.4 2023-10-17 07:23 UTC

README

Build Status Total Downloads Latest Stable Version

安裝說明

composer require hwacom/eip-login

需提前安裝並設定的套件

laravel/breeze

php artisan breeze:install
npm uninstall tailwindcss postcss autoprefixer
npm install tailwindcss@npm:@tailwindcss/postcss7-compat @tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
npm install
npm run dev
php artisan migrate


SSO 登入
hwacom/client-sso

人員資料 HRepository
hwacom/personnel-info

Service Provider設定 (Laravel 5.5^ 會自動掛載)

Composer安裝完後要需要修改 config/app.php 找到 providers 區域並添加:

\Hwacom\EIPLogin\EIPLoginServiceProvider::class,

Config設定檔發佈

用下列指令會建立eip.php設定檔,需要在 .env 檔案中增加設定, 同時建立出eip_login語系檔

php artisan vendor:publish

下列設定會自動增加在 config/eip.php

'eip_auth' => env('EIP_AUTH', false),
'eip_url' => env('EIP_URL'),
'JWT_EXP' => env('JWT_EXP', 900),
'CLIENT_SECRET' => env('EIP_CLIENT_SECRET'),
'COOKIE_DOMAIN' => env('COOKIE_DOMAIN'),

'model' => App\Models\User::class,

.env 中增加設定

EIP_AUTH          = true
EIP_URL           = 
EIP_CLIENT_SECRET =
COOKIE_DOMAIN     =

[LoginController] 增加兩個Function

use Hwacom\EIPLogin\Services\EIPLoginService;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
    use AuthenticatesUsers;

    public function __construct()
    {
        $this->loginService = new EIPLoginService();
    }

增加function

public function username()
{
    return 'enumber'; //帳號欄位名
}

Login

/**
 * 進入login前function 判斷走login/loginEIP
 *
 */
public function store()
{
    if (config('eip.eip_auth')) { //EIP登入
            $data = [
                'ip'             => $request->ip(),
                'username'       => $request->enumber,
                'password'       => $request->password,
            ];
            $this->loginService->loginEIP($data);
            $path = Session::get('redirect) ?? '/';
            $request->session()->regenerate();
            return redirect($path);    
    } else {
        $this->login($request); //一般登入
    
        $request->session()->regenerate();
    
        return redirect()->intended(RouteServiceProvider::HOME);
    }
    
}

Logout

/**
 * 登出用需自行寫入LoginController中
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
 */
public function destroy(Request $request)
{
    if (config('sso.sso_enable') === true) {
        setcookie("token", "", time() - 3600, '/', '.hwacom.com');
    }

    Auth::guard('web')->logout();

    $request->session()->invalidate();

    $request->session()->regenerateToken();
    
    setcookie("token", "", time() - 3600, '/', config('eip.COOKIE_DOMAIN'));

    return redirect(config("sso.sso_host"));
}

[LoginRequest] 調整rules

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        if (!config('eip.eip_auth')) {
            return [
                'enumber'  => 'required|string',
                'password' => 'required|string',
            ];
        } else {
            return [];
        }
    }

[login.blade] 調整

帳號input調整

   <div>
        <x-label for="enumber" :value="__('工號')" />
    
        <x-input id="enumber" class="block mt-1 w-full" type="text" name="enumber" :value="old('enumber')" required autofocus />
   </div>