add API: login & add api template
This commit is contained in:
parent
1e2cfd59b6
commit
ac1a9eb205
@ -1,13 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
require_once __DIR__.'/../../config.php';
|
require_once __DIR__.'/../../config.php';
|
||||||
require UELEARNING_ROOT.'/vendor/autoload.php';
|
require UELEARNING_ROOT.'/vendor/autoload.php';
|
||||||
|
require_once __DIR__.'/src/ApiTemplates.php';
|
||||||
require_once UELEARNING_LIB_ROOT.'/User/User.php';
|
require_once UELEARNING_LIB_ROOT.'/User/User.php';
|
||||||
|
require_once UELEARNING_LIB_ROOT.'/User/UserSession.php';
|
||||||
use UElearning\User;
|
use UElearning\User;
|
||||||
use UElearning\Exception;
|
use UElearning\Exception;
|
||||||
|
|
||||||
$app = new \Slim\Slim(array(
|
$app = new \Slim\Slim(array(
|
||||||
'templates.path' => './' // 設定Path
|
'templates.path' => './' // 設定Path
|
||||||
));
|
));
|
||||||
|
$app_template = new ApiTemplates($app);
|
||||||
|
|
||||||
// 設定成將使用JSON格式輸出
|
// 設定成將使用JSON格式輸出
|
||||||
function APIrequest() {
|
function APIrequest() {
|
||||||
@ -16,13 +19,142 @@ function APIrequest() {
|
|||||||
$app->add(new \JsonApiMiddleware());
|
$app->add(new \JsonApiMiddleware());
|
||||||
}
|
}
|
||||||
|
|
||||||
function APIdisableFunc($app) {
|
|
||||||
$app->render(405,array(
|
/*
|
||||||
'error' => true,
|
* 測試用 Say hello!~~~
|
||||||
'message' => 'This function is not enable.',
|
* GET http://localhost/api/v2/hello/{string}
|
||||||
'message_cht' => '此功能尚未開放'
|
*/
|
||||||
|
$app->get('/hello/:name', 'APIrequest', function ($name) use ($app) {
|
||||||
|
$app->render(200,array(
|
||||||
|
'error' => false,
|
||||||
|
'message' => 'Hello, $name'
|
||||||
));
|
));
|
||||||
}
|
});
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
$app->group('/users', 'APIrequest', function () use ($app) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 建立帳號
|
||||||
|
* POST http://localhost/api/v2/users
|
||||||
|
*/
|
||||||
|
$app->post('/', function () use ($app) {
|
||||||
|
$app_template->noEnableFunc();
|
||||||
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 取得帳號資訊
|
||||||
|
* GET http://localhost/api/v2/users/{帳號ID}
|
||||||
|
*/
|
||||||
|
$app->get('/:user_id', function ($user_id) use ($app) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
$user = new User\User($user_id);
|
||||||
|
|
||||||
|
$app->render(200,array(
|
||||||
|
'user_id' => $user_id,
|
||||||
|
'nickname' => $user->getNickName(),
|
||||||
|
'class_name' => $user->getClassName(),
|
||||||
|
'error' => false
|
||||||
|
));
|
||||||
|
}
|
||||||
|
catch (Exception\UserNoFoundException $e) {
|
||||||
|
$app->render(404,array(
|
||||||
|
'user_id' => $user_id,
|
||||||
|
'error' => true,
|
||||||
|
'message' => '\''.$user_id.'\' is not found',
|
||||||
|
'message_cht' => '找不到\''.$user_id.'\'使用者'
|
||||||
|
));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 登入帳號
|
||||||
|
* POST http://localhost/api/v2/users/{帳號ID}/login
|
||||||
|
*/
|
||||||
|
$app->post('/:user_id/login/', function ($user_id) use ($app) {
|
||||||
|
|
||||||
|
// 取得帶來的參數
|
||||||
|
$cType = $app->request->getContentType();
|
||||||
|
if($cType == 'application/x-www-form-urlencoded') {
|
||||||
|
$password = $_POST['password'];
|
||||||
|
$browser = $_POST['browser'];
|
||||||
|
}
|
||||||
|
else if($cType == 'application/json') {
|
||||||
|
$postData = $app->request->getBody();
|
||||||
|
$postDataArray = json_decode($postData);
|
||||||
|
|
||||||
|
$password = $postDataArray['password'];
|
||||||
|
$browser = $postDataArray['browser'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$app_template->inputContentTypeErr();
|
||||||
|
}
|
||||||
|
if(!isset($browser)) { $browser = 'api'; }
|
||||||
|
|
||||||
|
// 進行登入
|
||||||
|
try {
|
||||||
|
$session = new User\UserSession();
|
||||||
|
$loginToken = $session->login($user_id, $password, $browser);
|
||||||
|
|
||||||
|
$app->render(201,array(
|
||||||
|
'user_id' => $user_id,
|
||||||
|
'token' => $loginToken,
|
||||||
|
'browser' => $browser,
|
||||||
|
'error' => false,
|
||||||
|
'message' => '\''.$user_id.'\' is logined',
|
||||||
|
'message_cht' => '\''.$user_id.'\'使用者已登入'
|
||||||
|
));
|
||||||
|
}
|
||||||
|
catch (Exception\UserNoFoundException $e) {
|
||||||
|
$app->render(404,array(
|
||||||
|
'user_id' => $user_id,
|
||||||
|
'browser' => $browser,
|
||||||
|
'error' => true,
|
||||||
|
'message' => '\''.$user_id.'\' is not found',
|
||||||
|
'message_cht' => '找不到\''.$user_id.'\'使用者'
|
||||||
|
));
|
||||||
|
}
|
||||||
|
catch (Exception\UserPasswordErrException $e) {
|
||||||
|
$app->render(401,array(
|
||||||
|
'user_id' => $user_id,
|
||||||
|
'password' => $password,
|
||||||
|
'browser' => $browser,
|
||||||
|
'error' => true,
|
||||||
|
'message' => 'Input \''.$user_id.'\' password is wrong',
|
||||||
|
'message_cht' => '\''.$user_id.'\'使用者密碼錯誤',
|
||||||
|
'substatus' => 201
|
||||||
|
));
|
||||||
|
}
|
||||||
|
catch (Exception\UserNoActivatedException $e) {
|
||||||
|
$app->render(401,array(
|
||||||
|
'user_id' => $user_id,
|
||||||
|
'browser' => $browser,
|
||||||
|
'error' => true,
|
||||||
|
'message' => '\''.$user_id.'\' is not enable',
|
||||||
|
'message_cht' => '\''.$user_id.'\'帳號目前未啟用',
|
||||||
|
'substatus' => 202
|
||||||
|
));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$app->group('/tokens', 'APIrequest', function () use ($app, $app_template) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 取得已登入的帳號資訊
|
||||||
|
* GET http://localhost/api/v2/tokens/{登入Token}
|
||||||
|
*/
|
||||||
|
$app->get('/:token', function ($token) use ($app, $app_template) {
|
||||||
|
//echo "Login Token: $token";
|
||||||
|
// TODO: 登入Token
|
||||||
|
$app_template->noEnableFunc();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
// 取得Client要求的格式
|
// 取得Client要求的格式
|
||||||
$requestType = $app->request->headers->get('Accept');
|
$requestType = $app->request->headers->get('Accept');
|
||||||
@ -70,65 +202,4 @@ $app->error(function (\Exception $e) use ($app) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// 測試用 Say hello!~~~
|
|
||||||
$app->get('/hello/:name', function ($name) use ($app) {
|
|
||||||
$app->view(new \JsonApiView());
|
|
||||||
$app->add(new \JsonApiMiddleware());
|
|
||||||
|
|
||||||
$app->render(200,array(
|
|
||||||
'error' => false,
|
|
||||||
'message' => 'Hello, $name'
|
|
||||||
));
|
|
||||||
});
|
|
||||||
|
|
||||||
// ============================================================================
|
|
||||||
|
|
||||||
$app->group('/users', 'APIrequest', function () use ($app) {
|
|
||||||
|
|
||||||
// 建立帳號
|
|
||||||
$app->post('/', function () use ($app) {
|
|
||||||
APIdisableFunc($app);
|
|
||||||
});
|
|
||||||
|
|
||||||
// 取得帳號資訊
|
|
||||||
$app->get('/:user_id', function ($user_id) use ($app) {
|
|
||||||
try {
|
|
||||||
$user = new User\User($user_id);
|
|
||||||
|
|
||||||
$app->render(200,array(
|
|
||||||
'user_id' => $user_id,
|
|
||||||
'nickname' => $user->getNickName(),
|
|
||||||
'class_name' => $user->getClassName(),
|
|
||||||
'error' => false
|
|
||||||
));
|
|
||||||
}
|
|
||||||
catch (Exception\UserNoFoundException $e) {
|
|
||||||
$app->render(404,array(
|
|
||||||
'user_id' => $user_id,
|
|
||||||
'error' => true,
|
|
||||||
'message' => '\''.$user_id.'\' is not found',
|
|
||||||
'message_cht' => '找不到\''.$user_id.'\'使用者'
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$app->post('/:user_id/login/', function ($user_id) use ($app) {
|
|
||||||
// TODO: 登入
|
|
||||||
APIdisableFunc($app);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$app->group('/tokens', 'APIrequest', function () use ($app) {
|
|
||||||
|
|
||||||
$app->get('/:token', function ($token) {
|
|
||||||
//echo "Login Token: $token";
|
|
||||||
// TODO: 登入Token
|
|
||||||
APIdisableFunc($app);
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$app->run();
|
$app->run();
|
||||||
|
42
htdocs/api/v2/src/ApiTemplates.php
Normal file
42
htdocs/api/v2/src/ApiTemplates.php
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class ApiTemplates {
|
||||||
|
|
||||||
|
protected $app;
|
||||||
|
|
||||||
|
public function __construct($context) {
|
||||||
|
$this->app = $context;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function inputParamErr($array = array()) {
|
||||||
|
|
||||||
|
$array += array(
|
||||||
|
'error' => true,
|
||||||
|
'message' => '',
|
||||||
|
'message_cht' => '缺少必要的參數',
|
||||||
|
'substatus' => 101
|
||||||
|
);
|
||||||
|
$this->app->render(400, $array);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function inputContentTypeErr() {
|
||||||
|
|
||||||
|
$array = array(
|
||||||
|
'error' => true,
|
||||||
|
'message' => '',
|
||||||
|
'message_cht' => '輸入參數的Content-Type不在支援範圍內 或是沒有輸入',
|
||||||
|
'substatus' => 102
|
||||||
|
);
|
||||||
|
$this->app->render(400, $array);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function noEnableFunc($array = array()) {
|
||||||
|
|
||||||
|
$array += array(
|
||||||
|
'error' => true,
|
||||||
|
'message' => 'This function is not enable.',
|
||||||
|
'message_cht' => '此功能尚未開放'
|
||||||
|
);
|
||||||
|
$this->app->render(405, $array);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user