Merge branch 'main' of https://github.com/Thomasluigi07/MORBLOX-WEBSITE
This commit is contained in:
commit
d0a80ea62b
|
|
@ -29,6 +29,13 @@ class LoginController extends Controller
|
|||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
|
||||
/**
|
||||
* Login username to be used by the controller.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $username;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
|
|
@ -37,5 +44,30 @@ class LoginController extends Controller
|
|||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest')->except('logout');
|
||||
$this->username = $this->findUsername();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the login username to be used by the controller.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function findUsername()
|
||||
{
|
||||
$login = request()->input('login');
|
||||
$fieldType = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'name';
|
||||
request()->merge([$fieldType => $login]);
|
||||
|
||||
return $fieldType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get username property.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function username()
|
||||
{
|
||||
return $this->username;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,9 +5,11 @@ namespace App\Http\Controllers\Auth;
|
|||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use App\Models\User;
|
||||
use App\Models\InviteKey;
|
||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
class RegisterController extends Controller
|
||||
{
|
||||
|
|
@ -65,11 +67,51 @@ class RegisterController extends Controller
|
|||
*/
|
||||
protected function create(array $data)
|
||||
{
|
||||
$this->verifyKey($data['key']);
|
||||
$invited_by = $this->getInviter($data['key']);
|
||||
$this->updateKeyTable($data['key']);
|
||||
|
||||
return User::create([
|
||||
'name' => $data['name'],
|
||||
'email' => $data['email'],
|
||||
'dob' => $data['dob'],
|
||||
'password' => Hash::make($data['password']),
|
||||
'badges' => [3],
|
||||
'invited_by' => $invited_by,
|
||||
]);
|
||||
}
|
||||
|
||||
protected function verifyKey($key)
|
||||
{
|
||||
$fetchKey = InviteKey::where('key', $key)->orderBy('id', 'desc')->first();
|
||||
|
||||
if (empty($fetchKey) || !$fetchKey->active) {
|
||||
throw ValidationException::withMessages(['key' => 'Incorrect invite key']);
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
protected function getInviter($key)
|
||||
{
|
||||
$fetchKey = InviteKey::where('key', $key)->orderBy('id', 'desc')->first();
|
||||
|
||||
return $fetchKey->created_by;
|
||||
}
|
||||
|
||||
protected function updateKeyTable($key) : void
|
||||
{
|
||||
if (!User::exists()) {
|
||||
$newId = 0;
|
||||
} else {
|
||||
$newId = User::orderBy('id', 'desc')->first()->id;
|
||||
}
|
||||
|
||||
$updateDetails = [
|
||||
'user_invited' => ++$newId,
|
||||
'active' => false,
|
||||
];
|
||||
|
||||
InviteKey::where('key', $key)->orderBy('id', 'desc')->first()->update($updateDetails);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,9 @@ class HomeController extends Controller
|
|||
*/
|
||||
public function index()
|
||||
{
|
||||
if (auth()->user()) {
|
||||
return redirect(route('home'));
|
||||
}
|
||||
return view('index');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Http\Request;
|
||||
use Webpatser\Uuid\Uuid;
|
||||
use App\Models\InviteKey;
|
||||
use App\Models\User;
|
||||
|
||||
class KeyController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$fetchKeys = InviteKey::where('created_by', Auth::id())->orderBy('id', 'desc')->get();
|
||||
$activeKey = InviteKey::where('created_by', Auth::id())->orderBy('id', 'desc')->first();
|
||||
|
||||
if (!$fetchKeys->isEmpty()) {
|
||||
if ($activeKey->created_at->addWeek()->gt(Carbon::now())) {
|
||||
$canCreate = false;
|
||||
} else {
|
||||
$canCreate = true;
|
||||
}
|
||||
} else {
|
||||
$canCreate = true;
|
||||
}
|
||||
|
||||
$data = [
|
||||
'canCreate' => $canCreate,
|
||||
'fetchKeys' => $fetchKeys,
|
||||
];
|
||||
|
||||
return view('invite.index')->with('data', $data);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$fetchKeys = InviteKey::where('created_by', Auth::id())->orderBy('id', 'desc')->get();
|
||||
$activeKey = InviteKey::where('created_by', Auth::id())->orderBy('id', 'desc')->first();
|
||||
|
||||
// Validation
|
||||
if (!$fetchKeys->isEmpty() && $activeKey->created_at->addWeek()->gt(Carbon::now())) {
|
||||
if (!User::isAdmin())
|
||||
abort(404);
|
||||
}
|
||||
|
||||
$key = new InviteKey;
|
||||
$key->key = Uuid::generate()->string;
|
||||
$key->created_by = Auth::id();
|
||||
$key->user_invited = 0;
|
||||
$key->save();
|
||||
|
||||
return redirect()->route('key_index');
|
||||
}
|
||||
}
|
||||
|
|
@ -2,9 +2,11 @@
|
|||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\User;
|
||||
|
||||
|
||||
class PageController extends Controller
|
||||
{
|
||||
/**
|
||||
|
|
@ -25,9 +27,33 @@ class PageController extends Controller
|
|||
public function profile($id)
|
||||
{
|
||||
$user = User::find($id);
|
||||
$badges = DB::table('badges')->get();
|
||||
|
||||
if (!$user) {
|
||||
abort(404);
|
||||
}
|
||||
return view('pages.profile')->with('user', $user);
|
||||
|
||||
$data = [
|
||||
'user' => $user,
|
||||
'badges' => $badges
|
||||
];
|
||||
|
||||
return view('pages.profile')->with('data', $data);
|
||||
}
|
||||
|
||||
public function users(Request $request)
|
||||
{
|
||||
if ($request->has('q')) {
|
||||
$users = DB::table('users')->where('name', 'LIKE', '%'.$request->q.'%')->paginate(10);
|
||||
} else {
|
||||
$users = User::paginate(10);
|
||||
}
|
||||
|
||||
return view('pages.users')->with('users', $users);
|
||||
}
|
||||
|
||||
public function settings()
|
||||
{
|
||||
return view('misc.settings');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,12 +37,14 @@ class Kernel extends HttpKernel
|
|||
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
||||
\App\Http\Middleware\VerifyCsrfToken::class,
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
\App\Http\Middleware\UserLastActivity::class,
|
||||
],
|
||||
|
||||
'api' => [
|
||||
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
|
||||
'throttle:api',
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Carbon\Carbon;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UserLastActivity
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (Auth::check()) {
|
||||
$expireTime = Carbon::now()->addMinute(2); // keep online for 2 min
|
||||
Cache::put('is_online_' . Auth::user()->id, true, $expireTime);
|
||||
|
||||
User::where('id', Auth::user()->id)->update(['last_seen' => Carbon::now()]);
|
||||
}
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class InviteKey extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
'key',
|
||||
'created_by',
|
||||
'user_invited',
|
||||
'active',
|
||||
];
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
|
|
@ -22,6 +23,8 @@ class User extends Authenticatable
|
|||
'email',
|
||||
'dob',
|
||||
'password',
|
||||
'badges',
|
||||
'invited_by',
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
@ -41,5 +44,15 @@ class User extends Authenticatable
|
|||
*/
|
||||
protected $casts = [
|
||||
'email_verified_at' => 'datetime',
|
||||
'badges' => 'array'
|
||||
];
|
||||
|
||||
public static function isAdmin()
|
||||
{
|
||||
if (Auth::guest() || !Auth::user()->admin) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@
|
|||
"laravel/framework": "^8.75",
|
||||
"laravel/sanctum": "^2.11",
|
||||
"laravel/tinker": "^2.5",
|
||||
"laravel/ui": "^3.4"
|
||||
"laravel/ui": "^3.4",
|
||||
"webpatser/laravel-uuid": "^4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"facade/ignition": "^2.5",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "cf14086919a839fe740e00554e4baff6",
|
||||
"content-hash": "25ae453eae609a277c5bbd141f21342f",
|
||||
"packages": [
|
||||
{
|
||||
"name": "asm89/stack-cors",
|
||||
|
|
@ -959,16 +959,16 @@
|
|||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v8.83.16",
|
||||
"version": "v8.83.17",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/framework.git",
|
||||
"reference": "6be5abd144faf517879af7298e9d79f06f250f75"
|
||||
"reference": "2cf142cd5100b02da248acad3988bdaba5635e16"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/6be5abd144faf517879af7298e9d79f06f250f75",
|
||||
"reference": "6be5abd144faf517879af7298e9d79f06f250f75",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/2cf142cd5100b02da248acad3988bdaba5635e16",
|
||||
"reference": "2cf142cd5100b02da248acad3988bdaba5635e16",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -1128,7 +1128,7 @@
|
|||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2022-06-07T15:09:06+00:00"
|
||||
"time": "2022-06-21T14:38:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/sanctum",
|
||||
|
|
@ -2995,16 +2995,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v5.4.9",
|
||||
"version": "v5.4.10",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "829d5d1bf60b2efeb0887b7436873becc71a45eb"
|
||||
"reference": "4d671ab4ddac94ee439ea73649c69d9d200b5000"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/829d5d1bf60b2efeb0887b7436873becc71a45eb",
|
||||
"reference": "829d5d1bf60b2efeb0887b7436873becc71a45eb",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/4d671ab4ddac94ee439ea73649c69d9d200b5000",
|
||||
"reference": "4d671ab4ddac94ee439ea73649c69d9d200b5000",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -3074,7 +3074,7 @@
|
|||
"terminal"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v5.4.9"
|
||||
"source": "https://github.com/symfony/console/tree/v5.4.10"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -3090,7 +3090,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-05-18T06:17:34+00:00"
|
||||
"time": "2022-06-26T13:00:04+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/css-selector",
|
||||
|
|
@ -3525,16 +3525,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/http-foundation",
|
||||
"version": "v5.4.9",
|
||||
"version": "v5.4.10",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-foundation.git",
|
||||
"reference": "6b0d0e4aca38d57605dcd11e2416994b38774522"
|
||||
"reference": "e7793b7906f72a8cc51054fbca9dcff7a8af1c1e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/6b0d0e4aca38d57605dcd11e2416994b38774522",
|
||||
"reference": "6b0d0e4aca38d57605dcd11e2416994b38774522",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/e7793b7906f72a8cc51054fbca9dcff7a8af1c1e",
|
||||
"reference": "e7793b7906f72a8cc51054fbca9dcff7a8af1c1e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -3578,7 +3578,7 @@
|
|||
"description": "Defines an object-oriented layer for the HTTP specification",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-foundation/tree/v5.4.9"
|
||||
"source": "https://github.com/symfony/http-foundation/tree/v5.4.10"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -3594,20 +3594,20 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-05-17T15:07:29+00:00"
|
||||
"time": "2022-06-19T13:13:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-kernel",
|
||||
"version": "v5.4.9",
|
||||
"version": "v5.4.10",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-kernel.git",
|
||||
"reference": "34b121ad3dc761f35fe1346d2f15618f8cbf77f8"
|
||||
"reference": "255ae3b0a488d78fbb34da23d3e0c059874b5948"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/34b121ad3dc761f35fe1346d2f15618f8cbf77f8",
|
||||
"reference": "34b121ad3dc761f35fe1346d2f15618f8cbf77f8",
|
||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/255ae3b0a488d78fbb34da23d3e0c059874b5948",
|
||||
"reference": "255ae3b0a488d78fbb34da23d3e0c059874b5948",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -3690,7 +3690,7 @@
|
|||
"description": "Provides a structured process for converting a Request into a Response",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-kernel/tree/v5.4.9"
|
||||
"source": "https://github.com/symfony/http-kernel/tree/v5.4.10"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -3706,20 +3706,20 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-05-27T07:09:08+00:00"
|
||||
"time": "2022-06-26T16:57:59+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/mime",
|
||||
"version": "v5.4.9",
|
||||
"version": "v5.4.10",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/mime.git",
|
||||
"reference": "2b3802a24e48d0cfccf885173d2aac91e73df92e"
|
||||
"reference": "02265e1e5111c3cd7480387af25e82378b7ab9cc"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/mime/zipball/2b3802a24e48d0cfccf885173d2aac91e73df92e",
|
||||
"reference": "2b3802a24e48d0cfccf885173d2aac91e73df92e",
|
||||
"url": "https://api.github.com/repos/symfony/mime/zipball/02265e1e5111c3cd7480387af25e82378b7ab9cc",
|
||||
"reference": "02265e1e5111c3cd7480387af25e82378b7ab9cc",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -3773,7 +3773,7 @@
|
|||
"mime-type"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/mime/tree/v5.4.9"
|
||||
"source": "https://github.com/symfony/mime/tree/v5.4.10"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -3789,7 +3789,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-05-21T10:24:18+00:00"
|
||||
"time": "2022-06-09T12:22:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
|
|
@ -4845,16 +4845,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
"version": "v5.4.9",
|
||||
"version": "v5.4.10",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/string.git",
|
||||
"reference": "985e6a9703ef5ce32ba617c9c7d97873bb7b2a99"
|
||||
"reference": "4432bc7df82a554b3e413a8570ce2fea90e94097"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/985e6a9703ef5ce32ba617c9c7d97873bb7b2a99",
|
||||
"reference": "985e6a9703ef5ce32ba617c9c7d97873bb7b2a99",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/4432bc7df82a554b3e413a8570ce2fea90e94097",
|
||||
"reference": "4432bc7df82a554b3e413a8570ce2fea90e94097",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -4911,7 +4911,7 @@
|
|||
"utf8"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/string/tree/v5.4.9"
|
||||
"source": "https://github.com/symfony/string/tree/v5.4.10"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -4927,7 +4927,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-04-19T10:40:37+00:00"
|
||||
"time": "2022-06-26T15:57:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation",
|
||||
|
|
@ -5457,6 +5457,64 @@
|
|||
"source": "https://github.com/webmozarts/assert/tree/1.11.0"
|
||||
},
|
||||
"time": "2022-06-03T18:03:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "webpatser/laravel-uuid",
|
||||
"version": "4.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/webpatser/laravel-uuid.git",
|
||||
"reference": "df92ebbc5ea71ee9e0d6e2861178be42ef7eb330"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/webpatser/laravel-uuid/zipball/df92ebbc5ea71ee9e0d6e2861178be42ef7eb330",
|
||||
"reference": "df92ebbc5ea71ee9e0d6e2861178be42ef7eb330",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.0|^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"fakerphp/faker": "^1.9.1",
|
||||
"phpunit/phpunit": "^9.3.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"Webpatser\\Uuid\\UuidServiceProvider"
|
||||
],
|
||||
"aliases": {
|
||||
"Uuid": "Webpatser\\Uuid\\Uuid"
|
||||
}
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Webpatser\\Uuid\\": "src/Webpatser/Uuid/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Christoph Kempen",
|
||||
"email": "christoph@downsized.nl"
|
||||
}
|
||||
],
|
||||
"description": "Laravel package to generate and to validate a universally unique identifier (UUID) according to the RFC 4122 standard. Support for version 1, 3, 4 and 5 UUIDs are built-in.",
|
||||
"homepage": "https://github.com/webpatser/laravel-uuid",
|
||||
"keywords": [
|
||||
"UUID RFC4122"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/webpatser/laravel-uuid/issues",
|
||||
"source": "https://github.com/webpatser/laravel-uuid"
|
||||
},
|
||||
"time": "2021-03-09T07:19:24+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
|
|
@ -5917,16 +5975,16 @@
|
|||
},
|
||||
{
|
||||
"name": "laravel/sail",
|
||||
"version": "v1.14.10",
|
||||
"version": "v1.14.11",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/sail.git",
|
||||
"reference": "0ea5d683af4d189071efcdb9e83946c10dab82c3"
|
||||
"reference": "6edf45a247b3688e0d07e149570a62fd9bc11c73"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/sail/zipball/0ea5d683af4d189071efcdb9e83946c10dab82c3",
|
||||
"reference": "0ea5d683af4d189071efcdb9e83946c10dab82c3",
|
||||
"url": "https://api.github.com/repos/laravel/sail/zipball/6edf45a247b3688e0d07e149570a62fd9bc11c73",
|
||||
"reference": "6edf45a247b3688e0d07e149570a62fd9bc11c73",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -5973,7 +6031,7 @@
|
|||
"issues": "https://github.com/laravel/sail/issues",
|
||||
"source": "https://github.com/laravel/sail"
|
||||
},
|
||||
"time": "2022-06-09T07:10:28+00:00"
|
||||
"time": "2022-06-13T18:32:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mockery/mockery",
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class CreateUsersTable extends Migration
|
||||
{
|
||||
|
|
@ -25,6 +26,9 @@ class CreateUsersTable extends Migration
|
|||
$table->string('blurb')->default('Hello!');
|
||||
$table->rememberToken();
|
||||
$table->timestamps();
|
||||
$table->string('last_seen')->default(Carbon::now());
|
||||
$table->json('badges');
|
||||
$table->integer('invited_by');
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateBadgesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('badges', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('title');
|
||||
$table->string('description');
|
||||
$table->string('img');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('badges');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateInviteKeysTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('invite_keys', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('key', 36)->unique();
|
||||
$table->integer('created_by');
|
||||
$table->integer('user_invited');
|
||||
$table->boolean('active')->default(true);
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('invite_keys');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXQIBAAKBgQDAWrd/TwGJULsVRo06rCpznNmW4zLJK6LwkfTvG3wURFFBj9E9zuaKAOzHVRrHsWKJhq2BxSUze7OClgzgzFLRQHhRQFKn/skLPrV85bFakoK/dnt9h/Jyn2cD2A8Za6q90O3h9FSy9mLvCN07g07IXtauYZfOXvqyqOn4rAeUJQIDAQABAoGBAISbxddZo0iERIW1XtXtLVMI9iUEutVfZPSO2xogi5j5RD97o5gF1H+dhZ8iN9UloDYJiAJn5G6qwCWtxnEPy6NO4lMDgFMQtlpIIW9mafZ7m+AueYJtgO5elLUnFbOA39OcvFUleL9ded42yuB2wfsGdKl85+mHvn8j4zTmT0+9AkEA3H7NBFhIVf3Vj6iLXwPmamhou8T8b+HSXop0krrP/jDw/wHbl0DEJbQv+ypYdoXJo8XS2Hs39z20pCEsUo2/NwJBAN9T5aWXmVnymbdNUCDMjjer2d6Ey9ARyFgB07xHSod+HWlSCES8pcWwZZrP/I4cf2CEiAInfgak0kNNWLOWnYMCQDJEoj7UVaFtHiwDM8r0m6o0pXPxY8+p/wjYrdzpxBNiWv74EHT6Kf2ih7HOJJ7Yv3Cb4AbEiKzQH4evnGgxsp8CQQDRPK+ad/DLn0p5vMvoDv7oFfCoVM8IAMEuA3g3nKutSnGP7bWlgQHnuB9Z7qf3FagZ69HqAspGu0HsoJkMmX61AkAO5wTd+rja0MP7rT5xNVYBALtdYLWowBov4NCN7BVDkd0JzeTjMtDerirvEDuzDBrbyFtKV5rZjZpuotFc+5/t
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
|
@ -15,6 +15,33 @@
|
|||
text-align: center;
|
||||
background: linear-gradient(#f07575 10%, #e13b3b 49%, #d22 50%, #de2323 100%);
|
||||
}
|
||||
.warningtext {
|
||||
color: red;
|
||||
}
|
||||
.popupcontainer {
|
||||
top: 0%;
|
||||
position: fixed;
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 100000000;
|
||||
}
|
||||
.popup {
|
||||
color:#000000;
|
||||
text-align: center;
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
transform: translate(-50%, -50%);
|
||||
width: max-content;
|
||||
border-radius: 3px;
|
||||
border: 1px solid #3D414A;
|
||||
background: linear-gradient(#cacbcc 10%, #99999a 49%, #747474 50%, #2d2d2d 100%);
|
||||
}
|
||||
.navbar {
|
||||
height: 40px;
|
||||
margin: 0px;
|
||||
|
|
@ -89,7 +116,7 @@ background: linear-gradient(#f07575 10%, #e13b3b 49%, #d22 50%, #de2323 100%);
|
|||
padding-right: 5px;
|
||||
width: 50%;
|
||||
}
|
||||
.FeedContainerBox {
|
||||
.FeedContainerBox, .ProfileContainerBox {
|
||||
border-radius: 1px;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
|
|
@ -97,6 +124,7 @@ background: linear-gradient(#f07575 10%, #e13b3b 49%, #d22 50%, #de2323 100%);
|
|||
display: inline-flex;
|
||||
border: 1px solid #000000;
|
||||
border-width: 1px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
#btncontainer {
|
||||
margin-left: 75%;
|
||||
|
|
@ -294,4 +322,12 @@ a, #navbarusername {
|
|||
background-color: rgba(255, 255, 255, 0.3);
|
||||
padding-bottom: 5px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
.w-5 {
|
||||
display: none;
|
||||
}
|
||||
.flex {
|
||||
display: table;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
|
@ -0,0 +1,397 @@
|
|||
/******/ (() => { // webpackBootstrap
|
||||
/******/ var __webpack_modules__ = ({
|
||||
|
||||
/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[5].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[5].oneOf[1].use[2]!./resources/css/app.css":
|
||||
/*!*****************************************************************************************************************************************************************************************!*\
|
||||
!*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[5].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[5].oneOf[1].use[2]!./resources/css/app.css ***!
|
||||
\*****************************************************************************************************************************************************************************************/
|
||||
/***/ (() => {
|
||||
|
||||
throw new Error("Module build failed (from ./node_modules/css-loader/dist/cjs.js):\nError: Can't resolve '../img/animated.png' in 'C:\\wamp64\\www\\morblox-site\\resources\\css'\n at finishWithoutResolve (C:\\wamp64\\www\\morblox-site\\node_modules\\enhanced-resolve\\lib\\Resolver.js:309:18)\n at C:\\wamp64\\www\\morblox-site\\node_modules\\enhanced-resolve\\lib\\Resolver.js:386:15\n at C:\\wamp64\\www\\morblox-site\\node_modules\\enhanced-resolve\\lib\\Resolver.js:435:5\n at eval (eval at create (C:\\wamp64\\www\\morblox-site\\node_modules\\tapable\\lib\\HookCodeFactory.js:33:10), <anonymous>:16:1)\n at C:\\wamp64\\www\\morblox-site\\node_modules\\enhanced-resolve\\lib\\Resolver.js:435:5\n at eval (eval at create (C:\\wamp64\\www\\morblox-site\\node_modules\\tapable\\lib\\HookCodeFactory.js:33:10), <anonymous>:27:1)\n at C:\\wamp64\\www\\morblox-site\\node_modules\\enhanced-resolve\\lib\\DescriptionFilePlugin.js:87:43\n at C:\\wamp64\\www\\morblox-site\\node_modules\\enhanced-resolve\\lib\\Resolver.js:435:5\n at eval (eval at create (C:\\wamp64\\www\\morblox-site\\node_modules\\tapable\\lib\\HookCodeFactory.js:33:10), <anonymous>:15:1)\n at C:\\wamp64\\www\\morblox-site\\node_modules\\enhanced-resolve\\lib\\Resolver.js:435:5");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
|
||||
/*!****************************************************************************!*\
|
||||
!*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
|
||||
\****************************************************************************/
|
||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
var isOldIE = function isOldIE() {
|
||||
var memo;
|
||||
return function memorize() {
|
||||
if (typeof memo === 'undefined') {
|
||||
// Test for IE <= 9 as proposed by Browserhacks
|
||||
// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
|
||||
// Tests for existence of standard globals is to allow style-loader
|
||||
// to operate correctly into non-standard environments
|
||||
// @see https://github.com/webpack-contrib/style-loader/issues/177
|
||||
memo = Boolean(window && document && document.all && !window.atob);
|
||||
}
|
||||
|
||||
return memo;
|
||||
};
|
||||
}();
|
||||
|
||||
var getTarget = function getTarget() {
|
||||
var memo = {};
|
||||
return function memorize(target) {
|
||||
if (typeof memo[target] === 'undefined') {
|
||||
var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
|
||||
|
||||
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
|
||||
try {
|
||||
// This will throw an exception if access to iframe is blocked
|
||||
// due to cross-origin restrictions
|
||||
styleTarget = styleTarget.contentDocument.head;
|
||||
} catch (e) {
|
||||
// istanbul ignore next
|
||||
styleTarget = null;
|
||||
}
|
||||
}
|
||||
|
||||
memo[target] = styleTarget;
|
||||
}
|
||||
|
||||
return memo[target];
|
||||
};
|
||||
}();
|
||||
|
||||
var stylesInDom = [];
|
||||
|
||||
function getIndexByIdentifier(identifier) {
|
||||
var result = -1;
|
||||
|
||||
for (var i = 0; i < stylesInDom.length; i++) {
|
||||
if (stylesInDom[i].identifier === identifier) {
|
||||
result = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function modulesToDom(list, options) {
|
||||
var idCountMap = {};
|
||||
var identifiers = [];
|
||||
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
var item = list[i];
|
||||
var id = options.base ? item[0] + options.base : item[0];
|
||||
var count = idCountMap[id] || 0;
|
||||
var identifier = "".concat(id, " ").concat(count);
|
||||
idCountMap[id] = count + 1;
|
||||
var index = getIndexByIdentifier(identifier);
|
||||
var obj = {
|
||||
css: item[1],
|
||||
media: item[2],
|
||||
sourceMap: item[3]
|
||||
};
|
||||
|
||||
if (index !== -1) {
|
||||
stylesInDom[index].references++;
|
||||
stylesInDom[index].updater(obj);
|
||||
} else {
|
||||
stylesInDom.push({
|
||||
identifier: identifier,
|
||||
updater: addStyle(obj, options),
|
||||
references: 1
|
||||
});
|
||||
}
|
||||
|
||||
identifiers.push(identifier);
|
||||
}
|
||||
|
||||
return identifiers;
|
||||
}
|
||||
|
||||
function insertStyleElement(options) {
|
||||
var style = document.createElement('style');
|
||||
var attributes = options.attributes || {};
|
||||
|
||||
if (typeof attributes.nonce === 'undefined') {
|
||||
var nonce = true ? __webpack_require__.nc : 0;
|
||||
|
||||
if (nonce) {
|
||||
attributes.nonce = nonce;
|
||||
}
|
||||
}
|
||||
|
||||
Object.keys(attributes).forEach(function (key) {
|
||||
style.setAttribute(key, attributes[key]);
|
||||
});
|
||||
|
||||
if (typeof options.insert === 'function') {
|
||||
options.insert(style);
|
||||
} else {
|
||||
var target = getTarget(options.insert || 'head');
|
||||
|
||||
if (!target) {
|
||||
throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
|
||||
}
|
||||
|
||||
target.appendChild(style);
|
||||
}
|
||||
|
||||
return style;
|
||||
}
|
||||
|
||||
function removeStyleElement(style) {
|
||||
// istanbul ignore if
|
||||
if (style.parentNode === null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
style.parentNode.removeChild(style);
|
||||
}
|
||||
/* istanbul ignore next */
|
||||
|
||||
|
||||
var replaceText = function replaceText() {
|
||||
var textStore = [];
|
||||
return function replace(index, replacement) {
|
||||
textStore[index] = replacement;
|
||||
return textStore.filter(Boolean).join('\n');
|
||||
};
|
||||
}();
|
||||
|
||||
function applyToSingletonTag(style, index, remove, obj) {
|
||||
var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE
|
||||
|
||||
/* istanbul ignore if */
|
||||
|
||||
if (style.styleSheet) {
|
||||
style.styleSheet.cssText = replaceText(index, css);
|
||||
} else {
|
||||
var cssNode = document.createTextNode(css);
|
||||
var childNodes = style.childNodes;
|
||||
|
||||
if (childNodes[index]) {
|
||||
style.removeChild(childNodes[index]);
|
||||
}
|
||||
|
||||
if (childNodes.length) {
|
||||
style.insertBefore(cssNode, childNodes[index]);
|
||||
} else {
|
||||
style.appendChild(cssNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function applyToTag(style, options, obj) {
|
||||
var css = obj.css;
|
||||
var media = obj.media;
|
||||
var sourceMap = obj.sourceMap;
|
||||
|
||||
if (media) {
|
||||
style.setAttribute('media', media);
|
||||
} else {
|
||||
style.removeAttribute('media');
|
||||
}
|
||||
|
||||
if (sourceMap && typeof btoa !== 'undefined') {
|
||||
css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
|
||||
} // For old IE
|
||||
|
||||
/* istanbul ignore if */
|
||||
|
||||
|
||||
if (style.styleSheet) {
|
||||
style.styleSheet.cssText = css;
|
||||
} else {
|
||||
while (style.firstChild) {
|
||||
style.removeChild(style.firstChild);
|
||||
}
|
||||
|
||||
style.appendChild(document.createTextNode(css));
|
||||
}
|
||||
}
|
||||
|
||||
var singleton = null;
|
||||
var singletonCounter = 0;
|
||||
|
||||
function addStyle(obj, options) {
|
||||
var style;
|
||||
var update;
|
||||
var remove;
|
||||
|
||||
if (options.singleton) {
|
||||
var styleIndex = singletonCounter++;
|
||||
style = singleton || (singleton = insertStyleElement(options));
|
||||
update = applyToSingletonTag.bind(null, style, styleIndex, false);
|
||||
remove = applyToSingletonTag.bind(null, style, styleIndex, true);
|
||||
} else {
|
||||
style = insertStyleElement(options);
|
||||
update = applyToTag.bind(null, style, options);
|
||||
|
||||
remove = function remove() {
|
||||
removeStyleElement(style);
|
||||
};
|
||||
}
|
||||
|
||||
update(obj);
|
||||
return function updateStyle(newObj) {
|
||||
if (newObj) {
|
||||
if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
|
||||
return;
|
||||
}
|
||||
|
||||
update(obj = newObj);
|
||||
} else {
|
||||
remove();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = function (list, options) {
|
||||
options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
|
||||
// tags it will allow on a page
|
||||
|
||||
if (!options.singleton && typeof options.singleton !== 'boolean') {
|
||||
options.singleton = isOldIE();
|
||||
}
|
||||
|
||||
list = list || [];
|
||||
var lastIdentifiers = modulesToDom(list, options);
|
||||
return function update(newList) {
|
||||
newList = newList || [];
|
||||
|
||||
if (Object.prototype.toString.call(newList) !== '[object Array]') {
|
||||
return;
|
||||
}
|
||||
|
||||
for (var i = 0; i < lastIdentifiers.length; i++) {
|
||||
var identifier = lastIdentifiers[i];
|
||||
var index = getIndexByIdentifier(identifier);
|
||||
stylesInDom[index].references--;
|
||||
}
|
||||
|
||||
var newLastIdentifiers = modulesToDom(newList, options);
|
||||
|
||||
for (var _i = 0; _i < lastIdentifiers.length; _i++) {
|
||||
var _identifier = lastIdentifiers[_i];
|
||||
|
||||
var _index = getIndexByIdentifier(_identifier);
|
||||
|
||||
if (stylesInDom[_index].references === 0) {
|
||||
stylesInDom[_index].updater();
|
||||
|
||||
stylesInDom.splice(_index, 1);
|
||||
}
|
||||
}
|
||||
|
||||
lastIdentifiers = newLastIdentifiers;
|
||||
};
|
||||
};
|
||||
|
||||
/***/ })
|
||||
|
||||
/******/ });
|
||||
/************************************************************************/
|
||||
/******/ // The module cache
|
||||
/******/ var __webpack_module_cache__ = {};
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function __webpack_require__(moduleId) {
|
||||
/******/ // Check if module is in cache
|
||||
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
||||
/******/ if (cachedModule !== undefined) {
|
||||
/******/ return cachedModule.exports;
|
||||
/******/ }
|
||||
/******/ // Create a new module (and put it into the cache)
|
||||
/******/ var module = __webpack_module_cache__[moduleId] = {
|
||||
/******/ // no module.id needed
|
||||
/******/ // no module.loaded needed
|
||||
/******/ exports: {}
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/************************************************************************/
|
||||
/******/ /* webpack/runtime/compat get default export */
|
||||
/******/ (() => {
|
||||
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||||
/******/ __webpack_require__.n = (module) => {
|
||||
/******/ var getter = module && module.__esModule ?
|
||||
/******/ () => (module['default']) :
|
||||
/******/ () => (module);
|
||||
/******/ __webpack_require__.d(getter, { a: getter });
|
||||
/******/ return getter;
|
||||
/******/ };
|
||||
/******/ })();
|
||||
/******/
|
||||
/******/ /* webpack/runtime/define property getters */
|
||||
/******/ (() => {
|
||||
/******/ // define getter functions for harmony exports
|
||||
/******/ __webpack_require__.d = (exports, definition) => {
|
||||
/******/ for(var key in definition) {
|
||||
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
||||
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
||||
/******/ }
|
||||
/******/ }
|
||||
/******/ };
|
||||
/******/ })();
|
||||
/******/
|
||||
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
||||
/******/ (() => {
|
||||
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
||||
/******/ })();
|
||||
/******/
|
||||
/******/ /* webpack/runtime/make namespace object */
|
||||
/******/ (() => {
|
||||
/******/ // define __esModule on exports
|
||||
/******/ __webpack_require__.r = (exports) => {
|
||||
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
||||
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
||||
/******/ }
|
||||
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
||||
/******/ };
|
||||
/******/ })();
|
||||
/******/
|
||||
/******/ /* webpack/runtime/nonce */
|
||||
/******/ (() => {
|
||||
/******/ __webpack_require__.nc = undefined;
|
||||
/******/ })();
|
||||
/******/
|
||||
/************************************************************************/
|
||||
var __webpack_exports__ = {};
|
||||
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
|
||||
(() => {
|
||||
"use strict";
|
||||
/*!*******************************!*\
|
||||
!*** ./resources/css/app.css ***!
|
||||
\*******************************/
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
||||
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
||||
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_5_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_5_oneOf_1_use_2_app_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[5].oneOf[1].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[5].oneOf[1].use[2]!./app.css */ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[5].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[5].oneOf[1].use[2]!./resources/css/app.css");
|
||||
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_5_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_5_oneOf_1_use_2_app_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_5_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_5_oneOf_1_use_2_app_css__WEBPACK_IMPORTED_MODULE_1__);
|
||||
|
||||
|
||||
|
||||
var options = {};
|
||||
|
||||
options.insert = "head";
|
||||
options.singleton = false;
|
||||
|
||||
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()((_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_5_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_5_oneOf_1_use_2_app_css__WEBPACK_IMPORTED_MODULE_1___default()), options);
|
||||
|
||||
|
||||
|
||||
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_5_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_5_oneOf_1_use_2_app_css__WEBPACK_IMPORTED_MODULE_1___default().locals) || {});
|
||||
})();
|
||||
|
||||
/******/ })()
|
||||
;
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
|
||||
header("content-type:text/plain");
|
||||
|
||||
$port = addslashes($_GET["port"]);
|
||||
ob_start();
|
||||
?>
|
||||
game:Load('rbxasset://temp.rbxl')
|
||||
local assetPropertyNames = {"Texture", "TextureId", "SoundId", "MeshId", "SkyboxUp", "SkyboxLf", "SkyboxBk", "SkyboxRt", "SkyboxFt", "SkyboxDn", "PantsTemplate", "ShirtTemplate", "Graphic", "Frame", "ImageLabel", "GuiMain", "Image", "LinkedSource", "AnimationId"}
|
||||
local variations = {"http://www%.roblox%.com/asset/%?id=", "http://www%.roblox%.com/asset%?id=", "http://%.roblox%.com/asset/%?id=", "http://%.roblox%.com/asset%?id="}
|
||||
|
||||
function GetDescendants(o)
|
||||
local allObjects = {}
|
||||
function FindChildren(Object)
|
||||
for _,v in pairs(Object:GetChildren()) do
|
||||
table.insert(allObjects,v)
|
||||
FindChildren(v)
|
||||
end
|
||||
end
|
||||
FindChildren(o)
|
||||
return allObjects
|
||||
end
|
||||
|
||||
local replacedProperties = 0--Amount of properties changed
|
||||
|
||||
for i, v in pairs(GetDescendants(game)) do
|
||||
for _, property in pairs(assetPropertyNames) do
|
||||
pcall(function()
|
||||
if v[property] and not v:FindFirstChild(property) then --Check for property, make sure we're not getting a child instead of a property
|
||||
assetText = string.lower(v[property])
|
||||
for _, variation in pairs(variations) do
|
||||
v[property], matches = string.gsub(assetText, variation, "http://www%.morblox%.us/asset/%?id=")
|
||||
if matches > 0 then
|
||||
replacedProperties = replacedProperties + 1
|
||||
print("Replaced " .. property .. " asset link for " .. v.Name)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
print("DONE! Replaced " .. replacedProperties .. " properties")
|
||||
game:GetService("NetworkServer"):Start(<?php echo $port; ?>)
|
||||
game:GetService("RunService"):Run()
|
||||
game.Lighting.GlobalShadows = true
|
||||
game.Players.PlayerAdded:connect(function(plr)
|
||||
Player.Changed:connect(function(Property)
|
||||
if (Property=="Character") and (Player.Character~=nil) then
|
||||
local Character=Player.Character
|
||||
local Humanoid=Character:FindFirstChild("Humanoid")
|
||||
if (Humanoid~=nil) then
|
||||
Humanoid.Died:connect(function() delay(RespawnTime,function() Player:LoadCharacter() LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,Player.Backpack) end) end)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end)
|
||||
game.Players.PlayerAdded:connect(onJoined)
|
||||
game:GetService("NetworkServer"):Start(<?php echo $port; ?>)
|
||||
game:GetService("RunService"):Run()
|
||||
game.Lighting.GlobalShadows = true
|
||||
game.Players.PlayerAdded:connect(function(plr)
|
||||
Player.Changed:connect(function(Property)
|
||||
if (Property=="Character") and (Player.Character~=nil) then
|
||||
local Character=Player.Character
|
||||
local Humanoid=Character:FindFirstChild("Humanoid")
|
||||
if (Humanoid~=nil) then
|
||||
Humanoid.Died:connect(function() delay(RespawnTime,function() Player:LoadCharacter() LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,Player.Backpack) end) end)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end)
|
||||
game.Players.PlayerAdded:connect(onJoined)
|
||||
<?php
|
||||
$data = ob_get_clean();
|
||||
$signature;
|
||||
$key = file_get_contents("../GameRBLX/PrivKey.pem");
|
||||
openssl_sign($data, $signature, $key, OPENSSL_ALGO_SHA1);
|
||||
echo "" . sprintf("%%%s%%%s", base64_encode($signature), $data);
|
||||
?>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 179 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 169 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 65 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 60 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 40 KiB |
|
|
@ -1,78 +1,6 @@
|
|||
window.addEventListener('resize', function() {
|
||||
var logo_full = document.getElementById("logo_full")
|
||||
var logo_small = document.getElementById("logo_small")
|
||||
var smallbtn = document.getElementById("smallbtn1")
|
||||
var smallbtn0 = document.getElementById("smallbtn0")
|
||||
var smallbtn2 = document.getElementById("smallbtn2")
|
||||
var smallbtn3 = document.getElementById("smallbtn3")
|
||||
var smallbtn1 = document.getElementById("smallbtn4")
|
||||
var smallbtn5 = document.getElementById("smallbtn5")
|
||||
var viewport_width = window.innerWidth;
|
||||
if (viewport_width < 900) {
|
||||
logo_full.className = "invisible";
|
||||
logo_small.className = "";
|
||||
} else {
|
||||
logo_small.className = "invisible";
|
||||
logo_full.className = "";
|
||||
}
|
||||
if (viewport_width < 600) {
|
||||
smallbtn.className = "invisible";
|
||||
smallbtn2.className = "invisible";
|
||||
smallbtn3.className = "invisible";
|
||||
} else {
|
||||
smallbtn.className = "navbarbutton";
|
||||
smallbtn2.className = "navbarbutton";
|
||||
smallbtn3.className = "navbarbutton";
|
||||
}
|
||||
if (viewport_width < 425) {
|
||||
smallbtn0.className = "invisible";
|
||||
smallbtn1.className = "invisible";
|
||||
} else {
|
||||
smallbtn0.className = "navbarbutton";
|
||||
smallbtn1.className = "navbarbutton";
|
||||
}
|
||||
if (viewport_width < 280) {
|
||||
smallbtn5.className = "invisible";
|
||||
} else {
|
||||
smallbtn5.className = "navbarbutton";
|
||||
}
|
||||
});
|
||||
window.onload = function() {
|
||||
var logo_full = document.getElementById("logo_full")
|
||||
var logo_small = document.getElementById("logo_small")
|
||||
var smallbtn = document.getElementById("smallbtn1")
|
||||
var smallbtn0 = document.getElementById("smallbtn0")
|
||||
var smallbtn2 = document.getElementById("smallbtn2")
|
||||
var smallbtn3 = document.getElementById("smallbtn3")
|
||||
var smallbtn1 = document.getElementById("smallbtn4")
|
||||
var smallbtn5 = document.getElementById("smallbtn5")
|
||||
var viewport_width = window.innerWidth;
|
||||
if (viewport_width < 900) {
|
||||
logo_full.className = "invisible";
|
||||
logo_small.className = "";
|
||||
} else {
|
||||
logo_small.className = "invisible";
|
||||
logo_full.className = "";
|
||||
}
|
||||
if (viewport_width < 600) {
|
||||
smallbtn.className = "invisible";
|
||||
smallbtn2.className = "invisible";
|
||||
smallbtn3.className = "invisible";
|
||||
} else {
|
||||
smallbtn.className = "navbarbutton";
|
||||
smallbtn2.className = "navbarbutton";
|
||||
smallbtn3.className = "navbarbutton";
|
||||
}
|
||||
if (viewport_width < 425) {
|
||||
smallbtn0.className = "invisible";
|
||||
smallbtn1.className = "invisible";
|
||||
} else {
|
||||
smallbtn0.className = "navbarbutton";
|
||||
smallbtn1.className = "navbarbutton";
|
||||
}
|
||||
if (viewport_width < 280) {
|
||||
smallbtn5.className = "invisible";
|
||||
} else {
|
||||
smallbtn5.className = "navbarbutton";
|
||||
}
|
||||
};
|
||||
/******/ (() => { // webpackBootstrap
|
||||
/******/ "use strict";
|
||||
/******/
|
||||
/******/
|
||||
/******/ })()
|
||||
;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/js/app.js": "/js/app.js",
|
||||
"/css/app.css": "/css/app.css"
|
||||
"/js/main.js": "/js/main.js?id=9f73e36163448599799c0ba369b82b17",
|
||||
"/css/app.js": "/css/app.js?id=bea72d76448120e19444500780652630"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,152 +1,333 @@
|
|||
@keyframes animatedbackground {
|
||||
from {background-position-x: 0px; animation-timing-function: linear;}
|
||||
to {background-position-x: 2000px; animation-timing-function: linear;}
|
||||
from {background-position-x: 0px; animation-timing-function: linear;}
|
||||
to {background-position-x: 2000px; animation-timing-function: linear;}
|
||||
}
|
||||
#alert {
|
||||
height: fit-content;
|
||||
margin: 0px;
|
||||
position: fixed;
|
||||
top: 72px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
background: linear-gradient(#f07575 10%, #e13b3b 49%, #d22 50%, #de2323 100%);
|
||||
height: fit-content;
|
||||
margin: 0px;
|
||||
position: fixed;
|
||||
top: 72px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
background: linear-gradient(#f07575 10%, #e13b3b 49%, #d22 50%, #de2323 100%);
|
||||
}
|
||||
.warningtext {
|
||||
color: red;
|
||||
}
|
||||
.popupcontainer {
|
||||
top: 0%;
|
||||
position: fixed;
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 100000000;
|
||||
}
|
||||
.popup {
|
||||
color:#000000;
|
||||
text-align: center;
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
transform: translate(-50%, -50%);
|
||||
width: max-content;
|
||||
border-radius: 3px;
|
||||
border: 1px solid #3D414A;
|
||||
background: linear-gradient(#cacbcc 10%, #99999a 49%, #747474 50%, #2d2d2d 100%);
|
||||
}
|
||||
.navbar {
|
||||
height: 40px;
|
||||
margin: 0px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
padding-top: 2px;
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
padding-bottom: 2px;
|
||||
color: white;
|
||||
line-height: normal;
|
||||
display: inline-flex;
|
||||
vertical-align: middle;
|
||||
width: 100%;
|
||||
background: linear-gradient(#759CF0 10%, #3B72E1 49%, #2260DD 50%, #2362DE 100%);
|
||||
height: 40px;
|
||||
margin: 0px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
padding-top: 2px;
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
padding-bottom: 2px;
|
||||
color: white;
|
||||
line-height: normal;
|
||||
display: inline-flex;
|
||||
vertical-align: middle;
|
||||
width: 100%;
|
||||
background: linear-gradient(#759CF0 10%, #3B72E1 49%, #2260DD 50%, #2362DE 100%);
|
||||
}
|
||||
.navbarbuttoncontainer, .smallnavbarbuttoncontainer, .navbarlogincontainer {
|
||||
padding-left: 5px;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
padding-left: 5px;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
#navbarlogincontainer, #navbarsignedincontainer {
|
||||
position: relative;
|
||||
padding-right: 10px;
|
||||
margin-right: 3%;
|
||||
margin-left: auto;
|
||||
float: inline-end;
|
||||
top: 11px;
|
||||
position: relative;
|
||||
padding-right: 10px;
|
||||
margin-right: 3%;
|
||||
margin-left: auto;
|
||||
float: inline-end;
|
||||
top: 11px;
|
||||
}
|
||||
#profilefriendscontainer p, #profilefriendscontainer a {
|
||||
display: inline;
|
||||
display: inline;
|
||||
}
|
||||
#profiletopcontainer {
|
||||
margin-bottom: 30px;
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin-bottom: 30px;
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
#profilemiddlecontainer {
|
||||
text-align: center;
|
||||
margin-right: 50%;
|
||||
.onlinestatus_website {
|
||||
color: #2260DD;
|
||||
}
|
||||
.onlinestatus_ingame {
|
||||
color: green;
|
||||
}
|
||||
.onlinestatus_offline {
|
||||
color: black;
|
||||
}
|
||||
#yes, #no {
|
||||
width: 50%;
|
||||
}
|
||||
#FeedBox {
|
||||
width: 100%;
|
||||
height: 22px;
|
||||
}
|
||||
#FeedButton {
|
||||
width: 100%;
|
||||
height: 22px;
|
||||
}
|
||||
#logo_signup, #logo-signup p {
|
||||
margin: auto;
|
||||
text-align: center;
|
||||
width: 200px;
|
||||
}
|
||||
#feed, #profileleftcontainer {
|
||||
text-align: center;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
width: 50%;
|
||||
}
|
||||
#gamesframe, #profilerightcontainer {
|
||||
text-align: center;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
width: 50%;
|
||||
}
|
||||
.FeedContainerBox, .ProfileContainerBox {
|
||||
border-radius: 1px;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
vertical-align: top;
|
||||
display: inline-flex;
|
||||
border: 1px solid #000000;
|
||||
border-width: 1px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
#btncontainer {
|
||||
margin-left: 75%;
|
||||
margin-left: 75%;
|
||||
}
|
||||
.navbarbutton {
|
||||
position: relative;
|
||||
top: 10px;
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
position: relative;
|
||||
top: 10px;
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
}
|
||||
.smallnavbarbutton {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
font-size: 15px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
font-size: 15px;
|
||||
}
|
||||
.smallnav {
|
||||
height: 25px;
|
||||
margin: 0px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
position: fixed;
|
||||
top: 43px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
display: inline-table;
|
||||
vertical-align: middle;
|
||||
width: 100%;
|
||||
line-height: normal;
|
||||
color: rgb(255, 255, 255);
|
||||
text-size-adjust: auto;
|
||||
text-align: left;
|
||||
background-color: black;
|
||||
height: 25px;
|
||||
margin: 0px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
position: fixed;
|
||||
top: 43px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
display: inline-table;
|
||||
vertical-align: middle;
|
||||
width: 100%;
|
||||
line-height: normal;
|
||||
color: rgb(255, 255, 255);
|
||||
text-size-adjust: auto;
|
||||
text-align: left;
|
||||
background-color: black;
|
||||
}
|
||||
.invisible {
|
||||
display: none !important;
|
||||
.invisible, #invisible {
|
||||
display: none !important;
|
||||
}
|
||||
html {
|
||||
margin: 0px;
|
||||
font-family: "Helvetica";
|
||||
src: url('Helvetica.ttf') format('truetype'),;
|
||||
font-style: normal;
|
||||
background-color: #2e7eff;
|
||||
color: white;
|
||||
animation-name: animatedbackground;
|
||||
animation-duration: 50s;
|
||||
animation-iteration-count: infinite;
|
||||
background-image: url(animated.png);
|
||||
background-position: center 100%;
|
||||
background-repeat: repeat-x;
|
||||
background-attachment: fixed;
|
||||
margin: 0px;
|
||||
font-family: "Helvetica";
|
||||
src: url('Helvetica.ttf') format('truetype'),;
|
||||
font-style: normal;
|
||||
background-color: rgb(49, 107, 223);
|
||||
color: white;
|
||||
animation-name: animatedbackground;
|
||||
animation-duration: 50s;
|
||||
animation-iteration-count: infinite;
|
||||
background-image: url('../img/animated.png');
|
||||
background-position: center 100%;
|
||||
background-repeat: repeat-x;
|
||||
background-attachment: fixed;
|
||||
}
|
||||
body {
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 35px;
|
||||
padding-bottom: 0px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 35px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
.content_special, #content_special {
|
||||
display: inline-flex;
|
||||
width: 100%;
|
||||
flex-wrap: nowrap;
|
||||
flex-direction: row;
|
||||
align-content: center;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.content {
|
||||
color: black;
|
||||
max-width: 1000px;
|
||||
margin: auto;
|
||||
margin-top: 105px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
min-height: 300px;
|
||||
background-color: rgba(255, 255, 255, 0.8);
|
||||
padding-bottom: 5px;
|
||||
padding-top: 5px;
|
||||
color: black;
|
||||
max-width: 1000px;
|
||||
margin: auto;
|
||||
margin-top: 105px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
min-height: 300px;
|
||||
background-color: rgba(255, 255, 255, 0.8);
|
||||
padding-bottom: 5px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
.content p a, .content a {
|
||||
color: black
|
||||
.content_signup {
|
||||
color: black;
|
||||
max-width: 500px;
|
||||
margin: auto;
|
||||
margin-top: 30px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
background-color: rgba(255, 255, 255, 0.8);
|
||||
padding-bottom: 5px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
.content_signup input, .content_signup button {
|
||||
width: 90%;
|
||||
}
|
||||
.content p a, .content a, .content_signup p a, .content_signup a, .content_special p a, .content_special a {
|
||||
color: black
|
||||
}
|
||||
#footer {
|
||||
text-align: center;
|
||||
max-width: 1000px;
|
||||
margin: auto;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-bottom: 5px;
|
||||
padding-top: 5px;
|
||||
background-color: rgba(172, 172, 172, 0.8);
|
||||
min-height: fit-content;
|
||||
text-align: center;
|
||||
max-width: 1000px;
|
||||
margin: auto;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-bottom: 5px;
|
||||
padding-top: 5px;
|
||||
background-color: rgba(172, 172, 172, 0.8);
|
||||
min-height: fit-content;
|
||||
}
|
||||
#footer p, #footer a {
|
||||
color: black;
|
||||
button {
|
||||
font-weight: 400;
|
||||
text-align: center;
|
||||
border-radius: 3px;
|
||||
border: 1px solid #3D414A;
|
||||
font-family: "Helvetica";
|
||||
color: #fff;
|
||||
}
|
||||
p,h1 {
|
||||
margin: 0px;
|
||||
button.bluebutton {
|
||||
background: linear-gradient(#759CF0 10%, #3B72E1 49%, #2260DD 50%, #2362DE 100%);
|
||||
}
|
||||
button:hover.bluebutton {
|
||||
background: linear-gradient(#7ca1ef 10%, #4a7de4 49%, #396fdb 50%, #3168d6 100%);
|
||||
cursor: pointer;
|
||||
}
|
||||
button:disabled.bluebutton {
|
||||
background: linear-gradient(#759CF0 10%, #3B72E1 49%, #2260DD 50%, #2362DE 100%);
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
button.greybutton {
|
||||
background: linear-gradient(#cacbcc 10%, #99999a 49%, #747474 50%, #2d2d2d 100%);
|
||||
}
|
||||
button:hover.greybutton {
|
||||
background: linear-gradient(#d1d8e6 10%, #b3b8c2 49%, #868a91 50%, #393b3e 100%);
|
||||
cursor: pointer;
|
||||
}
|
||||
button:disabled.greybutton {
|
||||
background: linear-gradient(#cacbcc 10%, #99999a 49%, #747474 50%, #2d2d2d 100%);
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
button.redbutton {
|
||||
background: linear-gradient(#e65a5a 10%, #e13535 49%, #d92c2c 50%, #df1818 100%);
|
||||
}
|
||||
button:hover.redbutton {
|
||||
background: linear-gradient(#e56c6c 10%, #dd4e4e 49%, #d14343 50%, #da2e2e 100%);
|
||||
cursor: pointer;
|
||||
}
|
||||
button:disabled.redbutton {
|
||||
background: linear-gradient(#e65a5a 10%, #e13535 49%, #d92c2c 50%, #df1818 100%);
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
button.greenbutton {
|
||||
background: linear-gradient(#5acf77 10%, #3abc44 49%, #359c32 50%, #1a5c2e 100%);
|
||||
}
|
||||
button:hover.greenbutton {
|
||||
background: linear-gradient(#75f094 10%, #39d746 49%, #21b71c 50%, #137a32 100%);
|
||||
cursor: pointer;
|
||||
}
|
||||
button:disabled.greenbutton {
|
||||
background: linear-gradient(#75f094 10%, #39d746 49%, #21b71c 50%, #137a32 100%);
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
#footer_signup {
|
||||
text-align: center;
|
||||
max-width: 500px;
|
||||
margin: auto;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-bottom: 5px;
|
||||
padding-top: 5px;
|
||||
background-color: rgba(172, 172, 172, 0.8);
|
||||
min-height: fit-content;
|
||||
}
|
||||
#footer p, #footer a, #footer_signup p, #footer_signup a {
|
||||
color: black;
|
||||
}
|
||||
p,h1,h2,h3,h4,h5,h6 {
|
||||
margin: 0px;
|
||||
}
|
||||
a, #navbarusername {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
font-weight: bolder;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
font-weight: bolder;
|
||||
}
|
||||
.nonbolded {
|
||||
font-weight: normal !important;
|
||||
}
|
||||
.logoutframe {
|
||||
color: black;
|
||||
max-width: fit-content;
|
||||
margin: auto;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
padding-bottom: 5px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
.w-5 {
|
||||
display: none;
|
||||
}
|
||||
.flex {
|
||||
display: table;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
|
@ -3,18 +3,21 @@
|
|||
|
||||
<head>
|
||||
<title>Login - {{ env('APP_NAME') }}</title>
|
||||
<meta content="morblox.us - Log In" property="og:title" />
|
||||
<meta charset="utf-8">
|
||||
<meta content="Login - Morblox" property="og:title" />
|
||||
<meta content="MORBLOX is a work in progress revival." property="og:description" />
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/" property="og:url" />
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/MORBLOXlogo.png" property="og:image" />
|
||||
<meta content="https://morblox.us" property="og:url" />
|
||||
<meta content="https://morblox.us/img/MORBLOXlogo.png" property="og:image" />
|
||||
<meta content="#4b4b4b" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||
<link rel="apple-touch-icon" href="{{ asset('img/MORBLOX.png') }}" />
|
||||
<link rel="apple-touch-startup-image" href="{{ asset('img/MORBLOXsplash.png') }}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="apple-touch-icon" href="MORBLOX.png" />
|
||||
<link rel="apple-touch-startup-image" href="MORBLOXSplash.png" />
|
||||
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}">
|
||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
||||
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
|
||||
<script src="{{ asset('js/main.js') }}"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
|
@ -33,13 +36,12 @@
|
|||
<form method="POST" action="{{ route('login') }}">
|
||||
@csrf
|
||||
<h3>Username/E-Mail Address</h3>
|
||||
<input id="email" type="email" name="email" value="{{ old('email') }}" required
|
||||
autocomplete="email" autofocus>
|
||||
@error('email')
|
||||
<input id="login" type="text" name="login" value="{{ old('login') }}" required autofocus>
|
||||
@if ($errors->has('name') || $errors->has('email'))
|
||||
<span style="color:red" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
<strong>{{ $errors->first('name') ?: $errors->first('email') }}</strong>
|
||||
</span>
|
||||
@enderror
|
||||
@endif
|
||||
<h3>Password</h3>
|
||||
<input id="password" type="password" name="password" required autocomplete="current-password">
|
||||
@error('password')
|
||||
|
|
@ -65,8 +67,10 @@
|
|||
</form>
|
||||
</div>
|
||||
<div id="footer_signup">
|
||||
<p>MORBLOX is not affiliated with Roblox Corp, Lego, Sony, SEGA, Microsoft, Nintendo and Morbius. It's Morbin time!</p>
|
||||
<p><a href="{{ route('privacy') }}">Privacy Policy</a> <a href="{{ route('tos') }}">Terms of Service</a></p>
|
||||
<p>MORBLOX is not affiliated with Roblox Corp, Lego, Sony, SEGA, Microsoft, Nintendo and Morbius. It's Morbin
|
||||
time!</p>
|
||||
<p><a href="{{ route('privacy') }}">Privacy Policy</a> <a href="{{ route('tos') }}">Terms of Service</a>
|
||||
</p>
|
||||
</div id="footer">
|
||||
</body>
|
||||
|
||||
|
|
|
|||
|
|
@ -3,18 +3,21 @@
|
|||
|
||||
<head>
|
||||
<title>Register - {{ env('APP_NAME') }}</title>
|
||||
<meta content="morblox.us - Sign Up" property="og:title" />
|
||||
<meta charset="utf-8">
|
||||
<meta content="Register - Morblox" property="og:title" />
|
||||
<meta content="MORBLOX is a work in progress revival." property="og:description" />
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/" property="og:url" />
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/MORBLOXlogo.png" property="og:image" />
|
||||
<meta content="https://morblox.us" property="og:url" />
|
||||
<meta content="https://morblox.us/img/MORBLOXlogo.png" property="og:image" />
|
||||
<meta content="#4b4b4b" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||
<link rel="apple-touch-icon" href="{{ asset('img/MORBLOX.png') }}" />
|
||||
<link rel="apple-touch-startup-image" href="{{ asset('img/MORBLOXsplash.png') }}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="apple-touch-icon" href="MORBLOX.png" />
|
||||
<link rel="apple-touch-startup-image" href="MORBLOXSplash.png" />
|
||||
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}">
|
||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
||||
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
|
||||
<script src="{{ asset('js/main.js') }}"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
|
@ -29,8 +32,8 @@
|
|||
<h1>Welcome to MORBLOX!</h1>
|
||||
<p>Have an account already? <a href="{{ route('login') }}">Click here</a> to log in.</p>
|
||||
<ul></ul>
|
||||
<p>Before entering anything, please read the <a href="privacy_signup.html">Privacy Policy</a> and the <a
|
||||
href="tos_signup.html">Terms of Service</a>.</p>
|
||||
<p>Before entering anything, please read the <a href="{{ route('privacy') }}">Privacy Policy</a> and the <a
|
||||
href="{{ route('tos') }}">Terms of Service</a>.</p>
|
||||
<ul></ul>
|
||||
<form method="POST" action="{{ route('register') }}">
|
||||
@csrf
|
||||
|
|
@ -39,34 +42,34 @@
|
|||
value="{{ old('name') }}" required autocomplete="name" autofocus>
|
||||
<p>Usernames must be 3-20 characters, and must not break the rules.</p>
|
||||
@error('name')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<div class="invalid-feedback" style="color:red">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
</div>
|
||||
@enderror
|
||||
<ul></ul>
|
||||
<h3>E-Mail Address</h3>
|
||||
<input id="email" type="email" name="email" value="{{ old('email') }}" required
|
||||
autocomplete="email">
|
||||
@error('email')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<div class="invalid-feedback" style="color:red">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
</div>
|
||||
@enderror
|
||||
<h3>Confirm E-Mail Address</h3>
|
||||
<input id="email-confirm" type="email" name="email_confirmation" value="{{ old('email_confirmation') }}"
|
||||
required autocomplete="email">
|
||||
@error('email_confirmation')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<div class="invalid-feedback" style="color:red">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
</div>
|
||||
@enderror
|
||||
<ul></ul>
|
||||
<h3>Date of Birth</h3>
|
||||
<input id="dob" type="date" name="dob" value="{{ old('dob') }}" required>
|
||||
@error('dob')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<div class="invalid-feedback" style="color:red">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
</div>
|
||||
@enderror
|
||||
<ul></ul>
|
||||
<h3>Password</h3>
|
||||
|
|
@ -74,14 +77,19 @@
|
|||
<p>Don't reuse passwords, and don't use a simple one!</p>
|
||||
<p>Passwords must be 8 or more charactes, with 1 number and 1 symbol.</p>
|
||||
@error('password')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<div class="invalid-feedback" style="color:red">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
</div>
|
||||
@enderror
|
||||
<ul></ul>
|
||||
<h3>Invite Key</h3>
|
||||
<input id="key" type="text" name="key" placeholder="Invite Key" value="{{ old('key') }}"
|
||||
required>
|
||||
@error('key')
|
||||
<div class="invalid-feedback" style="color:red">
|
||||
<strong>Incorrect invite key.</strong>
|
||||
</div>
|
||||
@enderror
|
||||
<p>An Invite Key is required to sign up. You can obtain one from a person that has played MORBLOX.</p>
|
||||
<p>Don't beg for keys.</p>
|
||||
<ul></ul>
|
||||
|
|
|
|||
|
|
@ -3,18 +3,21 @@
|
|||
|
||||
<head>
|
||||
<title>{{ env('APP_NAME') }} - It's MORBLOX time.</title>
|
||||
<meta content="It's MORBLOX time." property="og:title" />
|
||||
<meta charset="utf-8">
|
||||
<meta content="Morblox" property="og:title" />
|
||||
<meta content="MORBLOX is a work in progress revival." property="og:description" />
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/" property="og:url" />
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/MORBLOXlogo.png" property="og:image" />
|
||||
<meta content="https://morblox.us" property="og:url" />
|
||||
<meta content="https://morblox.us/img/MORBLOXlogo.png" property="og:image" />
|
||||
<meta content="#4b4b4b" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||
<link rel="apple-touch-icon" href="MORBLOX.png" />
|
||||
<link rel="apple-touch-icon" href="{{ asset('img/MORBLOX.png') }}" />
|
||||
<link rel="apple-touch-startup-image" href="{{ asset('img/MORBLOXsplash.png') }}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="apple-touch-startup-image" href="MORBLOXSplash.png" />
|
||||
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}">
|
||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
||||
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
|
||||
<script src="{{ asset('js/main.js') }}"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
|
@ -35,24 +38,9 @@
|
|||
here!</a></p>
|
||||
<p id="discord">Also, <a href="https://discord.gg/nudzQ7hkWY">Join our Discord!</a></p>
|
||||
<ul></ul>
|
||||
<h2>DEBUG SETTINGS BELOW!</h2>
|
||||
<p>Feel free to toy around with these, before they're gone forever!</p>
|
||||
<ul></ul>
|
||||
<h3>Page Links</h3>
|
||||
<a href="{{ route('home') }}">Home</a>
|
||||
<a href="games.html">Games</a>
|
||||
<a href="profile.html">Profile</a>
|
||||
<a href="404.html">404</a>
|
||||
<a href="logout.html">Logout</a>
|
||||
<ul></ul>
|
||||
<h3>Set LocalStorage Data</h3>
|
||||
<ul></ul>
|
||||
<form>
|
||||
<input id="UsernameSet" type="text" name="username" placeholder="Enter a Username">
|
||||
<button class="bluebutton" id="SaveButton">Save to LocalStorage...</button>
|
||||
<p id="UsernameContainer">Saved Username:</p>
|
||||
</form>
|
||||
<ul></ul>
|
||||
<h3>User Count</h3>
|
||||
<p>There are <strong>{{ App\Models\User::count() }}</strong> users registered</p>
|
||||
</div>
|
||||
<div id="footer_signup">
|
||||
<p>MORBLOX is not affiliated with Roblox Corp, Lego, Sony, SEGA, Microsoft, Nintendo and Morbius. It's Morbin
|
||||
|
|
|
|||
|
|
@ -0,0 +1,43 @@
|
|||
@extends('layouts.app')
|
||||
@section('title')
|
||||
<title>
|
||||
Create Invite - {{ env('APP_NAME') }}</title>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<h1 id="usernameframe">Create a Key</h1>
|
||||
@if ($data['canCreate'] || App\Models\User::isAdmin())
|
||||
<p>You may create @if ($data['fetchKeys']->isEmpty()) your first key below!
|
||||
@else
|
||||
@if (App\Models\User::isAdmin()) as many keys as you wish because you're an admin. @else a new key because it's been 1 week since creating your last key. @endif @endif
|
||||
</p>
|
||||
@else
|
||||
<p>You cannot create a new key because 1 week hasn't passed since creating your last key. You can find your
|
||||
key(s) below.</p>
|
||||
@endif
|
||||
<br>
|
||||
@if ($data['canCreate'] || App\Models\User::isAdmin())
|
||||
<form method="POST" action="{{ route('key_create') }}">
|
||||
@csrf
|
||||
<button class="bluebutton" type="submit">Create Invite Key</button>
|
||||
</form>
|
||||
<br>
|
||||
@endif
|
||||
@foreach ($data['fetchKeys'] as $fKey)
|
||||
<div class="FeedContainerBox" id="FeedContainerBox1">
|
||||
<div id="ProfileContainerBox1TextContainer">
|
||||
<h3>Invite Key - @if (!$fKey->active)
|
||||
You Invited: <a href="{{ route('profile', App\Models\User::find($fKey->user_invited)->id) }}"
|
||||
style="font-weight:normal;color:blue">{{ App\Models\User::find($fKey->user_invited)->name }}</a>
|
||||
-
|
||||
@endif Created {{ $fKey->created_at->format('d/m/Y') }}</h3>
|
||||
@if ($fKey->active)
|
||||
<h5 style="color:green">Status: Active</h5>
|
||||
@else
|
||||
<h5 style="color:red">Status: Inactive</h5>
|
||||
@endif
|
||||
<address>{{ $fKey->key }}</address>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endsection
|
||||
|
|
@ -6,14 +6,14 @@
|
|||
<meta charset="utf-8">
|
||||
<meta content="Morblox" property="og:title" />
|
||||
<meta content="MORBLOX is a work in progress revival." property="og:description" />
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/" property="og:url" />
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/MORBLOXlogo.png" property="og:image" />
|
||||
<meta content="https://morblox.us" property="og:url" />
|
||||
<meta content="https://morblox.us/img/MORBLOXlogo.png" property="og:image" />
|
||||
<meta content="#4b4b4b" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||
<link rel="apple-touch-icon" href="MORBLOX.png" />
|
||||
<link rel="apple-touch-startup-image" href="MORBLOXSplash.png" />
|
||||
<link rel="apple-touch-icon" href="{{ asset('img/MORBLOX.png') }}" />
|
||||
<link rel="apple-touch-startup-image" href="{{ asset('img/MORBLOXsplash.png') }}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}">
|
||||
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
|
||||
|
|
@ -31,8 +31,8 @@
|
|||
<a class="navbarbutton" id="smallbtn4" href="catalog.html">Catalog</a>
|
||||
<a class="navbarbutton" id="smallbtn0" href="build.html">Build</a>
|
||||
<a class="navbarbutton" id="smallbtn1" href="forum.html">Forum</a>
|
||||
<a class="navbarbutton" id="smallbtn2" href="{{ route('profile', Auth::user()->id) }}">Profile</a>
|
||||
<a class="navbarbutton" id="smallbtn3" href="forum.html">Settings</a>
|
||||
<a class="navbarbutton" id="smallbtn2" href="@guest {{ route('login') }} @else {{ route('profile', Auth::id()) }} @endguest">Profile</a>
|
||||
<a class="navbarbutton" id="smallbtn3" href="{{ route('settings') }}">Settings</a>
|
||||
</div>
|
||||
@guest
|
||||
<div id="navbarlogincontainer">
|
||||
|
|
@ -54,6 +54,7 @@
|
|||
<a class="smallnavbarbutton" href="friends.html">Friends</a>
|
||||
<a class="smallnavbarbutton" href="avatar.html">Avatar</a>
|
||||
<a class="smallnavbarbutton" href="Settings.html">Transactions</a>
|
||||
<a class="smallnavbarbutton" href="{{ route('users') }}">Users</a>
|
||||
</div>
|
||||
</div>
|
||||
@yield('alert')
|
||||
|
|
|
|||
|
|
@ -2,18 +2,20 @@
|
|||
<html lang="en-us">
|
||||
<head>
|
||||
<title>Privacy Policy - {{ env('APP_NAME') }}</title>
|
||||
<meta content="morblox.us - Privacy Policy" property="og:title"/>
|
||||
<meta content="MORBLOX is a work in progress revival." property="og:description"/>
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/" property="og:url"/>
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/MORBLOXlogo.png" property="og:image"/>
|
||||
<meta content="#4b4b4b" data-react-helmet="true" name="theme-color"/>
|
||||
<meta charset="utf-8">
|
||||
<meta content="Morblox" property="og:title" />
|
||||
<meta content="MORBLOX is a work in progress revival." property="og:description" />
|
||||
<meta content="https://morblox.us" property="og:url" />
|
||||
<meta content="https://morblox.us/img/MORBLOXlogo.png" property="og:image" />
|
||||
<meta content="#4b4b4b" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||
<link rel="apple-touch-icon" href="{{ asset('img/MORBLOX.png') }}" />
|
||||
<link rel="apple-touch-startup-image" href="{{ asset('img/MORBLOXsplash.png') }}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black"/>
|
||||
<link rel="apple-touch-icon" href="MORBLOX.png"/>
|
||||
<link rel="apple-touch-startup-image" href="MORBLOXSplash.png"/>
|
||||
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}">
|
||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
||||
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
|
||||
<script src="{{ asset('js/main.js') }}"></script>
|
||||
</head>
|
||||
<body>
|
||||
<ul></ul>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
@extends('layouts.app')
|
||||
@section('title')
|
||||
<title>Settings - {{ env('APP_NAME') }}</title>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<h1>Settings</h1>
|
||||
<div class="content_special" style="align-content: flex-end; align-items: flex-start;">
|
||||
<div class="content_special" style="flex-wrap: wrap; flex-direction: column; width: 50%;">
|
||||
<h3>Bio</h3>
|
||||
<textarea style="resize: none; width: 100%; height: 75px;" placeholder="Hello!"></textarea>
|
||||
<button class="bluebutton">Save</button>
|
||||
<br>
|
||||
</div>
|
||||
<div class="content_special" style="flex-wrap: wrap; flex-direction: column; width: 50%; text-align: end;">
|
||||
<p>Username: OnlyTwentyCharacters <button class="bluebutton">Edit</button></p>
|
||||
<p>E-Mail: t****@ex********.com <button class="bluebutton">Edit</button></p>
|
||||
<p>Date of Birth: 01/01/01 <button class="bluebutton">Edit</button></p>
|
||||
<p>Password: ******** <button class="bluebutton">Edit</button></p>
|
||||
<p>Date Display Preference: D/M/YY <button class="bluebutton">Edit</button></p>
|
||||
<p>Time Display Preference: 12 Hour <button class="bluebutton">Edit</button></p>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Invite Keys</h3>
|
||||
<p>You can only create 1 invite every week. <br>Manage your keys and key history below.</p>
|
||||
<p><button class="bluebutton"><a href="{{ route('key_index') }}" style="font-weight:normal;color:#fff">Create Invite Key</a></button></p>
|
||||
</div>
|
||||
<br>
|
||||
<div style="flex-wrap: wrap; flex-direction: column;">
|
||||
<h3>DANGER ZONE - These are inactive for now</h3>
|
||||
<p>These buttons can fully delete data. Use with caution!</p>
|
||||
<p><button class="redbutton" disabled>Delete Account</button> <button class="redbutton" disabled>Delete All Places</button> <button
|
||||
class="redbutton" disabled>Delete All Avatar Items</button></p>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -2,18 +2,20 @@
|
|||
<html lang="en-us">
|
||||
<head>
|
||||
<title>Terms of Service - {{ env('APP_NAME') }}</title>
|
||||
<meta content="morblox.us - Terms of Service" property="og:title"/>
|
||||
<meta content="MORBLOX is a work in progress revival." property="og:description"/>
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/" property="og:url"/>
|
||||
<meta content="https://thomasluigi07.github.io/MORBLOX-WEBSITE/MORBLOXlogo.png" property="og:image"/>
|
||||
<meta content="#4b4b4b" data-react-helmet="true" name="theme-color"/>
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black"/>
|
||||
<link rel="apple-touch-icon" href="MORBLOX.png"/>
|
||||
<link rel="apple-touch-startup-image" href="MORBLOXSplash.png"/>
|
||||
<meta charset="utf-8">
|
||||
<meta content="Morblox" property="og:title" />
|
||||
<meta content="MORBLOX is a work in progress revival." property="og:description" />
|
||||
<meta content="https://morblox.us" property="og:url" />
|
||||
<meta content="https://morblox.us/img/MORBLOXlogo.png" property="og:image" />
|
||||
<meta content="#4b4b4b" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||
<link rel="apple-touch-icon" href="{{ asset('img/MORBLOX.png') }}" />
|
||||
<link rel="apple-touch-startup-image" href="{{ asset('img/MORBLOXsplash.png') }}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}">
|
||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
||||
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
|
||||
<script src="{{ asset('js/main.js') }}"></script>
|
||||
</head>
|
||||
<body>
|
||||
<ul></ul>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,53 @@
|
|||
@extends('layouts.app')
|
||||
@section('title')
|
||||
<title>{{ $user->name }} - {{ env('APP_NAME') }}</title>
|
||||
<title>{{ $data['user']->name }} - {{ env('APP_NAME') }}</title>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div id="profiletopcontainer">
|
||||
<h1 id="usernameframe">{{ $user->name }}</h1>
|
||||
<p id="onlinestatus" class="onlinestatus_website">Website</p>
|
||||
</div>
|
||||
<div id="content_special">
|
||||
<div id="profileleftcontainer">
|
||||
<p id="status">"I'm new to MORBLOX!"</p>
|
||||
<img alt="profile image" src="{{ asset('img/reviewpending.png') }}" width="75%">
|
||||
<p id="bio">{{ $user->blurb }}</p>
|
||||
<ul></ul>
|
||||
<div id="stats">
|
||||
<h3>Joined: {{ $user->created_at->format('d/m/Y') }}</h3>
|
||||
<p>(day/month/year)</p>
|
||||
<h3>Place Visits: 0</h3>
|
||||
<div id="profiletopcontainer">
|
||||
<h1 id="usernameframe">{{ $data['user']->name }}</h1>
|
||||
@if (Cache::has('is_online_' . $data['user']->id))
|
||||
<p id="onlinestatus" class="onlinestatus_website">Website</p>
|
||||
@else
|
||||
<p id="onlinestatus" class="onlinestatus_offline">Offline</p>
|
||||
@endif
|
||||
</div>
|
||||
<div id="content_special">
|
||||
<div id="profileleftcontainer">
|
||||
<p id="status">"I'm new to MORBLOX!"</p>
|
||||
<img alt="profile image" src="{{ asset('img/reviewpending.png') }}" width="75%">
|
||||
<p id="bio">{{ $data['user']->blurb }}</p>
|
||||
<ul></ul>
|
||||
<div id="stats">
|
||||
<h3>Joined: {{ $data['user']->created_at->format('d/m/Y') }}</h3>
|
||||
<p>(day/month/year)</p>
|
||||
<h3>Place Visits: 0</h3>
|
||||
</div>
|
||||
<ul></ul>
|
||||
<h2>MORBLOX Badges</h2>
|
||||
<div style="white-space:nowrap">
|
||||
@foreach ($data['badges'] as $badge)
|
||||
@foreach ($data['user']->badges as $user_badge)
|
||||
@if ($badge->id == $user_badge)
|
||||
<div style="width:120px;display:inline-block">
|
||||
<img src="/img/badges/{{ $badge->id }}.png" width="75px" height="75px" />
|
||||
<h3>{{ $badge->title }}</h3>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
@endforeach
|
||||
</div>
|
||||
<ul></ul>
|
||||
<h2>Game Badges</h2>
|
||||
<p>This user has not collected any game badges yet!</p>
|
||||
</div>
|
||||
<div id="profilerightcontainer">
|
||||
<h2>Games</h2>
|
||||
<p>This user hasn't made any games yet!</p>
|
||||
<ul></ul>
|
||||
<h2>Friends</h2>
|
||||
<p>This user hasn't made friends with anyone!</p>
|
||||
</div>
|
||||
<ul></ul>
|
||||
<h2>MORBLOX Badges</h2>
|
||||
<p>This user has not collected any MORBLOX badges yet!</p>
|
||||
<ul></ul>
|
||||
<h2>Game Badges</h2>
|
||||
<p>This user has not collected any game badges yet!</p>
|
||||
</div>
|
||||
<div id="profilerightcontainer">
|
||||
<h2>Games</h2>
|
||||
<p>This user hasn't made any games yet!</p>
|
||||
<ul></ul>
|
||||
<h2>Friends</h2>
|
||||
<p>This user hasn't made friends with anyone!</p>
|
||||
</div>
|
||||
<ul></ul>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -0,0 +1,43 @@
|
|||
@extends('layouts.app')
|
||||
@section('title')
|
||||
<title>Users - {{ env('APP_NAME') }}</title>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
@if (request()->query('q'))
|
||||
<h1 id="usernameframe">Users -
|
||||
{{ DB::table('users')->where('name', 'LIKE', '%' . request()->query('q') . '%')->count() }} found</h1>
|
||||
<a href="{{ route('users') }}" style="color:#2260DD">Clear Search</a>
|
||||
@else
|
||||
<h1 id="usernameframe">Users</h1>
|
||||
@endif
|
||||
<ul></ul>
|
||||
<ul></ul>
|
||||
<form method="GET" action="{{ route('users') }}">
|
||||
<p><input type="text" id="q" name="q" placeholder="Enter a Username..." value="{{ request()->q }}">
|
||||
<button class="greybutton" type="submit">Search</button>
|
||||
</p>
|
||||
</form>
|
||||
<ul></ul>
|
||||
<div id="SearchContainer">
|
||||
@foreach ($users as $user)
|
||||
<div class="ProfileContainerBox" id="ProfileContainerBox1">
|
||||
<div id="ProfileContainerBox1ImageContainer">
|
||||
<a href="{{ route('profile', $user->id) }}"><img alt="Profile Image"
|
||||
src="{{ asset('img/reviewpending.png') }}" width="60px" height="100%"></a>
|
||||
</div>
|
||||
<div id="ProfileContainerBox1TextContainer">
|
||||
<a href="{{ route('profile', $user->id) }}" id="FeedContainerBox1Username">{{ $user->name }}</a>
|
||||
<p>"I'm new to MORBLOX!"</p>
|
||||
@if (Cache::has('is_online_' . $user->id))
|
||||
<p id="onlinestatus" class="onlinestatus_website">Website</p>
|
||||
@else
|
||||
<p id="onlinestatus" class="onlinestatus_offline">Offline</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
<ul></ul>
|
||||
{{ $users->appends($_GET)->links() }}
|
||||
@endsection
|
||||
|
|
@ -23,8 +23,13 @@ Auth::routes();
|
|||
Route::get('/', [App\Http\Controllers\HomeController::class, 'index'])->name('index');
|
||||
Route::get('/privacy', [App\Http\Controllers\PageController::class, 'privacy'])->name('privacy');
|
||||
Route::get('/tos', [App\Http\Controllers\PageController::class, 'tos'])->name('tos');
|
||||
Route::get('/user/{id}', [App\Http\Controllers\PageController::class, 'profile'])->name('profile');
|
||||
|
||||
Route::middleware(['auth'])->group(function () {
|
||||
Route::get('/home', [App\Http\Controllers\HomeController::class, 'home'])->name('home');
|
||||
Route::get('/user/{id}', [App\Http\Controllers\PageController::class, 'profile'])->name('profile');
|
||||
Route::get('/users', [App\Http\Controllers\PageController::class, 'users'])->name('users');
|
||||
Route::post('/users', [App\Http\Controllers\PageController::class, 'users'])->name('users');
|
||||
Route::get('/my/settings', [App\Http\Controllers\PageController::class, 'settings'])->name('settings');
|
||||
Route::get('/my/invites', [App\Http\Controllers\KeyController::class, 'index'])->name('key_index');
|
||||
Route::post('/my/invites', [App\Http\Controllers\KeyController::class, 'create'])->name('key_create');
|
||||
});
|
||||
|
|
|
|||
|
|
@ -13,4 +13,4 @@ const mix = require('laravel-mix');
|
|||
|
||||
mix.js('resources/js/app.js', 'public/js')
|
||||
.vue()
|
||||
.sass('resources/sass/app.scss', 'public/css');
|
||||
.sass('resources/sass/app.scss', 'public/css');
|
||||
Loading…
Reference in New Issue