このリポジトリは2023-09-09にアーカイブされています。 ファイルの閲覧とクローンは可能ですが、プッシュ、イシューの作成、プルリクエストはできません。
076server/app/Http/Controllers/UserController.php

556 行
19 KiB
PHP
Raw 通常表示 履歴

2018-01-24 01:36:47 +09:00
<?php
namespace App\Http\Controllers;
use App\Models\ForUser;
2018-01-24 05:33:53 +09:00
use Illuminate\Support\Facades\DB;
2018-06-23 19:22:16 +09:00
use Illuminate\Support\Facades\File;
2018-06-22 19:43:14 +09:00
use Illuminate\Support\Facades\Storage;
2018-01-24 01:36:47 +09:00
use Illuminate\Http\Request;
2018-03-06 21:34:19 +09:00
use Illuminate\Contracts\Routing\ResponseFactory;
2018-01-24 01:36:47 +09:00
use Illuminate\Support\Facades\Log;
2018-02-07 00:58:54 +09:00
use Tymon\JWTAuth\Facades\JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
2018-01-24 01:36:47 +09:00
use App\Http\Controllers\AuthController;
2018-03-02 00:59:26 +09:00
2018-01-24 01:36:47 +09:00
class UserController extends Controller {
private $objAuth;
2018-03-02 00:59:26 +09:00
public function __construct() {
$this->objAuth = new AuthController();
}
2018-02-27 01:12:06 +09:00
2018-02-07 16:21:15 +09:00
// User
public function getUsersOnline() { // /api/rpc/user/user/getusersonline
2018-06-19 19:17:05 +09:00
$cols = $this->getGroupColours()->toArray();
$get = 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')
2018-04-18 23:18:59 +09:00
->orderBy('display_name', 'asc')
->orderBy('username', 'asc')
->get(array(
'id',
'username',
'gender',
2018-06-19 19:17:05 +09:00
'perm_id',
'avatar',
'name_style',
'display_name',
'ostatus',
'ontime'
));
2018-06-19 19:17:05 +09:00
$res = array();
foreach ($get as $i) {
$showName = "";
$showCol = "";
$showStatus = "";
$showAva = "";
if ($i->display_name !== '') {
$showName = $i->display_name;
}
else {
$showName = $i->username;
}
if ($i->name_style !== '') {
$showCol = $i->name_style;
}
else {
foreach($cols as $cl) {
if ($cl->id === $i->perm_id) {
if ($i->gender === 1) $showCol = $cl->colour_m;
else if ($i->gender === 2) $showCol = $cl->colour_f;
else $showCol = $cl->colour_u;
}
}
}
if ($i->ostatus == 1) {
$showStatus = "green";
}
else if ($i->ostatus == 2) {
$showStatus = "red";
}
else if ($i->ostatus == 3) {
$showStatus = "yellow";
}
else {
$showStatus = "dark";
}
if (empty($i->avatar)) {
$showAva = "assets/avatars/haznoavaz.png";
}
else {
$showAva = $i->avatar;
}
$res[] = array(
'id' => $i->id,
'display_name' => $showName,
'name_style' => $showCol,
'avatar' => $showAva,
'status' => $showStatus,
'ontime' => $i->ontime
);
}
return $res;
}
2018-04-18 23:18:59 +09:00
public function updateUserStatus(Request $request) { // /api/rpc/user/user/updateuserstatus
$check = $this->objAuth->checkLegit($request->username, $request->password);
if ($check != 0) {
return DB::table('usr_profile')
->where('user_id', $check)
->update([
'ostatus' => $request->ostatus
]);
}
}
public function updateUserOnline(Request $request) { // /api/rpc/user/user/updateuseronline
2018-04-18 23:18:59 +09:00
$check = $this->objAuth->checkLegit($request->username, $request->password);
if ($check != 0) {
return DB::table('usr_details')
->where('user_id', $check)
->update([
'ontime' => time()
]);
}
}
public function getUsers(Request $request) { // /api/rpc/user/user/getusers
$getting = array(
'users.id',
'usr_perm_module.name as group_name',
'users.username',
'usr_perm_id.perm_id',
'usr_details.reg_date',
'usr_profile.gender',
'usr_profile.avatar',
'usr_profile.name_style',
'usr_profile.display_name',
'usr_profile.country'
);
$valid = $this->objAuth->getPermissions($request->username, $request->password);
if ($valid['usr_emailshow'] == 1) {
array_push($getting, 'users.email');
}
if ($valid['usr_ipshow'] == 1) {
2018-04-20 22:52:05 +09:00
array_push($getting, 'usr_profile.ip_address');
}
2018-02-07 22:24:41 +09:00
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')
->join('usr_perm_module', 'usr_perm_module.id', 'usr_perm_id.perm_id')
->get($getting);
2018-01-24 01:36:47 +09:00
}
public function getUser($id, Request $request) { // /api/rpc/user/user/getuser/id/uid
2018-03-02 00:59:26 +09:00
$getting = array(
'users.id',
2018-04-17 16:12:05 +09:00
'users.username',
'usr_perm_module.name as group_name',
'usr_profile.display_name',
'usr_profile.name_style',
2018-04-17 16:12:05 +09:00
'usr_perm_id.perm_id',
'usr_profile.member_title',
'usr_details.total_posts',
'usr_details.total_threads',
2018-04-17 16:12:05 +09:00
'usr_details.reg_date',
'usr_contacts.website_link',
'usr_contacts.website_name',
'usr_profile.gender',
'usr_profile.location',
'usr_profile.birthday',
'usr_profile.bio',
'usr_profile.avatar',
'usr_profile.country',
'usr_contacts.website_link',
'usr_contacts.website_name',
'usr_contacts.youtube_link',
'usr_contacts.youtube_name',
'usr_contacts.niconico',
'usr_contacts.pixiv',
'usr_contacts.discord',
'usr_contacts.mastodon',
'usr_contacts.twitter'
2018-03-02 00:59:26 +09:00
);
$check = $this->objAuth->checkLegit($request->username, $request->password);
$valid = $this->objAuth->getPermissions($request->username, $request->password);
$cols = $this->getGroupColours()->toArray();
2018-05-02 19:10:05 +09:00
if ($valid['usr_editother'] == 1) {
array_push($getting, 'users.password');
}
if ($valid['usr_emailshow'] == 1) {
2018-04-18 00:28:21 +09:00
array_push($getting, 'users.email');
2018-03-02 00:59:26 +09:00
}
if ($valid['usr_ipshow'] == 1) {
2018-04-18 00:28:21 +09:00
array_push($getting, 'usr_profile.ip_address');
2018-03-02 00:59:26 +09:00
}
if ($valid['usr_canwarn'] == 1) {
2018-04-18 00:28:21 +09:00
array_push($getting, 'usr_details.strikes');
}
2018-03-02 00:59:26 +09:00
2018-02-07 22:24:41 +09:00
return DB::table('users')
->join('usr_details', 'usr_details.user_id', '=', 'users.id')
->join('usr_profile', 'usr_profile.user_id', '=', 'users.id')
2018-04-17 16:12:05 +09:00
->join('usr_contacts', 'usr_contacts.user_id', '=', 'users.id')
2018-02-07 22:24:41 +09:00
->join('usr_perm_id', 'usr_perm_id.user_id', '=', 'users.id')
->join('usr_perm_module', 'usr_perm_module.id', 'usr_perm_id.perm_id')
->where('users.id', $id)
2018-03-02 00:59:26 +09:00
->get($getting);
}
2018-02-15 22:43:45 +09:00
public function getExist($username, $email) { // /api/rpc/user/user/getexist/username/email
$isExist = DB::table('users')
->select('username', 'email')
->where('username', mb_strtolower($username))
->orWhere('email', mb_strtolower($email))
->get();
return $isExist->count();
}
2018-02-06 19:51:43 +09:00
public function getPostStyle($id) { // /api/rpc/user/user/getpoststyle/id
2018-02-15 22:43:45 +09:00
return DB::table('users')
2018-02-06 19:51:43 +09:00
->select('header', 'footer')
->where('id', $id)
->get();
}
2018-04-18 00:28:21 +09:00
public function getGroups() { // /api/rpc/user/user/getgroups
return DB::table('usr_perm_module')
->select('id', 'name', 'colour_m', 'colour_f', 'colour_u')
->get();
}
2018-02-15 00:54:43 +09:00
public function getGroupName($id) { // /api/rpc/user/user/getgroupname/id
return DB::table('usr_perm_module')
->join('usr_perm_id', 'usr_perm_id.perm_id', '=', 'usr_perm_module.id')
->where('user_id', $id)
->get(array(
'name',
// 'badge' (this is a pipeline feature, please don't uncomment for now!)
));
}
2018-02-02 18:27:57 +09:00
public function getGroupColours() { // /api/rpc/user/user/getgroupcolours
return DB::table('usr_perm_module')
->select(
2018-01-30 18:43:30 +09:00
'id',
'colour_m',
'colour_f',
'colour_u'
)
->get();
2018-01-24 01:36:47 +09:00
}
2018-02-06 01:37:45 +09:00
2018-02-07 16:21:15 +09:00
// Owner
2018-03-06 21:00:35 +09:00
public function getOwnerList() { // /api/rpc/user/owner/getownerlist
$user_data = DB::table('users')
->join('usr_profile', 'usr_profile.user_id', '=', 'users.id')
->orderBy('id', 'asc')
->get(array('id', 'username', 'display_name'));
$result = array();
foreach ($user_data as $u) {
$name = '';
if (!empty($u->display_name)) {
$name = $u->display_name;
}
else {
$name = $u->username;
}
array_push($result, [
'value' => $u->id,
'label' => $name,
]);
}
return $result;
}
2018-02-07 16:21:15 +09:00
public function countOwnersOfEntry($file_id) { // /api/rpc/user/owner/countownersofentry/id
return DB::table('str_owners')
->where('file_id', $file_id)
->count();
}
public function getOwnersOfEntry($file_id) { // /api/rpc/user/owner/getownersofentry/id
return DB::table('str_owners')
->join('str_file', 'str_owners.file_id', '=', 'str_file.id')
2018-02-07 22:24:41 +09:00
->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')
2018-02-07 16:21:15 +09:00
->where('file_id', $file_id)
->get(array(
2018-02-16 23:09:35 +09:00
'users.id',
'title',
'version',
'views',
'downloads',
'submit_date',
'last_date',
'username',
'avatar',
'perm_id',
'gender',
'display_name',
'name_style',
2018-02-07 16:21:15 +09:00
));
}
public function countEntriesOfOwner($user_id) { // /api/rpc/user/owner/countentriesofowner/id
return DB::table('str_owners')
->where('user_id', $user_id)
->count();
}
public function getEntriesOfOwner($user_id) { // /api/rpc/user/owner/getentriesofowner/id
return DB::table('str_owners')
->join('str_file', 'str_owners.file_id', '=', 'str_file.id')
2018-02-07 22:24:41 +09:00
->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')
2018-02-07 16:21:15 +09:00
->where('user_id', $user_id)
->get(array(
2018-02-16 23:09:35 +09:00
'users.id',
'title',
'version',
'views',
'downloads',
'submit_date',
'last_date',
'username',
'avatar',
'perm_id',
'gender',
'display_name',
'name_style',
2018-02-07 16:21:15 +09:00
));
}
2018-02-16 23:09:35 +09:00
public function getTotalPostCount($id) { // /api/rpc/user/user/gettotalpostcount/id
return DB::table('usr_details')
->select('total_posts')
->where('user_id', $id)
->first()->total_posts;
}
public function getTotalTopicCount($id) { // /api/rpc/user/user/gettotaltopiccount/id
return DB::table('usr_details')
->select('total_threads')
->where('user_id', $id)
->first()->total_threads;
}
2018-03-06 21:34:19 +09:00
public function addOwner(Request $request) { // /api/rpc/user/owner/addowner
$check = $this->objAuth->checkLegit($request->username, $request->password);
2018-03-06 21:34:19 +09:00
if ($check == 0) {
return 'Err!';
}
else {
$add = DB::table('str_owners')
->insert([
'user_id' => $request->user_id,
'file_id' => $request->file_id
]);
return \Response::json($add);
}
2018-03-06 21:34:19 +09:00
}
2018-02-16 23:09:35 +09:00
public function updateTotalPostCount(Request $request) { // /api/rpc/user/user/updatetotalpostcount
$check = $this->objAuth->checkLegit($request->username, $request->password);
2018-02-16 23:09:35 +09:00
if ($check == 0) {
return 'Err!';
}
else {
$getPC = $this->getTotalPostCount($check);
$getPC++;
return DB::table('usr_details')
->where('user_id', $check)
->update([
'total_posts' => $getPC
]);
}
2018-02-16 23:09:35 +09:00
}
public function updateTotalTopicCount(Request $request) { // /api/rpc/user/user/updatetotaltopiccount
$check = $this->objAuth->checkLegit($request->username, $request->password);
2018-02-16 23:09:35 +09:00
if ($check == 0) {
return 'Err!';
}
else {
$getPC = $this->getTotalPostCount($request->user_id);
$getTC = $this->getTotalTopicCount($request->user_id);
$getPC++;
$getTC++;
return DB::table('usr_details')
->where('user_id', $request->user_id)
->update([
'total_posts' => $getPC,
'total_threads' => $getTC
]);
}
2018-02-16 23:09:35 +09:00
}
2018-04-17 16:31:31 +09:00
2018-06-23 19:22:16 +09:00
public function getCountries() { // /api/rpc/user/user/getcountries
$flags = File::files('assets/flags');
$res = array();
foreach ($flags as $flag) {
$protocol = isset($_SERVER["HTTPS"]) ? 'https' : 'http';
$res[] = array(
'value' => $flag->getBasename('.png'),
'label' => '<img src="'.$protocol.'://'.$_SERVER['SERVER_NAME'].'/'.$flag->getPathname().'" /> '.$flag->getBasename('.png')
);
}
return $res;
}
2018-06-22 19:43:14 +09:00
public function avatarUpload(Request $request) { // /api/rpc/user/user/avatarupload
$check = $this->objAuth->checkLegit($request->username, $request->password);
if ($check == 0) {
return 'Err!';
}
else {
$valid = $this->objAuth->getPermissions($request->username, $request->password);
if ($valid['usr_editprofile'] == 1) {
if (isset($request->filename)) {
if (!is_dir("assets/avatars/".$check)) {
if (!mkdir("assets/avatars/".$check, 0755, true)) {
return "Could not make folder ".$check."<br />";
}
}
$img_dir = "assets/avatars/".$check."/";
$image = $img_dir . $request->filename;
$imageFileType = array(
'image/png',
'image/jpeg',
'image/gif'
);
if (!in_array($request->filetype, $imageFileType)) {
return "Only JPG, PNG, JPEG, and GIF are allowed.";
}
$fname = 'assets/avatars/'.$check.'/'.$request->filename;
2018-06-23 18:16:01 +09:00
$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $request->thefile));
Storage::disk('public')->put($fname, $data);
2018-06-22 19:43:14 +09:00
return $request->filename;
}
}
else {
return 'Permission denied.';
}
}
}
2018-04-17 16:31:31 +09:00
public function editUser(Request $request) { // /api/rpc/user/user/edit
$check = $this->objAuth->checkLegit($request->username, $request->password);
if ($check == 0) {
return 'Err!';
}
else {
$valid = $this->objAuth->getPermissions($request->username, $request->password);
if ($valid['usr_editprofile'] == 1) {
2018-05-02 19:10:05 +09:00
if (isset($request->newPassword)) {
DB::table('users')
->where('id', $request->id)
->update([
'password' => $request->newPassword
]);
}
if (isset($request->email)) {
2018-05-02 19:10:05 +09:00
DB::table('users')
->where('id', $request->id)
->update([
'email' => $request->email
]);
2018-05-02 19:10:05 +09:00
}
2018-04-17 16:31:31 +09:00
DB::table('usr_contacts')
2018-04-18 00:28:21 +09:00
->where('user_id', $request->id)
2018-04-17 16:31:31 +09:00
->update([
2018-04-18 00:28:21 +09:00
'website_link' => ($request->website_link != '' ? $request->website_link : ''),
'website_name' => ($request->website_name != '' ? $request->website_name : ''),
'youtube_link' => ($request->youtube_link != '' ? $request->youtube_link : ''),
'youtube_name' => ($request->youtube_name != '' ? $request->youtube_name : ''),
'niconico' => ($request->niconico != '' ? $request->niconico : ''),
'pixiv' => ($request->pixiv != '' ? $request->pixiv : ''),
'discord' => ($request->discord != '' ? $request->discord : ''),
'mastodon' => ($request->mastodon != '' ? $request->mastodon : ''),
'twitter' => ($request->twitter != '' ? $request->twitter : '')
2018-04-17 16:31:31 +09:00
]);
DB::table('usr_perm_id')
2018-04-18 00:28:21 +09:00
->where('user_id', $request->id)
2018-04-17 16:31:31 +09:00
->update([
'perm_id' => $request->group
]);
DB::table('usr_profile')
2018-04-18 00:28:21 +09:00
->where('user_id', $request->id)
2018-04-17 16:31:31 +09:00
->update([
'gender' => $request->gender,
2018-04-18 00:28:21 +09:00
'bio' => ($request->aboutSelf != '' ? $request->aboutSelf : ''),
'signature' => ($request->signature != '' ? $request->signature : ''),
'avatar' => ($request->avatar != '' ? $request->avatar : ''),
'name_style' => ($request->nameStyle != '' ? $request->nameStyle : ''),
'display_name' => ($request->displayName != '' ? $request->displayName : ''),
'member_title' => ($request->memberTitle != '' ? $request->memberTitle : ''),
'birthday' => ($request->birthDay != 0 ? $request->birthDay : 0),
2018-04-17 16:31:31 +09:00
'country' => $request->country
]);
return 'Success!';
}
else {
return 'Permission denied.';
}
}
}
2018-01-24 01:36:47 +09:00
}