unisa/sso

使用 SSO-UNISA 的实用认证

dev-master 2024-01-05 08:19 UTC

This package is auto-updated.

Last update: 2024-09-05 09:54:31 UTC


README

PHP 库,简化应用使用 UNISA SSO 登录功能。

在 Laravel 中安装

  1. 在您的笔记本电脑/PC 上安装 Composer

  2. 在您的 project 终端中运行以下命令来安装库 composer

     composer install
    
  3. 在您的 project 终端中运行以下命令来安装库 unisa/SSO

     composer require unisa/sso
    

使用方法

1. 移除命名空间

为了使您的代码看起来更整洁,避免代码质量下降,您可以在控制器头部添加命令以移除 namespace

use SSO\SSO;

之后,调用时只需使用如下命令

SSO::$command();

2. 验证

SSO::authenticate();

此调用将浏览器重定向到 SSO 登录页面。如果验证成功,则此函数将返回 true 并将其传递给需要此验证的应用程序。

3. 获取用户详情

SSO::getUser();

此函数将返回一个包含成功验证用户详情的 stdClass 对象。代码片段如下

$user = SSO::getUser();
echo $user->email                   // menampilkan email dari user
echo $user->first_name             // menampilkan nama lengkap dari user

3. 检查验证

SSO::check();

此函数用于检查用户是否成功验证。

4. 登出

SSO::logout();

此调用将结束用户验证。

SSO::logout(url('http://unisayogya.ac.id'));

此调用将结束用户验证并重定向到 UNISA 仪表板页面。

上述两个函数用于实现单点登出。

与应用程序连接

登录

public function signing_process() {
    if(SSO::authenticate()) //mengecek apakah user telah login atau belum
    {
        if(SSO::check()) {
            $check = User::where('username', SSO::getUser()->username)->first(); //mengecek apakah pengguna SSO memiliki username yang sama dengan database aplikasi
            if(!is_null($check)) {
                Auth::loginUsingId($check->id_pengguna); //mengotentikasi pengguna aplikasi
                session()->flash('success', 'You are logged in!');
                return redirect()->route('index');
            } else {
                alert()->error('Data pengguna tidak ditemukan, silahkan hubungi administrator.')->html(true);
                return redirect()->route('auth.login'); //mengarahkan ke halaman login jika pengguna gagal diotentikasi oleh aplikasi
            }
        }
    } else {
        return redirect()->route('auth.logout'); //me-*redirect* user jika otentikasi SSO gagal, diarahkan untuk mengakhiri sesi login (jika ada)
    }
}

此函数用于检查应用程序中的 SSO 验证。

登出

public function logout() {
    if(Auth::check()) { //mengecek otentikasi pada aplikasi
        SSO::cookieClear(); //If destroy cookie laravel
        SSO::ciCookieClear(); //If destroy cookie codeigniter4
        Session::flush(); //Destroy Session
        Auth::logout(); //Destroy Auth
        alert()->success('Berhasil logout'); //Alert
        return redirect('auth/login')->with('pesan', 'berhasil logout'); //Redirect to login page
    } else {
        return redirect('auth/login'); //menampilkan halaman login
    }
}

此函数用于结束 SSO 和应用程序的验证会话。

中间件

if( SSO::check() || Auth::check() ) {
    return $next($request);
} else {
    return redirect()->route('auth.logout');
}

此函数用于检查 SSO 或 Laravel 内置的验证。

使用 Codeigniter 4 和 Composer 的方法

对于 Codeigniter 4 的使用,在 vendor/apereo/phpcas 文件夹中有所更改。将 phpcas.zip 文件从 vendor/unisa/sso 文件夹中提取出来,然后将其复制并放置到 vendor/apereo/phpcas 文件夹中。

感谢

  1. PHP CAS
  2. RistekCSUI/SSO