[FuelPHP]完成?:独自オリジナル認証ドライバをsimpleauthを参考に実装する3
前回の続き
ドライバの実装が終わったので、呼び出し側のコード
<?php class Controller_Base extends Controller_Template { public $template = 'common/template'; public function before() { parent::before(); $this->current_user = Auth::check() ? Model_User::find_by_username(Auth::get_screen_name()) : null; View::set_global('current_user', $this->current_user); } }
これはoil generate admin コマンドで自動生成されるベースファイルをそのまま流用
テンプレートパスは’common/template’にしている
ログインを管理するsign.phpを作成
<?php class Controller_Sign extends Controller_Base { public function before() { parent::before(); } public function action_login() { if(Auth::check()) Response::redirect($this->get_groups_redirect_path()); $val = Validation::forge(); if (Input::method() == 'POST') { $val->add('email', 'Email or Username') ->add_rule('required'); $val->add('password', 'Password') ->add_rule('required'); if ($val->run()) { if (Auth::instance()->login(Input::post('email'), Input::post('password'))) { $current_user = Model_User::find_by_username(Auth::get_screen_name()); Session::set_flash('success', e('Welcome, '.$current_user->username)); Response::redirect($this->get_groups_redirect_path()); } // login failure Session::set_flash('error', e('login error. please try agein')); } } $this->template->title = 'Login'; $this->template->content = View::forge('admin/login')->set('val', $val, false); } public function action_logout() { if(!Auth::logout()) { Session::set_flash('info', e('logout success')); Response::redirect('sign/login'); } } public function get_groups_redirect_path() { $groups = Auth::instance()->get_groups(); $group = $groups[0][1]; $group == Util_Const::GROUP_ADMINISTRATOR_KEY and $redirect_path = 'admin/index'; $group == Util_Const::GROUP_USER_KEY and $redirect_path = 'user/index'; return empty($redirect_path) ? '':$redirect_path; } }
ログイン認証を通った場合のリダイレクト先についてはこちらの都合上、groupの権限でswitchしている。
groupのkey値をconstに指定。
<?php class Util_Const { /* ======= db ======= */ const DB_DLT_OFF = 0; const DB_DLT_ON = 1; /* ======= group ======= */ const GROUP_USER_KEY = 1; const GROUP_ADMINISTRATOR_KEY = 100; }
ここまでで呼び出し完了のはず。今回はログインのみのためtb_usersテーブルにアカウントを作成しないと動かない。アカウント作成用のメソッドをauth/login/baseauth.phpに作成。
public function create_user($username, $password, $email, $group = 1,$auth_type = 1,$dlt_flg = 0) { $password = trim($password); $email = filter_var(trim($email), FILTER_VALIDATE_EMAIL); if (empty($username) or empty($password) or empty($email)) throw new Exception('Username, password or email address is not given, or email address is invalid'); $user = new Model_User(); $user->username = $username; $user->password = $this->hash_password((string) $password); $user->email = $email; $user->group = $group; $user->auth_type = $auth_type; $user->last_login = ''; $user->salt = ''; $user->dlt_flg = $dlt_flg; try{ $user->save(); }catch(Exception $e){ throw new Exception('create user registry error'); } return 1; }
それでは呼び出してadminアカウントを作成。ここではsignup画面は省略してoil consoleから作成。
$ oil console >>> Auth::create_user('admin', 'password', 'test@test.co.jp', 100); 1 >>> exit
正直戻り値が成功で「1」っていうのは意味が分からないが、simpleauthに便乗している。trueにしたいところ。phpだからしかたないのかな。これでログインできれば成功かな。
今回はviewなどのコードをアップしていないので、分かりにくいところがあるので、一応githubにsignup画面込みでアップする予定。
その他おすすめの備忘録
- [FuelPHP]独自オリジナル認証ドライバをsimpleauthを参考に実装する2
- [FuelPHP]独自オリジナル認証ドライバをsimpleauthを参考に実装する1
- [FuelPHP]サンプルデモアプリ「BaseDemoプロジェクト」アップ ※オリジナル認証ドライバ込
- [FuelPHP]DB::queryの戻り値をModel型で返す方法
- [FuelPHP]opauthライブラリでFacebook認証を速攻実装する
- [FuelPHP]opauthライブラリでTwitter認証を速攻実装する
- [FuelPHP]simpleauthのsaltの可変指定について
- [Java]JavaでC#のFuncデリゲートを再現
- [FuelPHP]opauthライブラリfacebook認証のアクセストークン有効期限メモ
- [jQuery]関数型・メソッド型でプラグインを実装する方法
coffee-break
Don't write code that useless.
1日5杯はコーヒー、カフェオレ飲みます。狭心症のため安静にします☆松本 雄貴
Kotlinでサービスリリース目指す!
iOSでチャットアプリ作成中。自然言語解析LSIを習得中
Mac / Android・iOS / Rails / Oracle
2017年 Lpic L2取得
2012年 Android技術者資格取得
2010年 OracleMasterGold10g取得
2008年 CCNAQiitaもたまに投稿
https://qiita.com/y-matsumoto東京近郊で常駐開発探してる方はこちらよりご連絡ください
SES企業でパートナー会社を探している企業様はこちらよりご連絡ください
スプリットカメラ iOS / Android
音声認識で聞いた日付から曜日当てアプリ Android
ソーシャルタイマー Android
カテゴリー
- ActiveRecord (2)
- Android (52)
- AndroidStudio (10)
- Ansible (1)
- AWS (1)
- Bash (18)
- Blog (7)
- BootStrap (1)
- CentOS (16)
- Chef (1)
- css (2)
- Eclipse (5)
- error (1)
- Facebook (2)
- Firebase (1)
- FuelPHP (16)
- Git (22)
- GitHub (3)
- Gradle (2)
- GraphAPI (1)
- Grunt (1)
- heroku (2)
- illustrator (1)
- iOS (17)
- Java (4)
- Jenkins (1)
- jQuery (3)
- Kotlin (2)
- Mac (22)
- nginx (1)
- Node.js (3)
- peco (1)
- php (5)
- Python (1)
- Rails (16)
- Ruby (11)
- shell (1)
- SNS (1)
- Swift (2)
- tmux (2)
- Vagrant (6)
- Vim (6)
- windows (2)
- WordPress (3)
- zsh (4)
- フリーランス (1)
- ライブラリ (1)
- 勉強会 (2)
- 宣伝 (1)
- 未分類 (2)
最近の投稿
- [MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」
- [iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法
- [iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について
- [iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];
- [iOS]2017年9月リリースのiOS11で開発者が対応するべきこと
- 今人気の現金化サービスCASH(キャッシュ)を使ったレビュー
- [Pandoc][Mac]pandocでmarkdownからwordファイル作成
- [Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現
- [Android]起動しているActivityを取得するadb shell コマンド
- [Android][Kotlin]kotlin学習で参考になるサイト一覧
2023年10月 月 火 水 木 金 土 日 « 5月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 アーカイブ
- 2018年5月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年2月
- 2017年1月
- 2016年12月
- 2016年7月
- 2016年6月
- 2016年1月
- 2015年12月
- 2015年11月
- 2015年10月
- 2015年9月
- 2015年8月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2015年3月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年11月
- 2014年6月
- 2014年5月
- 2014年4月
- 2014年3月
- 2014年2月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年10月
- 2012年5月
- 2010年6月
エントリ