Codeigniter4に認証機能を追加する

CodeIgniter

Codeigniterには、セッションのライブラリがありますが、バージョン4でも認証ライブラリは標準では提供されませんが、Composerにより認証機能を簡単に追加する事ができます。

導入するライブラリ

導入する認証機能は、myth-auth というライブラリになり、Githubで公開されているオープンソースの認証ライブラリになります。

lonnieezell/myth-auth
One-stop Auth package for CodeIgniter 4. Contribute to lonnieezell/myth-auth development by creating an account on GitHub.
補足

myth-auth ライブラリのUIはBootstrap4を使用しています。

この、myth-auth は予め認証に必要なデータベースの設計が固定されておりますが、これにアクセスする為のクラスやヘルパー関数が充実しており、アカウント登録、ログイン、パスワード再設定等のインターフェースも提供されます。

インストール手順

補足

Codeigniter4 のインストールは既に完了し、データベースの接続設定まで完了している事を前提に説明しています。

Codeigniter4 のインストールが未だの場合は以下を参考にインストール準備を整えた上でお進みください。

プロジェクトディレクトリからComposerコマンドで、myth-auth をインストールします。

[yourname@xxx-xxx-xxx-xxx]$ composer require "myth/auth" "1.0-beta.2"

以下、コマンド実行ログになります。

[yourname@xxx-xxx-xxx-xxx]$ composer require "myth/auth" "1.0-beta.2"
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing myth/auth (1.0-beta.2): Downloading (100%)
Writing lock file
Generating autoload files
Generated autoload files containing 625 classes
[yourname@xxx-xxx-xxx-xxx]$ 

次にデータベースのスキーマーを展開します。

[yourname@xxx-xxx-xxx-xxx]$ php spark migrate -all

以下、コマンド実行ログになります。

[yourname@xxx-xxx-xxx-xxx]$ php spark migrate -all

CodeIgniter CLI Tool - Version 4.0.0-rc.3 - Server-Time: 2019-12-13 02:40:56am

Running all new migrations...
        Running: (Myth\Auth) 2017-11-20-223112_Myth\Auth\Database\Migrations\CreateAuthTables
Done
[yourname@xxx-xxx-xxx-xxx]$ 

以上でインストール完了です。

動作確認

ブラウザから以下のURLにアクセスして確認します。

http://ホスト名/login

認証ライブラリへのアクセス方法

クラスからのアクセス

モデルやコントローラーなどのクラスからは以下のように認証ライブラリへアクセスする事ができます。

$authenticate = Config\Services::authentication();

ヘルパー関数

ビューファイルやヘルパーから以下の関数を利用できます。

関数名説明引数戻り値
logged_in()ユーザーがログインしているか確認します。無しtrue or false
user()ログインしているユーザーのインスタンスを返します。無しインスタンス or null
user_id()ログインしているユーザのIDを返します。無しID or null
in_groups()ユーザーが、グループの少なくとも1つに属していることを確認します。ID又は名前(複数の場合は配列)true or false
has_permission()ユーザーが、権限を所有しているか確認します。ID又は名前true or false

コメント

タイトルとURLをコピーしました