EzAuth でユーザー認証の仕組み #Codeigniter
なんだかイメージですが何重もの構造になっているような気がして頭がおかしくなって死ぬ。という印象があって、後で見たときに絶対「どんな仕組みになっているのかさっぱりわからねぇ」と思う自信100%なので書き残しておく。
EzAuth の認証(というより、ロール)設定は以下の組み合わせによって行われています。
1. ユーザーに直接記録される情報。

テーブル「ez_access_keys」に記録されています。user_id は、ez_users の id と紐付けられており、program と access がアクセスが許可されるエリアになります。
2. プログラムに設定される情報。

各コントローラーのインスタンスに protected_pages というクラス変数により設定されます。配列になっており、それぞれ左辺の値はクラスメソッドを指し、右辺の値はアクセスが許可されるエリア情報です。
ez_access_keys の program に設定されている値は、コード上では $this->ezauth->program に該当し、ez_access_keys の access に設定されている値は、コード上では protected_pages の右辺に該当する、という事です。
program は「家」 access が「鍵」だとすると、proteced_pages のそれぞれ左辺の値は「部屋」
家(default)に対する鍵(user)で開ける事ができる部屋は、 client部屋と changepw部屋。admin部屋を開ける為には admin という鍵が必要になります。
その鍵を持たせるかどうかを、データベースで設定させる訳です。
一方で、ユーザー「admin」はすべての部屋を開けることのできるオールマイティキーを持っているので、client部屋およびchangepw部屋については自由に出入りができる仕組みです。
なお、protected_pages で指定されていない部屋については単純に「鍵がかかっていない」という認識になりますので、認証不要のページは宣言も不要です。