Skip to content

Basic integration for Passage - passwordless authentication powered by passkeys

License

Notifications You must be signed in to change notification settings

michalsn/codeigniter-passage

Repository files navigation

CodeIgniter Passage

Basic integration for Passage - passwordless authentication powered by passkeys.

PHPUnit PHPStan Deptrac

PHP CodeIgniter

Installation

Composer

composer require michalsn/codeigniter-passage

Manually

In the example below we will assume, that files from this project will be located in app/ThirdParty/passage directory.

Download this project and then enable it by editing the app/Config/Autoload.php file and adding the Michalsn\CodeIgniterPassage namespace to the $psr4 array, like in the below example:

<?php

namespace Config;

use CodeIgniter\Config\AutoloadConfig;

class Autoload extends AutoloadConfig
{
    // ...
    public $psr4 = [
        APP_NAMESPACE => APPPATH, // For custom app namespace
        'Config'      => APPPATH . 'Config',
        'Michalsn\CodeIgniterPassage' => APPPATH . 'ThirdParty/passage/src',
    ];

    // ...

Also add the required helper to the same file under $files array:

    // ...
    public $files = [
        APPPATH . 'ThirdParty/passage/src/Common.php',
    ];

    // ...

Configuration

  • Follow the quickstart
  • Create an app in the Passage Console
    • php spark passage:publish - to copy config file to the App namespace
    • Fill the config variables or use .env file
  • Add a Passage Element to your frontend
  • You can use passageStateless filter as your middleware implementation

Helper functions

  • passageAppId() will return your AppId
  • passageId() will return your user id (if you're using passageStateless filter), you can also set this yourself via: passageId($userId)

Example

<?php

namespace App\Controllers;

use Michalsn\CodeIgniterPassage\Exceptions\PassageException;

class Home extends BaseController
{
    public function index()
    {
        try {
            $passage = service('passage');
            $userId = $passage->authenticateRequest($this->request);
            $data = ['user' => $passage->user->get($userId)];
        } catch (PassageException $e) {
            return $this->response->setHeader(401)->setBody('401 Unauthorized');
        }

        return view('home/index', $data);
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy