Adalah module yang bisa digunakan untuk verifikasi token google login.

Instalasi

Jalankan perintah di bawah di folder aplikasi:

mim app install lib-user-auth-google-signin

Konfigurasi

Tambahkan konfigurasi seperti di bawah pada konfigurasi aplikasi untuk menentukan google client id yang akan digunakan untuk verifikasi data token user.

<?php

return [
    'libUserAuthGoogleSignin' => [
        'client' => [
            'id' => '...'
        ]
    ]
];

Penggunaan

Module ini menambah satu libray dengan nama LibUserAuthGoogleSignin\Library\GoogleLogin yang bisa digunakan untuk verifikasi token yang dikirimkan oleh user untuk mendapatkan informasi google user yang sedang mencoba untuk login.

use LibUserAuthGoogleSignin\Library\GoogleLogin;

$token = $_POST['token'];

$gu = GoogleLogin::getUser($token);

if(!$token)
    die('invalid token');

$user = $gu->user;
if(!$user) {
    $user_id = User::create([....]);
    $user = User::getOne(['id' => $user_id]);
    GoogleLogin::assignUser($user, $gu->google->id);
}

Method

static function assignUser(object $user, string $google_user): void

Meng-assign google user ke google account. Panggil fungsi ini ketika user baru berhasil dibuat dari data google account.

static function getUser(string $token): ?object

Mengambil informasi user berdasarkan token google login yang didapat dari client.

Fungsi ini akan mengembalikan null jika token invalid, dan akan mengembalikan data object seperti di bawah jika berhasil di verifikasi:

$result = (object)[
    'google' => (object)[
        'id' => string,
        'email' => (object)[
            'address' => string,
            'verified' => bool
        ],
        'name' => string,
        'avatar' => string
    ],
    'user' => object
];

Properti $.google diambil dari data token, sementara properti $.user adalah informasi user berdasarkan database hanya jika user dengan google account tersebut sudah pernah di-assign.