Merge branch 'main' into versioncompatibility-changes
This commit is contained in:
commit
7352e8cc2a
|
|
@ -36,7 +36,7 @@ class AuthHelper
|
||||||
public static function GetCurrentUser(Request $request) {
|
public static function GetCurrentUser(Request $request) {
|
||||||
if($request->session()->exists('authentication')) {
|
if($request->session()->exists('authentication')) {
|
||||||
$session = UserSession::where('token', $request->session()->get('authentication'))->first();
|
$session = UserSession::where('token', $request->session()->get('authentication'))->first();
|
||||||
|
|
||||||
if($session)
|
if($session)
|
||||||
return User::where('id', $session->user)->first();
|
return User::where('id', $session->user)->first();
|
||||||
|
|
||||||
|
|
@ -45,6 +45,21 @@ class AuthHelper
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a session.
|
||||||
|
*
|
||||||
|
* @return User?
|
||||||
|
*/
|
||||||
|
public static function RemoveSession(Request $request) {
|
||||||
|
if($request->session()->exists('authentication')) {
|
||||||
|
$session = UserSession::where('token', $request->session()->get('authentication'))->first();
|
||||||
|
$session->delete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Grants a session.
|
* Grants a session.
|
||||||
|
|
@ -62,4 +77,5 @@ class AuthHelper
|
||||||
|
|
||||||
return $session;
|
return $session;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ namespace App\Http\Controllers;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
|
||||||
use App\Helpers\AuthHelper;
|
use App\Helpers\AuthHelper;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
|
||||||
|
|
@ -97,13 +96,14 @@ class AuthController extends Controller
|
||||||
if (!$user)
|
if (!$user)
|
||||||
return Response()->json(['message'=>'That user doesn\'t exist.', 'badInputs'=>['username']]);
|
return Response()->json(['message'=>'That user doesn\'t exist.', 'badInputs'=>['username']]);
|
||||||
|
|
||||||
if (!$user->password != Hash::make($data['password']))
|
if (Hash::check($request->input('password'), $user->password))
|
||||||
return Response()->json(['message'=>'The password you tried is incorrect.', 'badInputs'=>['password']]);
|
return Response()->json(['message'=>'The password you tried is incorrect.', 'badInputs'=>['password']]);
|
||||||
|
|
||||||
$request->session()->regenerate();
|
$request->session()->regenerate();
|
||||||
|
|
||||||
$newSession = AuthHelper::GrantSession($request, $user->id);
|
$newSession = AuthHelper::GrantSession($request, $user->id);
|
||||||
$request->session()->put('authentication', $newSession);
|
|
||||||
|
$request->session()->put('authentication', $newSession->token);
|
||||||
|
|
||||||
return Response()->json(['message'=>'Success!', 'badInputs'=>[]]);
|
return Response()->json(['message'=>'Success!', 'badInputs'=>[]]);
|
||||||
}
|
}
|
||||||
|
|
@ -114,6 +114,10 @@ class AuthController extends Controller
|
||||||
* @return Response
|
* @return Response
|
||||||
*/
|
*/
|
||||||
public function Logout(Request $request) {
|
public function Logout(Request $request) {
|
||||||
|
if(!AuthHelper::Guard($request))
|
||||||
|
return Response(null, 400);
|
||||||
|
|
||||||
|
AuthHelper::RemoveSession($request);
|
||||||
$request->session()->invalidate();
|
$request->session()->invalidate();
|
||||||
$request->session()->regenerateToken();
|
$request->session()->regenerateToken();
|
||||||
return redirect('/');
|
return redirect('/');
|
||||||
|
|
|
||||||
|
|
@ -8,33 +8,33 @@ use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Providers\RouteServiceProvider;
|
use App\Providers\RouteServiceProvider;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use App\Models\User\UserSession;
|
||||||
use App\Models\Category;
|
use App\Models\Category;
|
||||||
use App\Models\Post;
|
use App\Models\Post;
|
||||||
use App\Models\Reply;
|
use App\Models\Reply;
|
||||||
use App\Models\Staff;
|
use App\Models\Staff;
|
||||||
use App\Models\CatalogCategory;
|
use App\Models\CatalogCategory;
|
||||||
|
use App\Models\Friend;
|
||||||
|
use App\Models\Feed;
|
||||||
use App\Models\Item;
|
use App\Models\Item;
|
||||||
use App\Models\Inventory;
|
use App\Models\Inventory;
|
||||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
use App\Helpers\AuthHelper;
|
||||||
use Illuminate\Routing\Controller as BaseController;
|
use Illuminate\Routing\Controller as BaseController;
|
||||||
use Carbon;
|
use Carbon;
|
||||||
use Auth;
|
use Auth;
|
||||||
use Request;
|
use Illuminate\Http\Request;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
|
|
||||||
class Controller extends BaseController
|
class Controller extends BaseController
|
||||||
{
|
{
|
||||||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
|
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
|
||||||
|
|
||||||
public function fetchCategoriesFP() {
|
public function fetchCategoriesFP(Request $request) {
|
||||||
|
|
||||||
if (!isset($_POST['token'])) {return Response()->json(["error"=>"No user."]);}
|
$user = AuthHelper::GetCurrentUser($request);
|
||||||
|
|
||||||
$POST = $_POST['token'];
|
|
||||||
|
|
||||||
$user = User::where('token', $POST)->first();
|
|
||||||
|
|
||||||
if (!$user) {return Response()->json(["error"=>"No user."]);}
|
if (!$user) {return Response()->json(["error"=>"No user."]);}
|
||||||
|
|
||||||
|
|
@ -53,7 +53,7 @@ class Controller extends BaseController
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function fetchCategoriesCatalog() {
|
public function fetchCategoriesCatalog(Request $request) {
|
||||||
|
|
||||||
$categories = CatalogCategory::get();
|
$categories = CatalogCategory::get();
|
||||||
|
|
||||||
|
|
@ -61,7 +61,35 @@ class Controller extends BaseController
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function fetchCategoryCatalog($id) {
|
public function fetchFeed(Request $request) {
|
||||||
|
|
||||||
|
$user = AuthHelper::GetCurrentUser($request);
|
||||||
|
|
||||||
|
if (!$user) {return Response()->json(["error"=>"No user."]);}
|
||||||
|
|
||||||
|
$friends = Friend::where('status', 1)->where('recieved_id', $user->id)->orWhere('sent_id', $user->id)->get()->toArray();
|
||||||
|
$actualFriends = [];
|
||||||
|
|
||||||
|
foreach ($friends as $friend) {
|
||||||
|
if ($friend['recieved_id'] == $user->id) {
|
||||||
|
array_push($actualFriends, $friend['sent_id']);
|
||||||
|
}else{
|
||||||
|
array_push($actualFriends, $friend['recieved_id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$feed = Feed::whereIn('user_id', $actualFriends)->orWhere('user_id', $user->id)->orderBy('created_at', 'desc')->paginate(15);
|
||||||
|
|
||||||
|
foreach ($feed as &$singleFeed) {
|
||||||
|
$creator = User::where('id', $singleFeed['user_id'])->first();
|
||||||
|
$singleFeed['creatorName'] = $creator->username;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Response()->json(["data"=>$feed]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function fetchCategoryCatalog(Request $request, $id) {
|
||||||
|
|
||||||
$category = CatalogCategory::where('id', $id)->first();
|
$category = CatalogCategory::where('id', $id)->first();
|
||||||
|
|
||||||
|
|
@ -76,7 +104,7 @@ class Controller extends BaseController
|
||||||
return Response()->json(["data"=>$category, "items"=>$items]);
|
return Response()->json(["data"=>$category, "items"=>$items]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function fetchCategory($id) {
|
public function fetchCategory(Request $request, $id) {
|
||||||
|
|
||||||
$category = Category::where('id', $id)->first();
|
$category = Category::where('id', $id)->first();
|
||||||
|
|
||||||
|
|
@ -91,7 +119,24 @@ class Controller extends BaseController
|
||||||
return Response()->json(["data"=>$category, "posts"=>$posts]);
|
return Response()->json(["data"=>$category, "posts"=>$posts]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function fetchPost($id) {
|
public function fetchUser(Request $request, $id) {
|
||||||
|
|
||||||
|
$meta = AuthHelper::GetCurrentUser($request);
|
||||||
|
|
||||||
|
$user = User::where('id', $id)->first();
|
||||||
|
|
||||||
|
if (!$user) {return Response()->json('Error');}
|
||||||
|
|
||||||
|
$array = $user->toArray();
|
||||||
|
|
||||||
|
if ($meta && $meta->id == $array['id']) $array['isMeta'] = true; else $array['isMeta'] = false;
|
||||||
|
|
||||||
|
if ($meta && $meta->getFriends('pending', 'checkSent', $array['id'])) $array['isFriend'] = 'needToAccept'; elseif ($meta && array_intersect($meta->getFriends('pending', 'id', null), [$array['id']])) $array['isFriend'] = 'pending'; elseif ($meta && array_intersect($meta->getFriends('id', null, null), [$array['id']])) $array['isFriend'] = true; else $array['isFriend'] = false;
|
||||||
|
|
||||||
|
return Response()->json(["data"=>$array]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function fetchPost(Request $request, $id) {
|
||||||
|
|
||||||
$post = Post::where('id', $id)->first();
|
$post = Post::where('id', $id)->first();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,9 @@ class GamesController extends Controller
|
||||||
$status = WebStatus::where('name', 'GamesArbiter')
|
$status = WebStatus::where('name', 'GamesArbiter')
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
|
if (!$status) return response()->json(['error' => false])
|
||||||
|
->header('Content-Type', 'application/json');
|
||||||
|
|
||||||
return response()->json(['available' => $status->operational])
|
return response()->json(['available' => $status->operational])
|
||||||
->header('Content-Type', 'application/json');
|
->header('Content-Type', 'application/json');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ class GridTest extends Controller
|
||||||
return game:GetService("ThumbnailGenerator"):Click("PNG", 1920, 1080, false, false)
|
return game:GetService("ThumbnailGenerator"):Click("PNG", 1920, 1080, false, false)
|
||||||
TestScript;
|
TestScript;
|
||||||
|
|
||||||
$test = new SoapService('http://192.168.0.3:64989');
|
$test = new SoapService('http://127.0.0.1:64989');
|
||||||
$result = $test->OpenJob(SoapService::MakeJobJSON('test', 10, 0, 0, 'test render', $testScript));
|
$result = $test->OpenJob(SoapService::MakeJobJSON('test', 10, 0, 0, 'test render', $testScript));
|
||||||
|
|
||||||
return response(base64_decode($result->OpenJobExResult->LuaValue[0]->value))
|
return response(base64_decode($result->OpenJobExResult->LuaValue[0]->value))
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,18 @@ namespace App\Http\Controllers;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Providers\RouteServiceProvider;
|
use App\Providers\RouteServiceProvider;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use App\Models\User\UserSession;
|
||||||
use App\Models\Post;
|
use App\Models\Post;
|
||||||
use App\Models\Reply;
|
use App\Models\Reply;
|
||||||
use App\Models\Category;
|
use App\Models\Category;
|
||||||
|
use App\Models\Friend;
|
||||||
|
use App\Models\Feed;
|
||||||
use App\Models\Staff;
|
use App\Models\Staff;
|
||||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
use Request;
|
use App\Helpers\AuthHelper;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Auth;
|
use Auth;
|
||||||
|
|
||||||
class HomeController extends Controller
|
class HomeController extends Controller
|
||||||
|
|
@ -37,9 +41,9 @@ class HomeController extends Controller
|
||||||
return view('home');
|
return view('home');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function settingsAbout() {
|
public function settingsAbout(Request $request) {
|
||||||
|
|
||||||
$data = Request::all();
|
$data = $request->all();
|
||||||
|
|
||||||
$valid = Validator::make($data, [
|
$valid = Validator::make($data, [
|
||||||
'body' => ['required', 'string', 'min:2', 'max:180'],
|
'body' => ['required', 'string', 'min:2', 'max:180'],
|
||||||
|
|
@ -51,11 +55,7 @@ class HomeController extends Controller
|
||||||
return Response()->json(['message'=>$error, 'badInputs'=>[array_keys($messages)]]);
|
return Response()->json(['message'=>$error, 'badInputs'=>[array_keys($messages)]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($_POST['token'])) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
$user = AuthHelper::GetCurrentUser($request);
|
||||||
|
|
||||||
$user = User::where('token', $_POST['token'])->first();
|
|
||||||
|
|
||||||
if (!$user) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
|
||||||
|
|
||||||
$user->about = $_POST['body'];
|
$user->about = $_POST['body'];
|
||||||
$user->save();
|
$user->save();
|
||||||
|
|
@ -64,9 +64,9 @@ class HomeController extends Controller
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function createPost() {
|
public function createPost(Request $request) {
|
||||||
|
|
||||||
$data = Request::all();
|
$data = $request->all();
|
||||||
|
|
||||||
$valid = Validator::make($data, [
|
$valid = Validator::make($data, [
|
||||||
'title' => ['required', 'string', 'min:3', 'max:38'],
|
'title' => ['required', 'string', 'min:3', 'max:38'],
|
||||||
|
|
@ -80,10 +80,8 @@ class HomeController extends Controller
|
||||||
return Response()->json(['message'=>$error, 'badInputs'=>[array_keys($messages)]]);
|
return Response()->json(['message'=>$error, 'badInputs'=>[array_keys($messages)]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($_POST['token'])) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
$meta = AuthHelper::GetCurrentUser($request);
|
||||||
|
|
||||||
$meta = User::where('token', $_POST['token'])->first();
|
|
||||||
|
|
||||||
if (!$meta) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
if (!$meta) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
||||||
|
|
||||||
if (!isset($_POST['creator_id'])) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
if (!isset($_POST['creator_id'])) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
||||||
|
|
@ -112,9 +110,105 @@ class HomeController extends Controller
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function createFeed(Request $request) {
|
||||||
|
|
||||||
|
$data = $request->all();
|
||||||
|
|
||||||
|
$valid = Validator::make($data, [
|
||||||
|
'body' => ['required', 'string', 'min:3', 'max:245'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($valid->stopOnFirstFailure()->fails()) {
|
||||||
|
$error = $valid->errors()->first();
|
||||||
|
$messages = $valid->messages()->get('*');
|
||||||
|
return Response()->json(['message'=>$error, 'badInputs'=>[array_keys($messages)]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = AuthHelper::GetCurrentUser($request);
|
||||||
|
|
||||||
|
if (!$user) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
||||||
|
|
||||||
|
$feed = new Feed;
|
||||||
|
$feed->user_id = $user->id;
|
||||||
|
$feed->body = $request->input('body');
|
||||||
|
$feed->save();
|
||||||
|
|
||||||
|
$friends = Friend::where('status', 1)->where('recieved_id', $user->id)->orWhere('sent_id', $user->id)->get()->toArray();
|
||||||
|
$actualFriends = [];
|
||||||
|
|
||||||
|
foreach ($friends as $friend) {
|
||||||
|
if ($friend['recieved_id'] == $user->id) {
|
||||||
|
array_push($actualFriends, $friend['sent_id']);
|
||||||
|
}else{
|
||||||
|
array_push($actualFriends, $friend['recieved_id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$newFeed = Feed::whereIn('user_id', $actualFriends)->orWhere('user_id', $user->id)->orderBy('created_at', 'desc')->paginate(15);
|
||||||
|
|
||||||
|
foreach ($newFeed as &$singleFeed) {
|
||||||
|
$creator = User::where('id', $singleFeed['user_id'])->first();
|
||||||
|
$singleFeed['creatorName'] = $creator->username;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Response()->json(['message'=>'Success!', 'badInputs'=>[], "data"=>$newFeed]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addFriend(Request $request, $id) {
|
||||||
|
|
||||||
|
$user = User::where('id', $id)->first();
|
||||||
|
|
||||||
|
if (!$user) {return Response()->json(['message'=>'No user.', 'badInputs'=>['title']]);}
|
||||||
|
|
||||||
|
$meta = AuthHelper::GetCurrentUser($request);
|
||||||
|
|
||||||
|
if (!$meta) {return Response()->json(['message'=>'System error.', 'badInputs'=>['title']]);}
|
||||||
|
|
||||||
|
if (!isset($_POST['decision'])) {return Response()->json(['message'=>'System error.', 'badInputs'=>['title']]);}
|
||||||
|
|
||||||
|
switch($_POST['decision']) {
|
||||||
|
case 'remove':
|
||||||
|
if ($meta && !array_intersect($meta->getFriends('id', null, null), [$user->id]))
|
||||||
|
return Response()->json(['message'=>'Not Friends.', 'badInputs'=>['title']]);
|
||||||
|
elseif ($meta && array_intersect($meta->getFriends('pending', 'id', null), [$user->id]))
|
||||||
|
return Response()->json(['message'=>'Already Pending.', 'badInputs'=>['title']]);
|
||||||
|
|
||||||
|
$friend = $meta->getFriends('remove', null, $user->id);
|
||||||
|
|
||||||
|
return Response()->json(['message'=>'Success!', 'badInputs'=>[], "data"=>false]);
|
||||||
|
break;
|
||||||
|
case 'accept':
|
||||||
|
if ($meta && array_intersect($meta->getFriends('id', null, null), [$user->id]))
|
||||||
|
return Response()->json(['message'=>'Already Friends.', 'badInputs'=>['title']]);
|
||||||
|
|
||||||
|
$friend = $meta->getFriends('accept', null, $user->id);
|
||||||
|
|
||||||
|
return Response()->json(['message'=>'Success!', 'badInputs'=>[], "data"=>true]);
|
||||||
|
break;
|
||||||
|
case 'add':
|
||||||
|
if ($meta && array_intersect($meta->getFriends('id', null, null), [$user->id]))
|
||||||
|
return Response()->json(['message'=>'Already Friends.', 'badInputs'=>['title']]);
|
||||||
|
elseif ($meta && array_intersect($meta->getFriends('pending', 'id', null), [$user->id]))
|
||||||
|
return Response()->json(['message'=>'Already Pending.', 'badInputs'=>['title']]);
|
||||||
|
|
||||||
|
$friend = new Friend;
|
||||||
|
$friend->sent_id = $meta->id;
|
||||||
|
$friend->recieved_id = $user->id;
|
||||||
|
$friend->status = 0;
|
||||||
|
$friend->save();
|
||||||
|
|
||||||
|
return Response()->json(['message'=>'Success!', 'badInputs'=>[], "data"=>'pending']);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public function createReply($id) {
|
public function createReply($id) {
|
||||||
|
|
||||||
$data = Request::all();
|
$data = $request->all();
|
||||||
|
|
||||||
$valid = Validator::make($data, [
|
$valid = Validator::make($data, [
|
||||||
'body' => ['required', 'string', 'min:3', 'max:380'],
|
'body' => ['required', 'string', 'min:3', 'max:380'],
|
||||||
|
|
@ -126,10 +220,8 @@ class HomeController extends Controller
|
||||||
return Response()->json(['message'=>$error, 'badInputs'=>[array_keys($messages)]]);
|
return Response()->json(['message'=>$error, 'badInputs'=>[array_keys($messages)]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($_POST['token'])) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
$meta = AuthHelper::GetCurrentUser($request);
|
||||||
|
|
||||||
$meta = User::where('token', $_POST['token'])->first();
|
|
||||||
|
|
||||||
if (!$meta) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
if (!$meta) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
||||||
|
|
||||||
if (!isset($_POST['creator_id'])) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
if (!isset($_POST['creator_id'])) {return Response()->json(['message'=>'System error', 'badInputs'=>['title']]);}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ class UserController extends Controller
|
||||||
|
|
||||||
if($currentUser) {
|
if($currentUser) {
|
||||||
return Response()->json([
|
return Response()->json([
|
||||||
'data' => []
|
'data' => $currentUser
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
return Response()->json([
|
return Response()->json([
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class Feed extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $table = 'feeds';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class Friend extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $table = 'friends';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class RoleSet extends Model
|
||||||
|
{
|
||||||
|
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $table = 'role_sets';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -15,4 +15,138 @@ class User extends Model
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $connection = 'mysql-membership';
|
protected $connection = 'mysql-membership';
|
||||||
|
|
||||||
|
protected $hidden = [
|
||||||
|
'password',
|
||||||
|
'remember_token',
|
||||||
|
'email',
|
||||||
|
'email_verified_at'
|
||||||
|
];
|
||||||
|
|
||||||
|
public function getFriends($decision, $pending, $id) {
|
||||||
|
|
||||||
|
switch($decision) {
|
||||||
|
case 'id':
|
||||||
|
$friends = Friend::where('status', 1)->where('recieved_id', $this->id)->orWhere('sent_id', $this->id)->get()->toArray();
|
||||||
|
$actualFriends = [];
|
||||||
|
|
||||||
|
foreach ($friends as $friend) {
|
||||||
|
if ($friend['recieved_id'] == $this->id) {
|
||||||
|
array_push($actualFriends, $friend['sent_id']);
|
||||||
|
}else{
|
||||||
|
array_push($actualFriends, $friend['recieved_id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $actualFriends;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'account':
|
||||||
|
$friends = Friend::where('status', 1)->where('recieved_id', $this->id)->orWhere('sent_id', $this->id)->get()->toArray();
|
||||||
|
$actualFriends = [];
|
||||||
|
|
||||||
|
foreach ($friends as $friend) {
|
||||||
|
if ($friend['recieved_id'] == $this->id) {
|
||||||
|
$friendUser = User::where('id', $friend['sent_id'])->first();
|
||||||
|
array_push($actualFriends, $friendUser);
|
||||||
|
}else{
|
||||||
|
$friendUser = User::where('id', $friend['recieved_id'])->first();
|
||||||
|
array_push($actualFriends, $friendUser);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $actualFriends;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'remove':
|
||||||
|
$friends = Friend::where('status', 1)->where('recieved_id', $this->id)->orWhere('sent_id', $this->id)->get()->toArray();
|
||||||
|
$actualFriends = [];
|
||||||
|
|
||||||
|
foreach ($friends as $friend) {
|
||||||
|
if ($friend['recieved_id'] == $this->id) {
|
||||||
|
$friendUserMeta = Friend::where('sent_id', $id)->delete();
|
||||||
|
}else{
|
||||||
|
$friendUserMeta = Friend::where('recieved_id', $id)->delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'accept':
|
||||||
|
$friends = Friend::where('status', 0)->where('recieved_id', $this->id)->orWhere('sent_id', $this->id)->get()->toArray();
|
||||||
|
$actualFriends = [];
|
||||||
|
|
||||||
|
foreach ($friends as $friend) {
|
||||||
|
if ($friend['recieved_id'] == $this->id) {
|
||||||
|
$friendUserMeta = Friend::where('sent_id', $id)->first();
|
||||||
|
$friendUserMeta->status = 1;
|
||||||
|
$friendUserMeta->save();
|
||||||
|
}else{
|
||||||
|
$friendUserMeta = Friend::where('recieved_id', $id)->first();
|
||||||
|
$friendUserMeta->status = 1;
|
||||||
|
$friendUserMeta->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'pending':
|
||||||
|
switch($pending) {
|
||||||
|
case 'id':
|
||||||
|
$friends = Friend::where('status', 0)->where('recieved_id', $this->id)->orWhere('sent_id', $this->id)->get()->toArray();
|
||||||
|
$actualFriends = [];
|
||||||
|
|
||||||
|
foreach ($friends as $friend) {
|
||||||
|
if ($friend['recieved_id'] == $this->id) {
|
||||||
|
array_push($actualFriends, $friend['sent_id']);
|
||||||
|
}else{
|
||||||
|
array_push($actualFriends, $friend['recieved_id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $actualFriends;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'account':
|
||||||
|
$friends = Friend::where('status', 0)->where('recieved_id', $this->id)->orWhere('sent_id', $this->id)->get()->toArray();
|
||||||
|
$actualFriends = [];
|
||||||
|
|
||||||
|
foreach ($friends as $friend) {
|
||||||
|
if ($friend['recieved_id'] == $this->id) {
|
||||||
|
$friendUser = User::where('id', $friend['sent_id'])->first();
|
||||||
|
array_push($actualFriends, $friendUser);
|
||||||
|
}else{
|
||||||
|
$friendUser = User::where('id', $friend['recieved_id'])->first();
|
||||||
|
array_push($actualFriends, $friendUser);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $actualFriends;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'checkSent':
|
||||||
|
$friends = Friend::where('status', 0)->where('recieved_id', $this->id)->orWhere('sent_id', $this->id)->get()->toArray();
|
||||||
|
$actualFriends = [];
|
||||||
|
|
||||||
|
foreach ($friends as $friend) {
|
||||||
|
if ($friend['recieved_id'] == $this->id && $friend['sent_id'] == $id) {
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,4 +15,7 @@ class UserSession extends Model
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $connection = 'mysql-membership';
|
protected $connection = 'mysql-membership';
|
||||||
|
|
||||||
|
protected $table = 'user_sessions';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,8 @@ return [
|
||||||
'url' => env('DATABASE_URL'),
|
'url' => env('DATABASE_URL'),
|
||||||
'host' => env('DB_HOST', '127.0.0.1'),
|
'host' => env('DB_HOST', '127.0.0.1'),
|
||||||
'port' => env('DB_PORT', '3306'),
|
'port' => env('DB_PORT', '3306'),
|
||||||
'database' => env('DB_PRIMARY_DATABASE', 'forge'),
|
'database' => env('DB_PRIMARY_DATABASE', 'gtoriadev_primary'),
|
||||||
'username' => env('DB_USERNAME', 'forge'),
|
'username' => env('DB_USERNAME', 'gtoriadev_primary'),
|
||||||
'password' => env('DB_PASSWORD', ''),
|
'password' => env('DB_PASSWORD', ''),
|
||||||
'unix_socket' => env('DB_SOCKET', ''),
|
'unix_socket' => env('DB_SOCKET', ''),
|
||||||
'charset' => 'utf8mb4',
|
'charset' => 'utf8mb4',
|
||||||
|
|
@ -68,8 +68,8 @@ return [
|
||||||
'url' => env('DATABASE_URL'),
|
'url' => env('DATABASE_URL'),
|
||||||
'host' => env('DB_HOST', '127.0.0.1'),
|
'host' => env('DB_HOST', '127.0.0.1'),
|
||||||
'port' => env('DB_PORT', '3306'),
|
'port' => env('DB_PORT', '3306'),
|
||||||
'database' => env('DB_FFLAG_DATABASE', 'forge'),
|
'database' => env('DB_FFLAG_DATABASE', 'gtoriadev_primary'),
|
||||||
'username' => env('DB_USERNAME', 'forge'),
|
'username' => env('DB_USERNAME', 'gtoriadev_primary'),
|
||||||
'password' => env('DB_PASSWORD', ''),
|
'password' => env('DB_PASSWORD', ''),
|
||||||
'unix_socket' => env('DB_SOCKET', ''),
|
'unix_socket' => env('DB_SOCKET', ''),
|
||||||
'charset' => 'utf8mb4',
|
'charset' => 'utf8mb4',
|
||||||
|
|
@ -88,8 +88,8 @@ return [
|
||||||
'url' => env('DATABASE_URL'),
|
'url' => env('DATABASE_URL'),
|
||||||
'host' => env('DB_HOST', '127.0.0.1'),
|
'host' => env('DB_HOST', '127.0.0.1'),
|
||||||
'port' => env('DB_PORT', '3306'),
|
'port' => env('DB_PORT', '3306'),
|
||||||
'database' => env('DB_MEMBERSHIP_DATABASE', 'forge'),
|
'database' => env('DB_MEMBERSHIP_DATABASE', 'gtoriadev_primary'),
|
||||||
'username' => env('DB_USERNAME', 'forge'),
|
'username' => env('DB_USERNAME', 'gtoriadev_primary'),
|
||||||
'password' => env('DB_PASSWORD', ''),
|
'password' => env('DB_PASSWORD', ''),
|
||||||
'unix_socket' => env('DB_SOCKET', ''),
|
'unix_socket' => env('DB_SOCKET', ''),
|
||||||
'charset' => 'utf8mb4',
|
'charset' => 'utf8mb4',
|
||||||
|
|
@ -108,8 +108,8 @@ return [
|
||||||
'url' => env('DATABASE_URL'),
|
'url' => env('DATABASE_URL'),
|
||||||
'host' => env('DB_HOST', '127.0.0.1'),
|
'host' => env('DB_HOST', '127.0.0.1'),
|
||||||
'port' => env('DB_PORT', '5432'),
|
'port' => env('DB_PORT', '5432'),
|
||||||
'database' => env('DB_PRIMARY_DATABASE', 'forge'),
|
'database' => env('DB_PRIMARY_DATABASE', 'gtoriadev_primary'),
|
||||||
'username' => env('DB_USERNAME', 'forge'),
|
'username' => env('DB_USERNAME', 'gtoriadev_primary'),
|
||||||
'password' => env('DB_PASSWORD', ''),
|
'password' => env('DB_PASSWORD', ''),
|
||||||
'charset' => 'utf8',
|
'charset' => 'utf8',
|
||||||
'prefix' => '',
|
'prefix' => '',
|
||||||
|
|
@ -123,8 +123,8 @@ return [
|
||||||
'url' => env('DATABASE_URL'),
|
'url' => env('DATABASE_URL'),
|
||||||
'host' => env('DB_HOST', 'localhost'),
|
'host' => env('DB_HOST', 'localhost'),
|
||||||
'port' => env('DB_PORT', '1433'),
|
'port' => env('DB_PORT', '1433'),
|
||||||
'database' => env('DB_PRIMARY_DATABASE', 'forge'),
|
'database' => env('DB_PRIMARY_DATABASE', 'gtoriadev_primary'),
|
||||||
'username' => env('DB_USERNAME', 'forge'),
|
'username' => env('DB_USERNAME', 'gtoriadev_primary'),
|
||||||
'password' => env('DB_PASSWORD', ''),
|
'password' => env('DB_PASSWORD', ''),
|
||||||
'charset' => 'utf8',
|
'charset' => 'utf8',
|
||||||
'prefix' => '',
|
'prefix' => '',
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ class CreateUsersTable extends Migration
|
||||||
$table->string('password');
|
$table->string('password');
|
||||||
$table->integer('bank')->default(15);
|
$table->integer('bank')->default(15);
|
||||||
$table->string('about')->nullable();
|
$table->string('about')->nullable();
|
||||||
|
$table->json('rolesets')->default('[1]');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateRoleSetsTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('role_sets', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('title');
|
||||||
|
//may require more idk yet.
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('role_sets');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateFeedsTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('feeds', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->integer('user_id');
|
||||||
|
$table->string('body');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('feeds');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateFriendsTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('friends', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->integer('recieved_id');
|
||||||
|
$table->integer('sent_id');
|
||||||
|
$table->boolean('status')->default(0); //0 = pending, 1 = accepted, 2 = rejected & row is deleted.
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('friends');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -65,7 +65,9 @@ const App = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetchUser() {
|
function fetchUser() {
|
||||||
axios.get(`${protocol}apis.${url}/v1/user/settings`)
|
const body = new FormData();
|
||||||
|
body.append('token', encodeURIComponent(getCookie(`gtok`)));
|
||||||
|
axios.get(`${protocol}apis.${url}/v1/user/settings`, body)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if(!response.data.error)
|
if(!response.data.error)
|
||||||
setUser(response.data.data);
|
setUser(response.data.data);
|
||||||
|
|
@ -116,7 +118,7 @@ const App = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(async ()=>{
|
useEffect(async ()=>{
|
||||||
fetchUser();
|
await fetchUser();
|
||||||
updateBanners();
|
updateBanners();
|
||||||
updateOfflineStatus();
|
updateOfflineStatus();
|
||||||
setInterval(updateBanners, 2*60*1000 /* 2 mins */);
|
setInterval(updateBanners, 2*60*1000 /* 2 mins */);
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,9 @@ const CreatePost = (props) => {
|
||||||
const fetchCategories = async () => {
|
const fetchCategories = async () => {
|
||||||
const body = new FormData();
|
const body = new FormData();
|
||||||
body.append('token', encodeURIComponent(getCookie(`gtok`)));
|
body.append('token', encodeURIComponent(getCookie(`gtok`)));
|
||||||
await axios.post(`${protocol}apis.${url}/fetch/categories/post`, body, {headers: {'X-CSRF-TOKEN': document.querySelector(`meta[name="csrf-token"]`).content, "X-Requested-With":"XMLHttpRequest"}}).then(async data=>{
|
axios.post(`${protocol}apis.${url}/fetch/categories/post`, body, {headers: {'X-CSRF-TOKEN': document.querySelector(`meta[name="csrf-token"]`).content, "X-Requested-With":"XMLHttpRequest"}}).then(async data=>{
|
||||||
const res = data.data;
|
const res = data.data;
|
||||||
await setCategories({categories: res.categories});
|
setCategories({categories: res.categories});
|
||||||
}).catch(error=>{console.log(error);});
|
}).catch(error=>{console.log(error);});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -58,7 +58,7 @@ const CreatePost = (props) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
waitingForSubmission || !categories.categories? <Loader/> :
|
waitingForSubmission || categories.categories.length <= 0 ? <Loader/> :
|
||||||
<Card>
|
<Card>
|
||||||
<CardTitle>Create a new Post</CardTitle>
|
<CardTitle>Create a new Post</CardTitle>
|
||||||
<div className="p-2 row">
|
<div className="p-2 row">
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import Loader from '../Components/Loader.js';
|
||||||
|
|
||||||
import { GenericErrorModal } from './Errors.js';
|
import { GenericErrorModal } from './Errors.js';
|
||||||
import { MiniCard, MiniCardTitle } from '../Components/Card.js';
|
import { MiniCard, MiniCardTitle } from '../Components/Card.js';
|
||||||
|
import { paginate } from '../helpers/utils.js';
|
||||||
|
|
||||||
var url = Config.BaseUrl.replace('http://', '');
|
var url = Config.BaseUrl.replace('http://', '');
|
||||||
var protocol = Config.Protocol;
|
var protocol = Config.Protocol;
|
||||||
|
|
@ -20,13 +21,58 @@ var protocol = Config.Protocol;
|
||||||
const Dashboard = (props) => {
|
const Dashboard = (props) => {
|
||||||
|
|
||||||
const [state, setState] = useState({loading: true});
|
const [state, setState] = useState({loading: true});
|
||||||
const [feedState, setFeedState] = useState({loading: true});
|
const [validity, setValidity] = useState({error: false, message: ``, inputs: []});
|
||||||
|
const [feedState, setFeedState] = useState({loading: true, posts: {posts: [], meta: [], currentPage: 1}});
|
||||||
const user = props.user;
|
const user = props.user;
|
||||||
|
|
||||||
|
const createFeed = async () => {
|
||||||
|
setFeedState({...feedState.posts, loading: true});
|
||||||
|
await axios.post(`${protocol}apis.${url}/api/create/feed`, new FormData(document.getElementById(`form`)), {headers: {"X-Requested-With":"XMLHttpRequest"}}).then(data=>{
|
||||||
|
const res = data.data;
|
||||||
|
if (res.badInputs.length >= 1) {
|
||||||
|
setValidity({error: true, message:res.message, inputs: res.badInputs});
|
||||||
|
setTimeout(()=>{setValidity({...validity, error: false, inputs: res.badInputs});}, 4000);
|
||||||
|
setFeedState({...feedState, loading: false});
|
||||||
|
}else{
|
||||||
|
document.getElementById('input').value = "";
|
||||||
|
setFeedState({loading: false, posts: {...feedState.posts, posts: res.data.data, meta: res.data}});
|
||||||
|
}
|
||||||
|
}).catch(error=>{console.log(error);});
|
||||||
|
}
|
||||||
|
|
||||||
|
const fetchFeed = async () => {
|
||||||
|
await axios.get(`${protocol}apis.${url}/fetch/feed?page=${feedState.posts.currentPage}`, {headers: {"X-Requested-With":"XMLHttpRequest"}}).then(data=>{
|
||||||
|
const res = data.data;
|
||||||
|
setFeedState({loading: false, posts: {...feedState.posts,posts: res.data.data, meta: res.data}});
|
||||||
|
}).catch(error=>{console.log(error);});
|
||||||
|
}
|
||||||
|
|
||||||
|
const paginatePosts = async (decision) => {
|
||||||
|
paginate(decision, feedState.posts.currentPage, feedState.posts.meta).then(res=>{
|
||||||
|
switch(res){
|
||||||
|
case "increase":
|
||||||
|
setFeedState({...feedState, posts: {...feedState.posts, currentPage: feedState.posts.currentPage+1}});
|
||||||
|
break;
|
||||||
|
case "decrease":
|
||||||
|
setFeedState({...feedState, posts: {...feedState.posts, currentPage: feedState.posts.currentPage-1}});
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}).catch(error=>console.log(error));
|
||||||
|
}
|
||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
SetTitle(`Dashboard`);
|
SetTitle(`Dashboard`);
|
||||||
|
fetchFeed();
|
||||||
setState({loading: false});
|
setState({loading: false});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(async()=>{
|
||||||
|
setState({loading: true});
|
||||||
|
await fetchFeed();
|
||||||
|
setState({loading: false});
|
||||||
|
}, [feedState.posts.currentPage]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
state.loading
|
state.loading
|
||||||
|
|
@ -63,11 +109,18 @@ const Dashboard = (props) => {
|
||||||
{/* Feed */}
|
{/* Feed */}
|
||||||
<div className='col-md-7 mt-3 mt-md-0'>
|
<div className='col-md-7 mt-3 mt-md-0'>
|
||||||
<h4>My Feed</h4>
|
<h4>My Feed</h4>
|
||||||
|
{validity.error?
|
||||||
|
<div className={`px-5 mb-10`}>
|
||||||
|
<div className={`error-dialog`}>
|
||||||
|
<p className={`mb-0`}>{validity.message}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
: null}
|
||||||
<div className='card mb-2'>
|
<div className='card mb-2'>
|
||||||
<div className='input-group p-2'>
|
<form className='input-group p-2' onSubmit={(e)=>{e.preventDefault();createFeed();}} id={`form`}>
|
||||||
<input type='text' className='form-control' placeholder='What are you up to?' area-label='What are you up to?' />
|
<input type='text' className='form-control' placeholder='What are you up to?' area-label='What are you up to?' name={`body`} id={`input`}/>
|
||||||
<button className='btn btn-secondary' type='button'>Share</button>
|
<button className='btn btn-secondary' type='submit'>Share</button>
|
||||||
</div>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{
|
{
|
||||||
feedState.loading
|
feedState.loading
|
||||||
|
|
@ -76,9 +129,30 @@ const Dashboard = (props) => {
|
||||||
<Loader />
|
<Loader />
|
||||||
</div>
|
</div>
|
||||||
:
|
:
|
||||||
<div className='card'>
|
<>
|
||||||
|
<div className='card flex-column pt-3 px-3 align-content-center'>
|
||||||
|
{feedState.posts.posts.map(feed=>(
|
||||||
|
<>
|
||||||
|
<Link className={`flex flex-row align-items-center a`} to={`/user/${feed.user_id}`}>
|
||||||
|
<div className={`flex flex-column justify-content-center text-center w-fit-content`}>
|
||||||
|
<p className='mr-10'>{feed.creatorName}</p>
|
||||||
|
<img src='/images/testing/headshot.png' className='img-fluid graphic-thumb' />
|
||||||
|
</div>
|
||||||
|
<div className={`flex align-items-center col`}>
|
||||||
|
<p className='mr-10'><i>"{feed.body}"</i></p>
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
<hr/>
|
||||||
|
</>
|
||||||
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
{feedState.posts.posts.length <= 0? <p>There isn't any posts right now!</p> : null}
|
||||||
|
{feedState.posts.posts.length >= 1?
|
||||||
|
<div className={`w-100 jcc alc row mt-15`}>
|
||||||
|
{feedState.posts.currentPage >= 2? <button className={`w-fit-content btn btn-primary mr-15`} onClick={(e)=>{paginatePosts(true);}}>Previous Page</button> : null}
|
||||||
|
{feedState.posts.currentPage < feedState.posts.meta.last_page? <button className={`w-fit-content btn btn-primary`} onClick={(e)=>{paginatePosts(false);}}>Next Page</button> : null}
|
||||||
|
</div> : null}
|
||||||
|
</>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,10 @@ var protocol = Config.Protocol;
|
||||||
|
|
||||||
const User = (props) => {
|
const User = (props) => {
|
||||||
|
|
||||||
|
const [validity, setValidity] = useState({error: false, message: ``, inputs: []});
|
||||||
const [state, setState] = useState(true);
|
const [state, setState] = useState(true);
|
||||||
const [user, setUser] = useState();
|
const [user, setUser] = useState();
|
||||||
|
const [isFriend, setFriend] = useState(false);
|
||||||
const metaUser = props.user;
|
const metaUser = props.user;
|
||||||
const userId = useParams().id;
|
const userId = useParams().id;
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
|
|
@ -29,34 +31,78 @@ const User = (props) => {
|
||||||
const body = new FormData();
|
const body = new FormData();
|
||||||
body.append('userId', userId);
|
body.append('userId', userId);
|
||||||
body.append('decision', `fetchedUser`);
|
body.append('decision', `fetchedUser`);
|
||||||
axios.post(`${protocol}apis.${url}/fetch/user`, body).then(async(data)=>{
|
axios.get(`${protocol}apis.${url}/fetch/user/${userId}`, body).then(async(data)=>{
|
||||||
const res = data.data;
|
const res = data.data;
|
||||||
if (!res) {history.push(`/`);}
|
if (!res) {history.push(`/`);}
|
||||||
SetTitle(`${res.data.username}`);
|
SetTitle(`${res.data.username}`);
|
||||||
|
setFriend(res.data.isFriend);
|
||||||
await setUser(res.data);
|
await setUser(res.data);
|
||||||
return;
|
return;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const addFriend = async (decision) => {
|
||||||
|
const body = new FormData();
|
||||||
|
body.append('decision', decision);
|
||||||
|
setState(true);
|
||||||
|
axios.post(`${protocol}apis.${url}/api/add/user/${userId}`, body).then(async(data)=>{
|
||||||
|
const res = data.data;
|
||||||
|
if (res.badInputs.length >= 1) {
|
||||||
|
setValidity({error: true, message:res.message, inputs: res.badInputs});
|
||||||
|
setTimeout(()=>{setValidity({...validity, error: false, inputs: res.badInputs});}, 4000);
|
||||||
|
setFeedState({...feedState, loading: false});
|
||||||
|
setState(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await setFriend(res.data);
|
||||||
|
setState(false);
|
||||||
|
return;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
useEffect(async()=>{
|
useEffect(async()=>{
|
||||||
await fetchUser();
|
await fetchUser();
|
||||||
setState(false);
|
setState(false);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
!user
|
!user || state
|
||||||
?
|
?
|
||||||
<Loader />
|
<Loader />
|
||||||
:
|
:
|
||||||
<div className={`row`}>
|
<div className={`row`}>
|
||||||
|
{validity.error?
|
||||||
|
<div className={`px-5 mb-10`}>
|
||||||
|
<div className={`error-dialog`}>
|
||||||
|
<p className={`mb-0`}>{validity.message}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
: null}
|
||||||
<div className={`col`}>
|
<div className={`col`}>
|
||||||
<Card className={`justify-content-center`} padding={true}>
|
<Card className={`justify-content-center`} padding={true}>
|
||||||
<CardTitle>{user.username}</CardTitle>
|
<CardTitle>{user.username}</CardTitle>
|
||||||
<p>[Avatar.]</p>
|
<img src='/images/testing/avatar.png' className='img-fluid gt-charimg' />
|
||||||
|
<hr/>
|
||||||
|
<div className={`flex flex-column justify-content-center align-items-center`}>
|
||||||
|
{
|
||||||
|
!metaUser? null :
|
||||||
|
userId == metaUser.id? <p>This is you!</p> :
|
||||||
|
isFriend && isFriend == `pending`?
|
||||||
|
<button className={`btn btn-dark disabled w-fit-content`}>Pending...</button>
|
||||||
|
: isFriend && isFriend == `needToAccept`?
|
||||||
|
<button className={`btn btn-success w-fit-content`} onClick={(e)=>{addFriend(`accept`);}}>Accept Friend Request</button>
|
||||||
|
: isFriend?
|
||||||
|
<button className={`btn btn-danger w-fit-content`} onClick={(e)=>{addFriend(`remove`);}}>Remove Friend</button>
|
||||||
|
:
|
||||||
|
<button className={`btn btn-success w-fit-content`} onClick={(e)=>{addFriend(`add`);}}>Add Friend</button>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
<hr/>
|
||||||
|
<p>"{user.about? user.about : `${user.username} doesn't have an about section!`}" - {user.username}</p>
|
||||||
</Card>
|
</Card>
|
||||||
</div>
|
</div>
|
||||||
<div className={`col justify-content-center`}>
|
<div className={`col justify-content-center`}>
|
||||||
<p>"{user.about? user.about : `${user.username} doesn't have an about section!`}" - {user.username}</p>
|
<p>Something else idk.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,16 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,w
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.a {
|
||||||
|
color: inherit !important;
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.a:hover {
|
||||||
|
color: inherit !important;
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
// Loader
|
// Loader
|
||||||
|
|
||||||
.gtoria-loader-center {
|
.gtoria-loader-center {
|
||||||
|
|
@ -1011,6 +1021,12 @@ p {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.graphic-thumb {
|
||||||
|
height: 60px;
|
||||||
|
width: 60px;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
.graphic-post {
|
.graphic-post {
|
||||||
padding: 1rem 1rem;
|
padding: 1rem 1rem;
|
||||||
text-align: start;
|
text-align: start;
|
||||||
|
|
|
||||||
|
|
@ -34,10 +34,16 @@ Route::post('/v1/user/login', 'AuthController@Login');
|
||||||
Route::post('/v1/user/logout', 'AuthController@Logout');
|
Route::post('/v1/user/logout', 'AuthController@Logout');
|
||||||
Route::get('/v1/user/settings', 'UserController@GetSettings');
|
Route::get('/v1/user/settings', 'UserController@GetSettings');
|
||||||
|
|
||||||
|
Route::get('/fetch/user/{id}', 'Controller@fetchUser');
|
||||||
|
|
||||||
Route::get('/banners/data', 'BannerController@getBanners');
|
Route::get('/banners/data', 'BannerController@getBanners');
|
||||||
|
|
||||||
Route::get('/games/metadata', 'GamesController@isAvailable');
|
Route::get('/games/metadata', 'GamesController@isAvailable');
|
||||||
|
|
||||||
|
Route::get('/fetch/feed', 'Controller@fetchFeed');
|
||||||
|
|
||||||
|
Route::post('/api/create/feed', 'HomeController@createFeed');
|
||||||
|
|
||||||
Route::get('/fetch/categories', 'Controller@fetchCategories');
|
Route::get('/fetch/categories', 'Controller@fetchCategories');
|
||||||
|
|
||||||
Route::post('/fetch/categories/post', 'Controller@fetchCategoriesFP');
|
Route::post('/fetch/categories/post', 'Controller@fetchCategoriesFP');
|
||||||
|
|
@ -52,6 +58,8 @@ Route::get('/fetch/posts/{id}', 'Controller@fetchPosts');
|
||||||
|
|
||||||
Route::get('/fetch/post/{id}', 'Controller@fetchPost');
|
Route::get('/fetch/post/{id}', 'Controller@fetchPost');
|
||||||
|
|
||||||
|
Route::post('/api/add/user/{id}', 'HomeController@addFriend');
|
||||||
|
|
||||||
Route::post('/api/create/forum', 'HomeController@createPost');
|
Route::post('/api/create/forum', 'HomeController@createPost');
|
||||||
|
|
||||||
Route::post('/api/create/reply/{id}', 'HomeController@createReply');
|
Route::post('/api/create/reply/{id}', 'HomeController@createReply');
|
||||||
|
|
|
||||||
|
|
@ -67,4 +67,6 @@ Route::get('/games', function(){
|
||||||
return view('main');
|
return view('main');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Route::get('/account/logout', 'AuthController@logout');
|
||||||
|
|
||||||
Route::get('/test123', 'GridTest@generateThumbnail');
|
Route::get('/test123', 'GridTest@generateThumbnail');
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue