Moar API calls.

このコミットが含まれているのは:
テクニカル諏訪子 2018-03-02 00:59:26 +09:00
コミット a364885589
8個のファイルの変更405行の追加63行の削除

ファイルの表示

@ -9,6 +9,9 @@ use Tymon\JWTAuth\Exceptions\JWTException;
use Validator;
use DB, Hash, Mail, Illuminate\Support\Facades\Password;
use App\Http\Controllers\UserController;
use App\Http\Controllers\PermissionController;
class AuthController extends Controller {
/**
* API Register
@ -16,6 +19,208 @@ class AuthController extends Controller {
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
private $objUser;
private $objPermission;
public function __construct() {
$this->objUser = new UserController();
$this->objPermission = new PermissionController();
}
public function checkLegit($uid) {
// Get user ID.
$perm = $this->objUser->getUser($uid);
// Does the user ID exist? Grand the appropriate rights. Otherwise, use guest.
if ($uid != 0) {
// Page permissions.
$grouppermblg = $this->objPermission->getPermissionGroup('blg', $perm[0]->perm_id);
$userpermblg = $this->objPermission->getPermissionUser('blg', $uid);
// Board permissions.
$grouppermfor = $this->objPermission->getPermissionGroup('for', $perm[0]->perm_id);
$userpermfor = $this->objPermission->getPermissionUser('for', $uid);
// Store permissions.
$grouppermstr = $this->objPermission->getPermissionGroup('str', $perm[0]->perm_id);
$userpermstr = $this->objPermission->getPermissionUser('str', $uid);
// User permissions.
$grouppermusr = $this->objPermission->getPermissionGroup('usr', $perm[0]->perm_id);
$userpermusr = $this->objPermission->getPermissionUser('usr', $uid);
// Image permissions.
// $grouppermimg = $this->objPermission->getPermissionGroup('img', $perm[0]->perm_id);
// $userpermimg = $this->objPermission->getPermissionUser('img', $uid);
// Document permissions.
// $grouppermdoc = $this->objPermission->getPermissionGroup('doc', $perm[0]->perm_id);
// $userpermdoc = $this->objPermission->getPermissionUser('doc', $uid);
// ODB permissions.
// $grouppermodb = $this->objPermission->getPermissionGroup('odb', $perm[0]->perm_id);
// $userpermodb = $this->objPermission->getPermissionUser('odb', $uid);
// Now provide an array of user overwritten permissions if it exists. Otherwise, give its group permissions.
$blgarr = array();
$forarr = array();
$strarr = array();
$usrarr = array();
// $imgarr = array();
// $docarr = array();
// $odbarr = array();
if (!empty($userpermblg[0])) {
$blgarr = (array)$userpermblg[0];
}
else {
$blgarr = (array)$grouppermblg[0];
}
$blgarr = array_combine(
array_map(function($k){ return 'blg_'.$k; }, array_keys($blgarr)),
$blgarr
);
if (!empty($userpermfor[0])) {
$forarr = (array)$userpermfor[0];
}
else {
$forarr = (array)$grouppermfor[0];
}
$forarr = array_combine(
array_map(function($k){ return 'for_'.$k; }, array_keys($forarr)),
$forarr
);
if (!empty($userpermstr[0])) {
$strarr = (array)$userpermstr[0];
}
else {
$strarr = (array)$grouppermstr[0];
}
$strarr = array_combine(
array_map(function($k){ return 'str_'.$k; }, array_keys($strarr)),
$strarr
);
if (!empty($userpermusr[0])) {
$usrarr = (array)$userpermusr[0];
}
else {
$usrarr = (array)$grouppermusr[0];
}
$usrarr = array_combine(
array_map(function($k){ return 'usr_'.$k; }, array_keys($usrarr)),
$usrarr
);
/* if (!empty($userpermimg[0])) {
$imgarr = (array)$userpermimg[0];
}
else {
$imgarr = (array)$grouppermimg[0];
}
if (!empty($userpermdoc[0])) {
$docarr = (array)$userpermdoc[0];
}
else {
$docarr = (array)$grouppermdoc[0];
}
if (!empty($userpermodb[0])) {
$odbarr = (array)$userpermodb[0];
}
else {
$odbarr = (array)$grouppermodb[0];
} */
$merge = array();
$merge1 = array();
$merge2 = array();
$merge1 = array_merge($blgarr, $forarr);
$merge2 = array_merge($strarr, $usrarr);
$merge = array_merge($merge1, $merge2);
return $merge;
}
else {
// Page permissions.
$grouppermblg = $this->objPermission->getPermissionGroup('blg', 6);
// Forum permissions.
$grouppermfor = $this->objPermission->getPermissionGroup('for', 6);
// Store permissions.
$grouppermstr = $this->objPermission->getPermissionGroup('str', 6);
// User permissions.
$grouppermusr = $this->objPermission->getPermissionGroup('usr', 6);
// Image permissions.
// $grouppermimg = $this->objPermission->getPermissionGroup('img', 6);
// Document permissions.
// $grouppermdoc = $this->objPermission->getPermissionGroup('doc', 6);
// ODB permissions.
// $grouppermodb = $this->objPermission->getPermissionGroup('odb', 6);
// Since guests don't have user overwritten permissions, simply return the group permissions.
(array)$grouppermblg[0] = array_combine(
array_map(function($k){ return 'blg_'.$k; }, array_keys((array)$grouppermblg[0])),
(array)$grouppermblg[0]
);
(array)$grouppermfor[0] = array_combine(
array_map(function($k){ return 'for_'.$k; }, array_keys((array)$grouppermfor[0])),
(array)$grouppermfor[0]
);
(array)$grouppermstr[0] = array_combine(
array_map(function($k){ return 'str_'.$k; }, array_keys((array)$grouppermstr[0])),
(array)$grouppermstr[0]
);
(array)$grouppermusr[0] = array_combine(
array_map(function($k){ return 'usr_'.$k; }, array_keys((array)$grouppermusr[0])),
(array)$grouppermusr[0]
);
/* (array)$grouppermimg[0] = array_combine(
array_map(function($k){ return 'img_'.$k; }, array_keys((array)$grouppermimg[0])),
(array)$grouppermimg[0]
);
(array)$grouppermdoc[0] = array_combine(
array_map(function($k){ return 'doc_'.$k; }, array_keys((array)$grouppermdoc[0])),
(array)$grouppermdoc[0]
);
(array)$grouppermodb[0] = array_combine(
array_map(function($k){ return 'odb_'.$k; }, array_keys((array)$grouppermodb[0])),
(array)$grouppermodb[0]
); */
$merge = array();
$merge1 = array();
$merge2 = array();
$merge1 = array_merge((array)$grouppermblg[0], (array)$grouppermfor[0]);
$merge2 = array_merge((array)$grouppermstr[0], (array)$grouppermusr[0]);
$merge = array_merge($merge1, $merge2);
return $merge;
}
}
public function register(Request $request) {
$credentials = $request->only('username', 'password');

ファイルの表示

@ -7,14 +7,17 @@ use Illuminate\Http\Request;
use Illuminate\Contracts\Routing\ResponseFactory;
use Illuminate\Support\Facades\Log;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\PermissionController;
class BoardController extends Controller {
private $objAuth;
private $objUser;
private $objPermission;
public function __construct() {
$this->objAuth = new AuthController();
$this->objUser = new UserController();
$this->objPermission = new PermissionController();
}
@ -114,10 +117,10 @@ class BoardController extends Controller {
->get();
}
public function getTopicsUnpinned($for_id, $from, $to) { // /api/rpc/board/topic/gettopicsunpinned/for_id
public function getTopicsUnpinned($for, $from, $to) { // /api/rpc/board/topic/gettopicsunpinned/for/from/to
return DB::table('for_threads')
->select('*')
->where('for_id', $for_id)
->where('for_id', $for)
->where('sticky', 0)
->offset($from)
->limit($to)
@ -125,15 +128,23 @@ class BoardController extends Controller {
->get();
}
public function getTopicsPinned($for_id) { // /api/rpc/board/topic/gettopicspinned/for_id
public function getTopicsPinned($for, $from, $to) { // /api/rpc/board/topic/gettopicspinned/for/from/to
return DB::table('for_threads')
->select('*')
->where('for_id', $for_id)
->where('for_id', $for)
->where('sticky', 1)
->orderBy('last_date', 'desc')
->get();
}
public function getTopicsUser($user, $from, $to) { // /api/rpc/board/topic/gettopicsuser/user/from/to
return DB::table('for_threads')
->select('*')
->where('started_by', $user)
->orderBy('last_date', 'desc')
->get();
}
public function getTopicStart($top_id) { // /api/rpc/board/post/gettopicstart/top_id
$uid = DB::table('for_posts')
->where('top_id', $top_id)
@ -243,6 +254,42 @@ class BoardController extends Controller {
return $get;
}
public function getPostsofUser($user_id, $from, $to) {
return DB::table('for_posts')
->join('users', 'for_posts.user_id', '=', 'users.id')
->join('usr_details', 'usr_details.user_id', '=', 'for_posts.user_id')
->join('usr_profile', 'usr_profile.user_id', '=', 'for_posts.user_id')
->join('usr_perm_id', 'usr_perm_id.user_id', '=', 'for_posts.user_id')
->where('users.id', $user_id)
->offset($from)
->limit($to)
->orderBy('for_posts.post_date', 'asc')
->get(array(
'for_posts.id',
'top_id',
'for_posts.user_id',
'post_date',
'message',
'delete',
'lastedit',
'ipaddress',
'delreason',
'nolayout',
'postcount',
'username',
'perm_id',
'total_posts',
'header',
'footer',
'member_title',
'gender',
'avatar',
'name_style',
'display_name',
'country'
));
}
public function getUserPosts($top_id, $from, $to) { // /api/rpc/board/post/getuserposts/top/from/to
return DB::table('for_posts')
->join('users', 'for_posts.user_id', '=', 'users.id')
@ -511,7 +558,8 @@ class BoardController extends Controller {
// All the user posts' user IDs.
if ($tp == 't') $uid = $this->getUserPosts($id, $from, $to);
else $uid = $this->getUserPost($id);
else if ($tp == 'p') $uid = $this->getUserPost($id);
else $uid = $this->getPostsOfUser($id, $from, $to);
$udat = array();
$key = 0;

ファイルの表示

@ -174,33 +174,65 @@ class StoreController extends Controller {
->get();
}
public function getEntry($id) { // /api/rpc/store/entry/getentry/id
return DB::table('str_owners')
->join('str_file', 'str_owners.file_id', '=', 'str_file.id')
->join('users', 'str_owners.user_id', '=', 'users.id')
->join('usr_details', 'usr_details.user_id', '=', 'str_owners.user_id')
->join('usr_profile', 'usr_profile.user_id', '=', 'str_owners.user_id')
->join('usr_perm_id', 'usr_perm_id.user_id', '=', 'str_owners.user_id')
->where('file_id', $id)
->get(array(
"file_id",
"users.id",
"cat_id",
"title",
"version",
"description",
"changelog",
"views",
"downloads",
"submit_date",
"last_date",
"username",
"avatar",
"perm_id",
"gender",
"display_name",
"name_style",
));
public function getEntry($id, $mode) { // /api/rpc/store/entry/getentry/id/mode
if ($mode == 'user') {
return DB::table('str_owners')
->join('str_file', 'str_owners.file_id', '=', 'str_file.id')
->join('users', 'str_owners.user_id', '=', 'users.id')
->join('usr_details', 'usr_details.user_id', '=', 'str_owners.user_id')
->join('usr_profile', 'usr_profile.user_id', '=', 'str_owners.user_id')
->join('usr_perm_id', 'usr_perm_id.user_id', '=', 'str_owners.user_id')
->where('str_owners.user_id', $id)
->get(array(
'file_id',
'str_owners.user_id',
'cat_id',
'title',
'version',
'description',
'changelog',
'views',
'downloads',
'submit_date',
'last_date',
'username',
'avatar',
'perm_id',
'gender',
'display_name',
'name_style',
));
}
else {
return DB::table('str_owners')
->join('str_file', 'str_owners.file_id', '=', 'str_file.id')
->join('users', 'str_owners.user_id', '=', 'users.id')
->join('usr_details', 'usr_details.user_id', '=', 'str_owners.user_id')
->join('usr_profile', 'usr_profile.user_id', '=', 'str_owners.user_id')
->join('usr_perm_id', 'usr_perm_id.user_id', '=', 'str_owners.user_id')
->where('file_id', $id)
->take(1)
->get(array(
'file_id',
'str_owners.user_id',
'cat_id',
'title',
'version',
'description',
'changelog',
'views',
'downloads',
'submit_date',
'last_date',
'username',
'avatar',
'perm_id',
'gender',
'display_name',
'name_style',
));
}
}
public function getEntryName($id) { // /api/rpc/store/entry/getfilename/id

ファイルの表示

@ -11,8 +11,53 @@ use Illuminate\Support\Facades\Log;
use Tymon\JWTAuth\Facades\JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use App\Http\Controllers\PermissionController;
class UserController extends Controller {
public function __construct() {}
/* private $objPermission;
public function __construct() {
$this->objPermission = new PermissionController();
} */
/* public function checkLegit($uid) {
// Get user ID.
$perm = $this->getUser($uid);
// Does the user ID exist? Grand the appropriate rights. Otherwise, use guest.
if ($uid != 0) {
$grouppermusr = $this->objPermission->getPermissionGroup('usr', $perm[0]->perm_id);
$userpermusr = $this->objPermission->getPermissionUser('usr', $uid);
// Now provide an array of user overwritten permissions if it exists. Otherwise, give its group permissions.
$usrarr = array();
if (!empty($userpermusr[0])) {
$usrarr = (array)$userpermusr[0];
}
else {
$usrarr = (array)$grouppermusr[0];
}
$usrarr = array_combine(
array_map(function($k){ return 'usr_'.$k; }, array_keys($usrarr)),
$usrarr
);
return $usrarr;
}
else {
$grouppermusr = $this->objPermission->getPermissionGroup('usr', 6);
// Since guests don't have user overwritten permissions, simply return the group permissions.
(array)$grouppermusr[0] = array_combine(
array_map(function($k){ return 'usr_'.$k; }, array_keys((array)$grouppermusr[0])),
(array)$grouppermusr[0]
);
return (array)$grouppermusr[0];
}
} */
// User
public function getUsersOnline() { // /api/rpc/user/user/getusersonline
@ -72,35 +117,44 @@ class UserController extends Controller {
));
}
public function getUser($id) { // /api/rpc/user/user/getuser/id
public function getUser($id, $uid=0) { // /api/rpc/user/user/getuser/id/uid
$getting = array(
'users.id',
'username',
'perm_id',
'member_title',
'reg_date',
'website_address',
'website_name',
'gender',
'location',
'birthday',
'bio',
'avatar',
'name_style',
'display_name',
'yt_channel',
'country'
);
/* if ($this->checkLegit($uid)[0]->usr_showemail == 1) {
array_push($getting, 'email');
}
if ($this->checkLegit($uid)[0]->usr_ipshow == 1) {
array_push($getting, 'ip_address');
}
if ($this->checkLegit($uid)[0]->usr_canwarn == 1) {
array_push($getting, 'strikes');
} */
return DB::table('users')
->join('usr_details', 'usr_details.user_id', '=', 'users.id')
->join('usr_profile', 'usr_profile.user_id', '=', 'users.id')
->join('usr_perm_id', 'usr_perm_id.user_id', '=', 'users.id')
->where('id', $id)
->get(array(
'users.id',
'username',
'perm_id',
'member_title',
'reg_date',
'website_address',
'website_name',
'gender',
'location',
'birthday',
'bio',
'avatar',
'strikes',
'name_style',
'display_name',
'yt_channel',
'country',
// TODO: hide the following stuff away from unprivileaged users.
'email',
'ip_address',
'strikes'
));
->get($getting);
}
public function getExist($username, $email) { // /api/rpc/user/user/getexist/username/email

ファイルの表示

@ -22,6 +22,7 @@ $api->version('v1', function ($api) {
$api->post('/auth/login', 'AuthController@login');
$api->post('/auth/register', 'AuthController@register');
$api->post('/auth/recover', 'AuthController@recover');
$api->get('/auth/checklegit/{id}', 'AuthController@checkLegit');
$api->group(['middleware' => ['jwt.auth']], function ($api) {
$api->get('/auth/logout', 'AuthController@logout');

ファイルの表示

@ -23,11 +23,12 @@ Route::get('/api/rpc/board/forum/getpostcountfreeze/{id}', 'BoardController@getP
Route::get('/api/rpc/board/forum/getreadonly/{id}', 'BoardController@getReadOnly');
// Topic
Route::get('/api/rpc/board/topic/gettopics/{cat}/{from}/{to}', 'BoardController@getTopics');
Route::get('/api/rpc/board/topic/gettopicsunpinned/{cat}/{from}/{to}', 'BoardController@getTopicsUnpinned');
Route::get('/api/rpc/board/topic/gettopicspinned/{cat}', 'BoardController@getTopicsPinned');
Route::get('/api/rpc/board/topic/countunpinnedtopicsinforum/{for_id}', 'BoardController@countUnpinnedTopicsInForum');
Route::get('/api/rpc/board/topic/gettopic/{cat}/{from}/{to}', 'BoardController@getTopic');
Route::get('/api/rpc/board/topic/gettopics/{for}/{from}/{to}', 'BoardController@getTopics');
Route::get('/api/rpc/board/topic/gettopicsunpinned/{for}/{from}/{to}', 'BoardController@getTopicsUnpinned');
Route::get('/api/rpc/board/topic/gettopicspinned/{for}/{from}/{to}', 'BoardController@getTopicsPinned');
Route::get('/api/rpc/board/topic/gettopicsuser/{user}/{from}/{to}', 'BoardController@getTopicsUser');
Route::get('/api/rpc/board/topic/countunpinnedtopicsinforum/{for}', 'BoardController@countUnpinnedTopicsInForum');
Route::get('/api/rpc/board/topic/gettopic/{for}/{from}/{to}', 'BoardController@getTopic');
Route::get('/api/rpc/board/topic/gettopiclock/{id}', 'BoardController@getTopicLock');
Route::get('/api/rpc/board/topic/getforumidfromtopic/{top_id}', 'BoardController@getForumIdFromTopic');
Route::get('/api/rpc/board/topic/gettopicname/{id}', 'BoardController@getTopicName');

ファイルの表示

@ -31,7 +31,7 @@ Route::get('/api/rpc/store/entry/getentriespageall/{cat}/{from}/{to}', 'StoreCon
Route::get('/api/rpc/store/entry/getentriespageapproved/{cat}/{from}/{to}', 'StoreController@getEntriesPageApproved');
Route::get('/api/rpc/store/entry/getentriespagepopularview/{cat}/{from}/{to}', 'StoreController@getEntriesPagePopularView');
Route::get('/api/rpc/store/entry/getentriespagepopulardownload/{cat}/{from}/{to}', 'StoreController@getEntriesPagePopularDownload');
Route::get('/api/rpc/store/entry/getentry/{id}', 'StoreController@getEntry');
Route::get('/api/rpc/store/entry/getentry/{id}/{mode}', 'StoreController@getEntry');
Route::get('/api/rpc/store/entry/getentryname/{id}', 'StoreController@getEntryName');
Route::get('/api/rpc/store/entry/getentriesincategory/{cat_id}', 'StoreController@getEntriesInCategory');
Route::get('/api/rpc/store/entry/countentriesincategory/{cat_id}', 'StoreController@countEntriesInCategory');

ファイルの表示

@ -19,6 +19,7 @@ Route::get('/api/rpc/user/owner/getentriesofowner/{id}', 'UserController@getEntr
Route::get('/api/rpc/user/user/getusersonline', 'UserController@getUsersOnline');
Route::post('/api/rpc/user/user/updateuseronline', 'UserController@updateUserOnline');
Route::get('/api/rpc/user/user/getusers', 'UserController@getUsers');
Route::get('/api/rpc/user/user/getuser/{id}/{uid}', 'UserController@getUser');
Route::get('/api/rpc/user/user/getuser/{id}', 'UserController@getUser');
Route::get('/api/rpc/user/user/getexist/{username}/{email}', 'UserController@getExist');
Route::get('/api/rpc/user/user/getpoststyle/{id}', 'UserController@getPostStyle');