nue-extensions/sso-samarinda

Nue Extensions 的 SSO 集成。

1.02 2022-11-12 12:45 UTC

This package is auto-updated.

Last update: 2024-09-12 16:37:37 UTC


README

将 SSO-Samarinda 集成到您的应用中。

ss-sso-samarinda

安装

  1. 通过 Composer 安装
composer require nue-extensions/sso-samarinda
  1. 在 Nue 的侧边栏中显示 SSO-Samarinda 菜单
php artisan nue:import sso-samarinda
  1. 更新 table users
php artisan migrate --path=vendor/nue-extensions/sso-samarinda/database/migrations/2014_10_12_000000_alter_users_table.php

此命令将在您的 users 表中插入名为 uid 的新字段。您也可以不使用此命令手动添加 uid 字段。

配置

将以下配置添加到配置文件 config/nue.php 中:

'extensions' => [

	'sso-samarinda' => [
		// Arahkan kemana Anda akan tuju setelah login berhasil
		'redirect_to' => '/home', 

		// Pilih guard auth default yang dipakai
		'guard' => 'web', 

		// Beberapa parameter yang dibutuhkan untuk broker. Bisa ditemukan di 
		// https://sso.samarindakota.go.id
		'server_url' => env('SSO_SERVER_URL', null),
		'broker_name' => env('SSO_BROKER_NAME', null),
		'broker_secret' => env('SSO_BROKER_SECRET', null),

		// Tentukan Model User yang dipakai
		'model' => '\App\Models\User'
	],
	
],

使用方法

  1. 配置完成后,您可以在 env 文件中添加以下 3 个新选项:
SSO_SERVER_URL=https://sso.samarindakota.go.id
SSO_BROKER_NAME=
SSO_BROKER_SECRET=

SSO_SERVER_URL 包含 SSO Samarinda 的 URI。 SSO_BROKER_NAMESSO_BROKER_SECRET 必须填写在 https://sso.samarindakota.go.id 上注册的应用程序的数据。

  1. SSO-Samarinda 的内置自定义中间件

如果您在实现过程中需要存储会话或对 User 模型进行操作,您还可以自定义提供的中间件。例如:

a) 创建新中间件

$ php artisan make:middleware SSOAutoLogin

b) 将 默认中间件 扩展到 自定义中间件

<?php

namespace App\Http\Middleware;

use Nue\SSOSamarinda\Http\Middleware\SSOAutoLogin as Middleware;
use App\Models\User;

class SSOAutoLogin extends Middleware
{
    /**
     * Manage your users models as your default credentials
     *
     * @param Broker $response
     * @return \Illuminate\Http\RedirectResponse
     */
    public function handleLogin($response)
    {
        $user = User::updateOrCreate(['uid' => $response['data']['id']], [
            'name' => $response['data']['name'], 
            'email' => $response['data']['email'], 
            'password' => 'default', 
        ]);

        auth()->login($user);

        return;
    }
}

c) 编辑 Kernel.php

protected $middlewareGroups = [
    'web' => [
        ...
        // \Nue\SSOSamarinda\Http\Middleware\SSOAutoLogin::class,
        \App\Http\Middleware\SSOAutoLogin::class,
    ],

    'api' => [
        ...
    ],
];
  1. 视图实现

a) 登录

<a href="{{ route('sso.authorize') }}">Login</a>

b) 登出

<a href="{{ route('sso.logout') }}">Logout</a>

c) 手动使用(可选)

对于手动使用,您可以将以下脚本片段插入到控制器类中登录和登出功能。

protected function attemptLogin(Request $request)
{
    $broker = new \Nue\SSOSamarinda\Service\Broker;
    
    $credentials = $this->credentials($request);
    return $broker->login($credentials['username'], $credentials['password']);
}

public function logout(Request $request)
{
    $broker = new \Nue\SSOSamarinda\Service\Broker;
    $broker->logout();
    
    $this->guard()->logout();
    $request->session()->invalidate();
    
    return redirect('/');
}

许可证

SSO-Samarinda 使用 MIT 许可证 开发。这意味着您可以在个人和商业用途中自由使用它。祝您享受!