cfmgrv4 init...2
This commit is contained in:
parent
7aae21010a
commit
f4fa080107
@ -100,21 +100,16 @@ class UserController extends FrontController
|
||||
public function login(): RedirectResponse|string
|
||||
{
|
||||
$this->init('login');
|
||||
//Transaction Start
|
||||
$this->getModel()->transStart();
|
||||
try {
|
||||
$this->create_validate($this->action, $this->fields);
|
||||
$this->formDatas = $this->getFormDatas();
|
||||
$auth = new LocalAuth();
|
||||
$auth->login($auth->checkUser($this->formDatas));
|
||||
$this->message = "로그인 성공";
|
||||
$this->getModel()->transCommit();
|
||||
log_message("notice", __FUNCTION__ . $this->message);
|
||||
// 이전 URL로 리다이렉트
|
||||
return redirect()->to($this->popPreviousUrl())->with('message', $this->message);
|
||||
} catch (\Exception $e) {
|
||||
//Transaction Rollback
|
||||
$this->getModel()->transRollback();
|
||||
log_message("error", $e->getMessage());
|
||||
return redirect()->back()->withInput()->with('error', __FUNCTION__ . " 실패하였습니다.\n" . $e->getMessage());
|
||||
}
|
||||
@ -122,8 +117,6 @@ class UserController extends FrontController
|
||||
public function google_login(): RedirectResponse|string
|
||||
{
|
||||
$this->init('login');
|
||||
//Transaction Start
|
||||
$this->getModel()->transStart();
|
||||
try {
|
||||
$access_code = $this->request->getVar('code');
|
||||
if (!$access_code) {
|
||||
@ -132,13 +125,10 @@ class UserController extends FrontController
|
||||
$auth = new GoogleAuth();
|
||||
$auth->login($auth->checkUser($access_code));
|
||||
$this->message = "로그인 성공";
|
||||
$this->getModel()->transCommit();
|
||||
log_message("notice", __FUNCTION__ . $this->message);
|
||||
// 이전 URL로 리다이렉트
|
||||
return redirect()->to($this->popPreviousUrl())->with('message', $this->message);
|
||||
} catch (\Exception $e) {
|
||||
//Transaction Rollback
|
||||
$this->getModel()->transRollback();
|
||||
log_message("error", $e->getMessage());
|
||||
return redirect()->back()->withInput()->with('error', __FUNCTION__ . " 실패하였습니다.\n" . $e->getMessage());
|
||||
}
|
||||
|
||||
@ -14,6 +14,6 @@ return [
|
||||
],
|
||||
"STATUS" => [
|
||||
"use" => "사용",
|
||||
"unuse" => "사용않함",
|
||||
"unuse" => "승인대기",
|
||||
],
|
||||
];
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
namespace App\Libraries\MyAuth;
|
||||
|
||||
use App\Entities\UserEntity;
|
||||
use App\Libraries\MySocket\GoogleSocket\CURL;
|
||||
// use App\Libraries\MySocket\GoogleSocket\CURL;
|
||||
use App\Libraries\MySocket\GoogleSocket\API as GoogleSocket;
|
||||
use App\Models\UserModel;
|
||||
use CodeIgniter\Exceptions\PageNotFoundException;
|
||||
@ -23,7 +23,6 @@ class GoogleAuth extends MyAuth
|
||||
$this->_mySocket = new GoogleSocket();
|
||||
}
|
||||
$this->_mySocket->setToken($this->_access_code);
|
||||
$this->_mySocket->setUserSNSEntity();
|
||||
return $this->_mySocket;
|
||||
}
|
||||
|
||||
@ -54,7 +53,7 @@ class GoogleAuth extends MyAuth
|
||||
throw new PageNotFoundException("구글 로그인 중 오류가 발생했습니다. 다시 시도해 주세요.");
|
||||
} catch (\Exception $e) {
|
||||
log_message('error', $e->getMessage());
|
||||
throw new PageNotFoundException("관리자에게 문의하시기 바랍니다.<BR>{$e->getMessage()}");
|
||||
throw new PageNotFoundException("관리자에게 문의하시기 바랍니다.\n{$e->getMessage()}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,13 +4,15 @@ namespace App\Libraries\MySocket\GoogleSocket;
|
||||
|
||||
use App\Entities\UserSNSEntity;
|
||||
use CodeIgniter\Exceptions\ConfigException;
|
||||
use CodeIgniter\Exceptions\PageNotFoundException;
|
||||
use Google\Client;
|
||||
use Google\Service\Oauth2;
|
||||
|
||||
class API extends GoogleSocket
|
||||
{
|
||||
public function __construct() {}
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function getClient(): Client
|
||||
{
|
||||
@ -70,7 +72,7 @@ class API extends GoogleSocket
|
||||
if (isset($tokenInfo['error'])) {
|
||||
throw new ConfigException($tokenInfo['error']);
|
||||
}
|
||||
log_message("debug", var_export($tokenInfo, true));
|
||||
// log_message("debug", var_export($tokenInfo, true));
|
||||
$this->_access_token = $tokenInfo[$this->_token_name];
|
||||
// Google Service에 접근하기 위해 Access Token 설정
|
||||
$this->getClient()->setAccessToken([
|
||||
@ -90,26 +92,9 @@ class API extends GoogleSocket
|
||||
$this->getClient()->setAccessToken($this->getToken());
|
||||
$oauth = new Oauth2($this->getClient());
|
||||
$userInfo = $oauth->userinfo->get();
|
||||
log_message("debug", var_export($userInfo, true));
|
||||
$detail = var_export($userInfo, true);
|
||||
// log_message("debug", $detail);
|
||||
// 사용자정보 설정하기
|
||||
$this->getModel()->where($this->getModel()::SITE, $this->getSite());
|
||||
$entity = $this->getModel()->getEntityByID($userInfo['id']);
|
||||
if ($entity === null) {
|
||||
//없다면 새로 등록
|
||||
$formDatas = [
|
||||
'site' => $this->getSite(),
|
||||
'id' => $userInfo->id,
|
||||
'name' => $userInfo->name,
|
||||
'email' => $userInfo->email,
|
||||
'detail' => var_export($userInfo, true),
|
||||
'status' => 'standby',
|
||||
];
|
||||
$entity = $this->getModel()->create($formDatas);
|
||||
}
|
||||
//상태가 use(승인완료)가 아니라면
|
||||
if ($entity->status !== DEFAULTS['STATUS']) {
|
||||
throw new PageNotFoundException("{$entity->getSite()}의{$entity->getEmail()}:{$entity->getTitle()}님은 {$entity->status}입니다 ");
|
||||
}
|
||||
return $entity;
|
||||
return $this->setUserSNSEntity($userInfo->id, $userInfo->name, $userInfo->email, $detail);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,8 +4,6 @@ namespace App\Libraries\MySocket\GoogleSocket;
|
||||
|
||||
use App\Entities\UserSNSEntity;
|
||||
use App\Libraries\MySocket\MySocket as Client;
|
||||
use App\Models\UserSNSModel;
|
||||
use CodeIgniter\Exceptions\PageNotFoundException;
|
||||
|
||||
class CURL extends GoogleSocket
|
||||
{
|
||||
@ -156,7 +154,8 @@ class CURL extends GoogleSocket
|
||||
throw new \Exception($message);
|
||||
}
|
||||
$userInfo = json_decode($response->getBody(), true);
|
||||
log_message("debug", var_export($userInfo, true));
|
||||
$detail = var_export($userInfo, true);
|
||||
// log_message("debug", $detail);
|
||||
if (isset($userInfo['error']) || !isset($userInfo['email']) || empty($userInfo['email'])) {
|
||||
$message = sprintf(
|
||||
"Google: User 정보가 없습니다.\n--userInfo--\n%s\n",
|
||||
@ -167,24 +166,6 @@ class CURL extends GoogleSocket
|
||||
throw new \Exception($message);
|
||||
}
|
||||
// 사용자정보 설정하기
|
||||
$this->getModel()->where(UserSNSModel::SITE, $this->getSite());
|
||||
$entity = $this->getModel()->getEntityByID($userInfo['id']);
|
||||
if ($entity === null) {
|
||||
//없다면 새로 등록
|
||||
$formDatas = [
|
||||
'site' => $this->getSite(),
|
||||
'id' => $userInfo['id'],
|
||||
'name' => $userInfo['name'],
|
||||
'email' => $userInfo['email'],
|
||||
'detail' => var_export($userInfo, true),
|
||||
'status' => 'standby',
|
||||
];
|
||||
$entity = $this->getModel()->create($formDatas);
|
||||
}
|
||||
//상태가 use(승인완료)가 아니라면
|
||||
if ($entity->status !== DEFAULTS['STATUS']) {
|
||||
throw new PageNotFoundException("{$entity->getSite()}의{$entity->getEmail()}:{$entity->getTitle()}님은 {$entity->status}입니다 ");
|
||||
}
|
||||
return $entity;
|
||||
return $this->setUserSNSEntity($userInfo["id"], $userInfo["name"], $userInfo["email"], $detail);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,10 +2,11 @@
|
||||
|
||||
namespace App\Libraries\MySocket\GoogleSocket;
|
||||
|
||||
use App\Entities\UserSNSEntity;
|
||||
use App\Libraries\MySocket\MySocket;
|
||||
use App\Models\UserSNSModel;
|
||||
use Config\Services;
|
||||
use CodeIgniter\Exceptions\PageNotFoundException;
|
||||
use App\Models\UserSNSModel;
|
||||
use App\Libraries\MySocket\MySocket;
|
||||
use App\Entities\UserSNSEntity;
|
||||
|
||||
abstract class GoogleSocket extends MySocket
|
||||
{
|
||||
@ -38,4 +39,36 @@ abstract class GoogleSocket extends MySocket
|
||||
}
|
||||
return $this->_model;
|
||||
}
|
||||
final protected function setUserSNSEntity(string $id, string $name, string $email, string $detail): UserSNSEntity
|
||||
{
|
||||
$this->getModel()->where(UserSNSModel::SITE, $this->getSite());
|
||||
$entity = $this->getModel()->getEntityByID($id);
|
||||
if ($entity === null) {
|
||||
//Transaction Start
|
||||
$this->getModel()->transStart();
|
||||
try {
|
||||
//없다면 새로 등록
|
||||
$formDatas = [
|
||||
'site' => $this->getSite(),
|
||||
'id' => $id,
|
||||
'name' => $name,
|
||||
'email' => $email,
|
||||
'detail' => $detail,
|
||||
'status' => 'unuse',
|
||||
];
|
||||
$entity = $this->getModel()->create($formDatas);
|
||||
$this->getModel()->transCommit();
|
||||
} catch (\Exception $e) {
|
||||
//Transaction Rollback
|
||||
$this->getModel()->transRollback();
|
||||
log_message("error", $e->getMessage());
|
||||
throw new \Exception(__FUNCTION__ . " 실패하였습니다.\n" . $e->getMessage());
|
||||
}
|
||||
}
|
||||
//상태가 use(승인완료)가 아니라면
|
||||
if ($entity->status !== DEFAULTS['STATUS']) {
|
||||
throw new PageNotFoundException("{$entity->getSite()}의{$entity->getEmail()}:{$entity->getTitle()}님은 {$entity->status}입니다 ");
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@ class UserSNSModel extends CommonModel
|
||||
{
|
||||
switch ($field) {
|
||||
case "id":
|
||||
$rule = "required|trim|min_length[4]|max_length[20]|is_unique[{$this->table}.{$field}]";
|
||||
$rule = "required|trim|min_length[4]|is_unique[{$this->table}.{$field}]";
|
||||
break;
|
||||
case $this->getTitleField():
|
||||
$rule = "required|trim|string";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user