unila/sso

SSO-UNILA 的实用认证

dev-master 2023-09-11 08:01 UTC

This package is auto-updated.

Last update: 2024-09-27 09:36:26 UTC


README

PHP 库,用于简化应用程序使用乌尼拉大学 SSO 登录功能的操作。

Laravel 中的安装

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

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

     composer install
    
  3. 在您的项目终端中运行以下命令以安装库 Unila/SSO

     composer require unila/sso
    

使用方法

1. 移除命名空间

为了使您的代码看起来整洁,并避免编写糟糕的代码,您可以在控制器头部添加命令以移除 namespace

use SSO\SSO;

之后,仅使用如下命令进行调用

SSO::$command();

2. 身份验证

SSO::authenticate();

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

3. 获取用户详细信息

SSO::getUser();

此函数将返回包含成功身份验证的用户详细信息的 stdClass 对象。部分代码如下

$user = SSO::getUser();
echo $user->username                // menampilkan username dari user
echo $user->email                   // menampilkan email dari user
echo $user->nm_pengguna             // menampilkan nama lengkap dari user
echo $user->a_aktif                 // menampilkan status aktif dari user

3. 检查身份验证

SSO::check();

此函数用于检查用户是否曾经成功身份验证。

4. 登出

SSO::logout();

此调用将结束用户身份验证。

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

此调用将结束用户身份验证并将其重定向到乌尼拉仪表板页面。

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

与应用程序的连接

登录

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 自带的身份验证。

使用 Composer 在 Codeigniter 4 中使用

对于 Codeigniter 4 的使用,在文件夹 vendor/apereo/phpcas 中存在一些变化。将 phpcas.zip 文件从 vendor/unila/sso 文件夹中提取出来,然后将其复制并放置到 vendor/apereo/phpcas 文件夹中。

感谢

  1. PHP CAS
  2. RistekCSUI/SSO