1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* Auth |
4
|
|
|
* |
5
|
|
|
* 認証処理を実現するためのクラス |
6
|
|
|
* |
7
|
|
|
* @package risoluto |
8
|
|
|
* @author Risoluto Developers |
9
|
|
|
* @license http://opensource.org/licenses/bsd-license.php new BSD license |
10
|
|
|
* @copyright (C) 2008-2015 Risoluto Developers / All Rights Reserved. |
11
|
|
|
*/ |
12
|
|
|
|
13
|
|
|
//------------------------------------------------------// |
14
|
|
|
// 名前空間の定義 |
15
|
|
|
//------------------------------------------------------// |
16
|
|
|
namespace RisolutoApps\Admin; |
17
|
|
|
|
18
|
|
|
//------------------------------------------------------// |
19
|
|
|
// クラス定義 |
20
|
|
|
//------------------------------------------------------// |
21
|
|
|
class Auth extends \Risoluto\RisolutoControllerBase implements \Risoluto\RisolutoControllerInterface |
22
|
|
|
{ |
23
|
|
|
/** |
24
|
|
|
* play() |
25
|
|
|
* |
26
|
|
|
* 主処理を行う |
27
|
|
|
* |
28
|
|
|
* @access public |
29
|
|
|
* |
30
|
|
|
* @param void |
31
|
|
|
* |
32
|
|
|
* @return void なし |
33
|
|
|
*/ |
34
|
|
|
public function play() |
35
|
|
|
{ |
36
|
|
|
// セッションをスタート |
37
|
|
|
$sess = new \Risoluto\Session(); |
38
|
|
|
$sess->start(); |
39
|
|
|
|
40
|
|
|
if ($sess->isThere( 'Auth' )) { |
41
|
|
|
// 認証情報がある場合は、メニュー画面へ遷移する |
42
|
|
|
\Risoluto\Url::redirectTo( 'Admin_Menu' ); |
43
|
|
|
exit; |
44
|
|
|
} elseif (isset( $_POST[ 'userid' ] ) and isset( $_POST[ 'password' ] )) { |
45
|
|
|
// 入力値を処理 |
46
|
|
|
$option = [ |
47
|
|
|
'userid' => htmlentities( $_POST[ 'userid' ], ENT_QUOTES, 'UTF-8' ), |
48
|
|
|
'password' => htmlentities( $_POST[ 'password' ], ENT_QUOTES, 'UTF-8' ) |
49
|
|
|
]; |
50
|
|
|
|
51
|
|
|
// POSTでユーザIDとパスワードが渡ってきた場合は認証処理を行う |
52
|
|
|
$auth_result = \Risoluto\Auth::callProviderMethod( 'doAuth', $option ); |
53
|
|
|
if ($auth_result) { |
54
|
|
|
// 認証に成功した場合は詳細情報を取得 |
55
|
|
|
$detail = \Risoluto\Auth::callProviderMethod( 'showUser', $option ); |
56
|
|
|
$detail[ 0 ][ 'password' ] = '********'; |
57
|
|
|
$group = \Risoluto\Auth::callProviderMethod( 'showGroupByNo', [ 'no' => $detail[ 0 ][ 'groupno' ] ] ); |
58
|
|
|
$detail[ 0 ][ 'group' ] = $group[ 0 ]; |
59
|
|
|
|
60
|
|
|
// 認証情報をセッションに追加してメニュー画面へ遷移する |
61
|
|
|
$sess->store( 'Auth', $detail[ 0 ] ); |
62
|
|
|
$sess->store( 'csrf_token', $sess->genRand() ); |
63
|
|
|
\Risoluto\Url::redirectTo( 'Admin_Menu' ); |
64
|
|
|
exit; |
65
|
|
|
} else { |
66
|
|
|
// 認証に失敗した場合はエラー情報をセッションに追加してログイン画面に戻る |
67
|
|
|
$sess->store( 'AuthError', 'auth_failure' ); |
68
|
|
|
\Risoluto\Url::redirectTo( 'Admin_Login' ); |
69
|
|
|
exit; |
70
|
|
|
} |
71
|
|
|
} else { |
72
|
|
|
// それ以外の時はエラー情報をセッションに追加してログイン画面に戻る |
73
|
|
|
$sess->store( 'AuthError', 'invalid_access' ); |
74
|
|
|
\Risoluto\Url::redirectTo( 'Admin_Login' ); |
75
|
|
|
exit; |
76
|
|
|
} |
77
|
|
|
} |
78
|
|
|
} |