Google Two-Factor Authentication Package for Laravel

Overview

Google2FA for Laravel

Latest Stable Version License Code Quality Build

Downloads Coverage StyleCI PHP

Google Two-Factor Authentication Package for Laravel

Google2FA is a PHP implementation of the Google Two-Factor Authentication Module, supporting the HMAC-Based One-time Password (HOTP) algorithm specified in RFC 4226 and the Time-based One-time Password (TOTP) algorithm specified in RFC 6238.

This package is a Laravel bridge to Google2FA's PHP package.

The intent of this package is to create QRCodes for Google2FA and check user typed codes. If you need to create backup/recovery codes, please check below.

Recovery/Backup codes

if you need to create recovery or backup codes to provide a way for your users to recover a lost account, you can use the Recovery Package.

Demos, Example & Playground

Please check the Google2FA Package Playground.

playground

Here's an demo app showing how to use Google2FA: google2fa-example.

You can scan the QR code on this (old) demo page with a Google Authenticator app and view the code changing (almost) in real time.

Compatibility

Laravel Google2FA Google2FA-Laravel
4.2 <= 1.0.1
5.0-5.1 <= 1.0.1
5.2-8.x >= 2.0.0 >= 0.2.0

Before Google2FA 2.0 (Laravel 5.1) you have to install pragmarx/google2fa:~1.0, because this package was both a Laravel package and a PHP (agnostic).

Demo

Click here to see the middleware demo:

middleware

Installing

Use Composer to install it:

composer require pragmarx/google2fa-laravel

Installing on Laravel

Laravel 5.5 and above

You don't have to do anything else, this package autoloads the Service Provider and create the Alias, using the new Auto-Discovery feature.

Laravel 5.4 and below

Add the Service Provider and Facade alias to your app/config/app.php (Laravel 4.x) or config/app.php (Laravel 5.x):

PragmaRX\Google2FALaravel\ServiceProvider::class,

'Google2FA' => PragmaRX\Google2FALaravel\Facade::class,

Publish the config file

php artisan vendor:publish --provider="PragmaRX\Google2FALaravel\ServiceProvider"

Using It

Use the Facade

use Google2FA;

return Google2FA::generateSecretKey();

In Laravel you can use the IoC Container

$google2fa = app('pragmarx.google2fa');

return $google2fa->generateSecretKey();

Middleware

This package has a middleware which will help you code 2FA on your app. To use it, you just have to:

Add the middleware to your Kernel.php:

protected $routeMiddleware = [
    ...
    '2fa' => \PragmaRX\Google2FALaravel\Middleware::class,
];

Using it in one or more routes:

Route::get('/admin', function () {
    return view('admin.index');
})->middleware(['auth', '2fa']);

QRCode

This package uses the Google2FA-QRCode package, please check it for more info on how to configure the proper QRCode generators for your use case.

Imagick QRCode Backend

There are three available: imagemagick (default), svg and eps.

You can change it via config:

/*
 * Which image backend to use for generating QR codes?
 *
 * Supports imagemagick, svg and eps
 */
'qrcode_image_backend' => \PragmaRX\Google2FALaravel\Support\Constants::QRCODE_IMAGE_BACKEND_IMAGEMAGICK,

Or runtime:

Google2FA::setQRCodeBackend('svg');

Configuring the view

You can set your 'ask for a one time password' view in the config file (config/google2fa.php):

/**
 * One Time Password View
 */
'view' => 'google2fa.index',

And in the view you just have to provide a form containing the input, which is also configurable:

/**
 * One Time Password request input name
 */
'otp_input' => 'one_time_password',

Here's a form example:

">
    <form action="/google2fa/authenticate" method="POST">
        <input name="one_time_password" type="text">

        <button type="submit">Authenticatebutton>
    form>

One Time Password Lifetime

Usually an OTP lasts forever, until the user logs off your app, but, to improve application safety, you may want to re-ask, only for the Google OTP, from time to time. So you can set a number of minutes here:

/**
* Lifetime in minutes.
* In case you need your users to be asked for a new one time passwords from time to time.
*/

'lifetime' => 0, // 0 = eternal

Keep in mind that this uses the Laravel sessions in the background. If this number exceeds the value set in config('session.lifetime') you will still be logged out, even if your OTP lifetime has not expired.

And you can decide whether your OTP will be kept alive while your users are browsing the site or not:

/**
 * Renew lifetime at every new request.
 */

'keep_alive' => true,

Manually logging out from 2Fa

This command wil logout your user and redirect he/she to the 2FA form on the next request:

Google2FA::logout();

If you don't want to use the Facade, you may:

use PragmaRX\Google2FALaravel\Support\Authenticator;

(new Authenticator(request()))->logout();

Throttling / Lockout after X attempts

Unless you need something really fancy, you can probably use Laravel's route throttle middleware for that:

Route::get('/admin', function () {
    return view('admin.index');
})->middleware(['auth', '2fa', 'throttle']);

Stateless usage

$authenticator = app(Authenticator::class)->bootStateless($request);

if ($authenticator->isAuthenticated()) {
    // otp auth success!
}

You can also use a stateless middleware:

protected $routeMiddleware = [
    ...
    '2fa' => \PragmaRX\Google2FALaravel\MiddlewareStateless::class,
];

Events

The following events are fired:

  • EmptyOneTimePasswordReceived
  • LoggedOut
  • LoginFailed
  • LoginSucceeded
  • OneTimePasswordExpired
  • OneTimePasswordRequested

Documentation

Check the ReadMe file in the main Google2FA repository.

Tests

The package tests were written with phpspec.

Author

Antonio Carlos Ribeiro

License

Google2FA is licensed under the MIT License - see the LICENSE file for details

Contributing

Pull requests and issues are more than welcome.

Comments
  • Compatibility between 0.2.0 and 0.2.1 with a newer version of the base

    Compatibility between 0.2.0 and 0.2.1 with a newer version of the base

    By changing the pragmarx/google2fa-laravel composer.json of pragmarx/google2fa from ~3.0 to ~4.0 you have introduced a major breaking change in to a minor version of the package.

    Removal of getQRCodeInline() function in 4.0 is a compatibility breaking change, and although nothing major changed in google2fa-laravel, the result of changing the core package has a direct major knock-on effect.

    We just had our 2FA generation go down because the minor update of the Laravel package is the accepted criteria.

    Can you consider re-releasing v0.2.1 as v0.3.0 instead seeing as v3.0 - v4.0 is the real change here?

    opened by devsi 13
  • BaconQR v2 not working

    BaconQR v2 not working

    I get this error when trying to use BaconQRCode v2.

    Class 'BaconQrCode\Renderer\Image\Png' not found
    

    v2.0 was refactored and doesnt include the PNG renderer anymore.

    this version works...

    composer require bacon/bacon-qr-code 1.0.3
    
    opened by it-can 12
  • Release 1.1.0 issue

    Release 1.1.0 issue

    Something is not right with latest release on laravel 6. After upgrade package to version 1.1.0 i get error like this: Call to undefined method Illuminate\Support\MessageBag::getBag()

    it looks like issue with @error blade tag and session messages. After back to 1.0.1 everything works fine.

    opened by code2prog 11
  • Laravel 5.2 incompatibility middleware

    Laravel 5.2 incompatibility middleware

    Hello dear mantainer,

    Installed the library but when I try to access a route protected by 2fa middleware i get :

    FatalErrorException in OneTimePasswordRequested.php line 11:
    Trait 'Illuminate\Foundation\Events\Dispatchable' not found
    

    Thanks for your efforts I hope it gets fixed. Thanks

    :1st_place_medal:

    opened by blacksheepvision 10
  • "Config not found"

    if (is_null(config(Constants::CONFIG_PACKAGE_NAME))) { throw new \Exception('Config not found'); }

    laravel 5.5 "Config not found" what is the solution of the error

    opened by omerevrencomtr 9
  • Using with SPA and Laravel as a stateless API.

    Using with SPA and Laravel as a stateless API.

    Hi! I already used this great package on another project, but this current project is a stateless Laravel application consumed by a vue.js front with jwt, there is no session, so my code breaks in the Google2FA file in the methods that use session.

    What kind of modifications do you recommend to me @antonioribeiro?

    opened by ibrunotome 7
  • Is it possible to check if authenticator app is linked to laravel?

    Is it possible to check if authenticator app is linked to laravel?

    Not an issue, just wondering if it's possible to check if the app is linked to laravel or not?

    The way I have my app setup, the user can turn 2fa on and off through account settings, however, I want a way of guaranteeing they have actually scanned and linked the auth app before clicking enable. The problem is that if the user clicks next without actually linking to the app, they will be locked out. I've put information in and warning popups to make the user aware but yeah, would be fantastic to have a way to enforce it.

    In an ideal world I'd love the functionality to work in a similar to how Whatsapp desktop works where you scan the QR on your phone and the desktop app detects when it's scanned and automatically logs you in without having to click any conform buttons and what not. I have an idea on how to do this but it all relies on having some kind of method along the lines of checkAuthenticationAppIsLinked.

    Thanks in advance! Tried googling this but couldn't get any insight on it, was hoping you guys would know more. I also appreciate I could be missing something fundamental so apologies if you've covered this before, I'm still learning about all this 2fa stuff.

    Many thanks, Jon

    opened by JonathanPort 6
  • Add explicit support for Laravel 8

    Add explicit support for Laravel 8

    Summary

    • Add Support for Laravel 8 (composer version)
    • Adapt changed signature of resolveRouteBinding
    • Improve travis testing matrix to actually test against specific Laravel versions
    • composer: all dev dependencies to be installed but prefer stable
    opened by mfn 6
  • Add support for Laravel 5.7

    Add support for Laravel 5.7

    I am unable to upgrade to Laravel 5.7 because of this package:

    $ composer update
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Your requirements could not be resolved to an installable set of packages.
    
      Problem 1
        - The requested package laravel/framework 5.7.* is satisfiable by laravel/framework[5.7.x-dev] but these conflict with your requirements or minimum-stability.
      Problem 2
        - pragmarx/google2fa-laravel v0.2.0 requires laravel/framework >=5.2 -> satisfiable by laravel/framework[5.2.41, 5.2.x-dev, 5.3.x-dev, 5.4.x-dev, 5.5.x-dev, 5.6.x-dev, 5.7.x-dev, dev-master, 5.8.x-dev, v5.2.0, v5.2.0-beta1, v5.2.1, v5.2.10, v5.2.11, v5.2.12, v5.2.13, v5.2.14, v5.2.15, v5.2.16, v5.2.17, v5.2.18, v5.2.19, v5.2.2, v5.2.20, v5.2.21, v5.2.22, v5.2.23, v5.2.24, v5.2.25, v5.2.26, v5.2.27, v5.2.28, v5.2.29, v5.2.3, v5.2.30, v5.2.31, v5.2.32, v5.2.33, v5.2.34, v5.2.35, v5.2.36, v5.2.37, v5.2.38, v5.2.39, v5.2.4, v5.2.40, v5.2.42, v5.2.43, v5.2.44, v5.2.45, v5.2.5, v5.2.6, v5.2.7, v5.2.8, v5.2.9, v5.3.0, v5.3.0-RC1, v5.3.1, v5.3.10, v5.3.11, v5.3.12, v5.3.13, v5.3.14, v5.3.15, v5.3.16, v5.3.17, v5.3.18, v5.3.19, v5.3.2, v5.3.20, v5.3.21, v5.3.22, v5.3.23, v5.3.24, v5.3.25, v5.3.26, v5.3.27, v5.3.28, v5.3.29, v5.3.3, v5.3.30, v5.3.31, v5.3.4, v5.3.5, v5.3.6, v5.3.7, v5.3.8, v5.3.9, v5.4.0, v5.4.1, v5.4.10, v5.4.11, v5.4.12, v5.4.13, v5.4.14, v5.4.15, v5.4.16, v5.4.17, v5.4.18, v5.4.19, v5.4.2, v5.4.20, v5.4.21, v5.4.22, v5.4.23, v5.4.24, v5.4.25, v5.4.26, v5.4.27, v5.4.28, v5.4.29, v5.4.3, v5.4.30, v5.4.31, v5.4.32, v5.4.33, v5.4.34, v5.4.35, v5.4.36, v5.4.4, v5.4.5, v5.4.6, v5.4.7, v5.4.8, v5.4.9, v5.5.0, v5.5.1, v5.5.10, v5.5.11, v5.5.12, v5.5.13, v5.5.14, v5.5.15, v5.5.16, v5.5.17, v5.5.18, v5.5.19, v5.5.2, v5.5.20, v5.5.21, v5.5.22, v5.5.23, v5.5.24, v5.5.25, v5.5.26, v5.5.27, v5.5.28, v5.5.29, v5.5.3, v5.5.30, v5.5.31, v5.5.32, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.38, v5.5.39, v5.5.4, v5.5.40, v5.5.41, v5.5.42, v5.5.5, v5.5.6, v5.5.7, v5.5.8, v5.5.9, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.16, v5.6.17, v5.6.18, v5.6.19, v5.6.2, v5.6.20, v5.6.21, v5.6.22, v5.6.23, v5.6.24, v5.6.25, v5.6.26, v5.6.27, v5.6.28, v5.6.29, v5.6.3, v5.6.30, v5.6.31, v5.6.32, v5.6.33, v5.6.34, v5.6.35, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9] but these conflict with your requirements or minimum-stability.
        - pragmarx/google2fa-laravel v0.2.0 requires laravel/framework >=5.2 -> satisfiable by laravel/framework[5.2.41, 5.2.x-dev, 5.3.x-dev, 5.4.x-dev, 5.5.x-dev, 5.6.x-dev, 5.7.x-dev, dev-master, 5.8.x-dev, v5.2.0, v5.2.0-beta1, v5.2.1, v5.2.10, v5.2.11, v5.2.12, v5.2.13, v5.2.14, v5.2.15, v5.2.16, v5.2.17, v5.2.18, v5.2.19, v5.2.2, v5.2.20, v5.2.21, v5.2.22, v5.2.23, v5.2.24, v5.2.25, v5.2.26, v5.2.27, v5.2.28, v5.2.29, v5.2.3, v5.2.30, v5.2.31, v5.2.32, v5.2.33, v5.2.34, v5.2.35, v5.2.36, v5.2.37, v5.2.38, v5.2.39, v5.2.4, v5.2.40, v5.2.42, v5.2.43, v5.2.44, v5.2.45, v5.2.5, v5.2.6, v5.2.7, v5.2.8, v5.2.9, v5.3.0, v5.3.0-RC1, v5.3.1, v5.3.10, v5.3.11, v5.3.12, v5.3.13, v5.3.14, v5.3.15, v5.3.16, v5.3.17, v5.3.18, v5.3.19, v5.3.2, v5.3.20, v5.3.21, v5.3.22, v5.3.23, v5.3.24, v5.3.25, v5.3.26, v5.3.27, v5.3.28, v5.3.29, v5.3.3, v5.3.30, v5.3.31, v5.3.4, v5.3.5, v5.3.6, v5.3.7, v5.3.8, v5.3.9, v5.4.0, v5.4.1, v5.4.10, v5.4.11, v5.4.12, v5.4.13, v5.4.14, v5.4.15, v5.4.16, v5.4.17, v5.4.18, v5.4.19, v5.4.2, v5.4.20, v5.4.21, v5.4.22, v5.4.23, v5.4.24, v5.4.25, v5.4.26, v5.4.27, v5.4.28, v5.4.29, v5.4.3, v5.4.30, v5.4.31, v5.4.32, v5.4.33, v5.4.34, v5.4.35, v5.4.36, v5.4.4, v5.4.5, v5.4.6, v5.4.7, v5.4.8, v5.4.9, v5.5.0, v5.5.1, v5.5.10, v5.5.11, v5.5.12, v5.5.13, v5.5.14, v5.5.15, v5.5.16, v5.5.17, v5.5.18, v5.5.19, v5.5.2, v5.5.20, v5.5.21, v5.5.22, v5.5.23, v5.5.24, v5.5.25, v5.5.26, v5.5.27, v5.5.28, v5.5.29, v5.5.3, v5.5.30, v5.5.31, v5.5.32, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.38, v5.5.39, v5.5.4, v5.5.40, v5.5.41, v5.5.42, v5.5.5, v5.5.6, v5.5.7, v5.5.8, v5.5.9, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.16, v5.6.17, v5.6.18, v5.6.19, v5.6.2, v5.6.20, v5.6.21, v5.6.22, v5.6.23, v5.6.24, v5.6.25, v5.6.26, v5.6.27, v5.6.28, v5.6.29, v5.6.3, v5.6.30, v5.6.31, v5.6.32, v5.6.33, v5.6.34, v5.6.35, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9] but these conflict with your requirements or minimum-stability.
        - Installation request for pragmarx/google2fa-laravel ^0.2.0 -> satisfiable by pragmarx/google2fa-laravel[v0.2.0].
    
    opened by multiwebinc 6
  • Allow usage of google2FA in stateless APIs

    Allow usage of google2FA in stateless APIs

    For stateless APIs use as follows:

    $authenticator = app(Authenticator::class)->bootApi($request); if ($authenticator->isAuthenticated()) { // otp auth success.... }

    opened by h44z 6
  • New authenticator controller

    New authenticator controller

    The Authenticator class is good, but is not very flexible. This PR splits the Authenticator in 2 classes :

    • AuthenticatorController, used by Middleware to handle login request
    • Authenticator, which does not depend on the current request, and can be used manually.

    Authenticator come with 3 new public functions :

    • IsActivated : true if current user has activated 2fa (2fa should be activated/deactivated on demand)
    • login : to force login when verification has been made manually in the application (old storeAuthPassed function)
    • verifyGoogle2FA($secret, $one_time_password) : to check secret an OTP manually

    canPassWithoutCheckingOTP checks if user has activated 2FA (if not, it lets pass without 2FA)

    opened by asbiin 6
  • Auth::check()

    Auth::check()

    Hello.

    I want to hide the buttons on the navbar until the user has filled in his OTP. Now when the OTP page is visible the user is already logged in and Auth::check() thinks its an auth user.

    How can I check in my blade when the user has filled in his OTP successfully?

    opened by craftercis 0
  • Remove any extra spaces

    Remove any extra spaces

    I use Cleave for UI space formatting so needed a way of removing this.

    const cleaveNumeral = new Cleave(elm {
        numericOnly: true,
        delimiters: [' '],
        blocks: [3, 3],
    });
    

    Is there any other way than this?

    if ($request->has(config('google2fa.otp_input'))) {
        $request->merge([
            config('google2fa.otp_input') => str_replace(' ', '', $request->get(config('google2fa.otp_input'))),
        ]);
    }
    
    opened by howdu 0
  • How to use google2fa in laravel modular

    How to use google2fa in laravel modular

    1. Edit the file "Response.php", located in "vendor\pragmarx\google2fa-laravel\src\Support\Response.php"

    use Illuminate\Support\Facades\Auth;

    private function getView()
    {
    
        /** Get current Guard name */
        $guard = Auth::getDefaultDriver();
    
        if ($guard == 'admin') {
            /** Guard Admin is a Module Admin */
            return view($this->config('view_admin'));
        } 
    
        if ($guard == 'web') {
            /** Guard User is a module User*/
            return view($this->config('view_user'));
        } 
    
    }
    

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////

    1. Edit the file "google2fa.php", located in "config\google2fa.php"

      /*

      • One Time Password View Module User. */ 'view_user' => 'user::auth.2fa_verify',

      /*

      • One Time Password View Module Admin. */ 'view_admin' => 'admin::auth.2fa_verify',

    Summary: When the url starts with the module name, the getView() function redirects to each module's view.

    opened by marcelocuba10 0
  • Not able to use another model / table instead of User (model) / users (table)

    Not able to use another model / table instead of User (model) / users (table)

    Current behaviour

    We can only use User model (the secret is stored under the users table only).

    Context

    Let's say i have a laravel application where i am using User (users table) model only for the admin login and logout functionality. And in the same application i am using the Hookogin (hooklogins table) model as a custom model to autenticate users. How can i use the Hooklogin instead of User ?

    Proposed

    We add a new property under the config file named "otp_model" witch refer to the model associated to the Two Factor, and also the table we are storing the secret.

    Example

    'otp_model' => 'Hooklogin',

    opened by acgtwentyone 0
Releases(v1.3.3)
Owner
Antonio Carlos Ribeiro
Antonio Carlos Ribeiro
A simple two factor authentication for laravel applications

Laravel 2fa A simple two factor authentication for laravel applications. Installation Require via composer Update database Replace authentication trai

Rezkonline 1 Feb 9, 2022
Laravel Two-Factor Authentication

This package allow you to enable two-factor authentication in your Laravel applications very easily, without the need to add middleware or any modification to your routes. It stores tokens in your database in a distinct table, so you don't need to alter your users table. Notify users about their token via mail, SMS or any custom channel.

null 7 Jun 24, 2022
PHP library for Two Factor Authentication (TFA / 2FA)

PHP library for Two Factor Authentication PHP library for two-factor (or multi-factor) authentication using TOTP and QR-codes. Inspired by, based on b

Rob Janssen 896 Dec 30, 2022
Vendor-Agnostic Two-Factor Authentication

Multi-Factor Designed to be a vendor-agnostic implementation of various Two-Factor Authentication solutions. Developed by Paragon Initiative Enterpris

Paragon Initiative Enterprises 139 Dec 21, 2022
Redirects any user which hasn't setup two factor authentication yet to /2fa/

force-two-factor Redirects any user which hasn't setup two factor authentication yet to /2fa/. Use together with the forked two-factor plugin at https

Aiwos 0 Dec 24, 2021
Secure WordPress login with two factor authentication

This plugin allows you to secure your WordPress login with two factor authentication. The users will have to enter a one time password every time they log in.

Volodymyr Kolesnykov 6 Nov 2, 2022
Two-Factor Authentication for all your users out-of-the-box.

Two Factor On-premises Two-Factor Authentication for all your users out of the box. use Illuminate\Support\Facades\Auth; use Laragear\TwoFactor\TwoFac

Laragear 105 Dec 22, 2022
PHP library for Two Factor Authentication (TFA / 2FA)

PHP library for Two Factor Authentication PHP library for two-factor (or multi-factor) authentication using TOTP and QR-codes. Inspired by, based on b

Rob Janssen 896 Dec 30, 2022
PHP class to generate and verify Google Authenticator 2-factor authentication

Google Authenticator PHP class Copyright (c) 2012-2016, http://www.phpgangsta.de Author: Michael Kliewe, @PHPGangsta and contributors Licensed under t

Michael Kliewe 2.1k Jan 2, 2023
API stubs for developing a plugin that provides a 2FA authentication factor in JobRouter®.

Authentication Factor API JobRouter® is a scalable digitisation platform which links processes, data and documents. Starting with JobRouter® 5.2, a se

JobRouter 4 Nov 4, 2021
This repository includes a sample project to illustrate the usage of the JobRouter® Authentication Factor API.

JR 2FA Example Plugin This repository includes a sample project to illustrate the usage of the JobRouter® Authentication Factor API. It can be used as

JobRouter 4 Sep 10, 2021
Multi-factor Authentication using a Public PGP key for web based applications

PGPmfa() a PHP Class for PGP Multi-factor Authentication using a Public PGP key for web based applications Multi-factor Authentication with PGP Second

null 2 Nov 27, 2022
A One Time Password Authentication package, compatible with Google Authenticator.

Google2FA Google Two-Factor Authentication for PHP Google2FA is a PHP implementation of the Google Two-Factor Authentication Module, supporting the HM

Antonio Carlos Ribeiro 1.6k Dec 30, 2022
It's a Laravel 8 authentication markdown that will help you to understand and grasp all the underlying functionality for Session and API Authentication

About Auth Starter It's a Laravel 8 authentication markdown that will help you to understand and grasp all the underlying functionality for Session an

Sami Alateya 10 Aug 3, 2022
Social OAuth Authentication for Laravel 5. drivers: facebook, github, google, linkedin, weibo, qq, wechat and douban

Social OAuth Authentication for Laravel 5. drivers: facebook, github, google, linkedin, weibo, qq, wechat and douban

安正超 330 Nov 14, 2022
phpCAS is an authentication library that allows PHP applications to easily authenticate users via a Central Authentication Service (CAS) server.

phpCAS is an authentication library that allows PHP applications to easily authenticate users via a Central Authentication Service (CAS) server.

Apereo Foundation 780 Dec 24, 2022
Simple PHP Google Authentication Template

php-google-auth A php google authentication page project View Demo · Report Problems About The Project This is a small and easy project that I made to

Antonio 4 Nov 21, 2021
Enables Google Authentication for YOURLS

google-auth-yourls Enables Google Authentication for YOURLS Proper documentation coming soon. For now, here is the very rough documentation: Download

8th Wall 14 Nov 20, 2021